boot lvm 分区_Linux如何在线对逻辑分区扩容

Linux如何在线对逻辑分区扩容


1.前言

目前绝大部分IaaS平台基本都会选择类似Vmware Vsphere+SAN存算分离的架构,或者选择类似Nutanix、Vmware Vsan或者深信服等存算一体的超融合架构。

不管何种方式,都会遇到已挂载目录磁盘空间不足的情况,部分分区空间使用不够情况。

希望在不影响现有业务的情况下,动态将某个挂载点目录扩容。

如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区),那么就可以轻松进行扩容或缩容。

1.1 环境介绍

条目内容
操作系统Red Hat Enterprise Linux Server release 7.8 (Maipo)
CPU4C
内存16G
硬盘1(原有硬盘)120G
硬盘2(拟添加的硬盘)500G  ,希望挂载在/root下,将原有/root进行动态扩容

2.几个常用命令介绍

2.1 fdisk命令

fdisk一般用来磁盘分区,也可以用来查看磁盘分区情况。

/dev/sda1和/dev/sda2是两个主分区,其中前者是启动分区。

注意/dev/sda2是LVM文件系统,这个是后续动态扩容的关键点。

后续两个就是逻辑卷分别是:

Disk /dev/mapper/rhel-root: 119.2 GB

Disk /dev/mapper/rhel-swap: 8455 MB

[root@test1 ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bcae5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   251412479   124656640   8e  Linux LVM

Disk /dev/mapper/rhel-root: 119.2 GB, 119185342464 bytes, 232783872 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/rhel-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

2.2 lsblk命令

lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,这个命令很好用,因为可以让电脑上的磁盘和分区信息很清晰。

[root@test1 ~]# lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda             8:0    0   120G  0 disk
├─sda1          8:1    0     1G  0 part /boot
└─sda2          8:2    0 118.9G  0 part
  ├─rhel-root 253:0    0   111G  0 lvm  /
  └─rhel-swap 253:1    0   7.9G  0 lvm  [SWAP]
sr0            11:0    1  1024M  0 rom 

这里同样看出系统已有一块硬盘sda,具备两个分区,分别是sda1和sda2。

其中sda2分区有两个逻辑卷,分别就是上述对应的rhel-root和rhel-swap。

注意:这里rhel-root和rhel-swap,两者都被“-”分割开。

rhel是vg,是卷组(Volume Group, VG)

后者root和swap是逻辑卷(Logical Volume, LV)。

正是在逻辑卷上做文件系统。也正是逻辑卷创建之后,其大小可以伸缩。

2.3 df命令

linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。显示指定磁盘文件的可用空间。

df这个命令读取的数据计划都是针对整个文件系统的,主要在super block内信息,因此读取速度非常快速。

[root@test1 ~]# df -Th
Filesystem            Type      Size  Used Avail Use% Mounted on
devtmpfs              devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs                 tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                 tmpfs     3.9G  8.9M  3.9G   1% /run
tmpfs                 tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs       111G   98G   13G  89% /
/dev/sda1             xfs      1014M  137M  878M  14% /boot
tmpfs                 tmpfs     799M     0  799M   0% /run/user/0

注:

1、tmpfs,临时文件系统,是一种基于内存的文件系统。和ramdisk不同,后者是个块设备,前者是个文件系统。

2、df下是不显示swap分区的。所以这里只显示/dev/mapper/rhel-root。

可以看出来rhel-root是xfs文件系统

在RHEL7系统中比较大的变化之一就是在文件系统方面使用XFS替换了Ext4,XFS作为最新RHEL7中默认的文件管理系统,它的日志型文件管理系统的优势在意外宕机后尤其明显,可以快速的恢复可能被破坏的文件,另外经过优化后日志功能对硬盘性能影响非常小,同时最大支持18EB的存储容量满足了几乎所有需求。

3.正式扩容

热添加一块硬盘

在虚拟机管理平台上,热添加一块硬盘。

96a155c973e512971e75e65f808c5b7c.png

【验证】

[root@test1 ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bcae5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   251412479   124656640   8e  Linux LVM

Disk /dev/mapper/rhel-root: 119.2 GB, 119185342464 bytes, 232783872 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rhel-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

从最后可以看出/dev/sdb为536.9 GB容量,这里是没有任何分区的。

查看当前pv、vg以及lv的情况。

[root@test1 ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               rhel
  PV Size               118.88 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              30433
  Free PE               1
  Allocated PE          30432
  PV UUID               6c2uwi-e0el-9kdl-UexC-5Qut-LbCv-eNfrQ0
[root@test1 ~]# vgdisplay
  --- Volume group ---
  VG Name               rhel
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <118.88 GiB
  PE Size               4.00 MiB
  Total PE              30433
  Alloc PE / Size       30432 / <118.88 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               UeFmSr-CGD1-JNp1-XwtC-40xI-SVF6-CezPm6
[root@test1 ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/rhel/swap
  LV Name                swap
  VG Name                rhel
  LV UUID                4k1EM3-EYGL-0BKL-oei6-UNBW-BOBC-259HY4
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-09-20 15:25:16 +0800
  LV Status              available
  # open                 2
  LV Size                <7.88 GiB
  Current LE             2016
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/rhel/root
  LV Name                root
  VG Name                rhel
  LV UUID                wEU6li-W6fr-7TfV-3OJ2-5o0i-mbez-rptO1M
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-09-20 15:25:16 +0800
  LV Status              available
  # open                 1
  LV Size                111.00 GiB
  Current LE             28416
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

关于pv、vg以及lv的关系详见下图:

0b9be3066f0c874f765db5f22e544a69.png
# 创建一个新的pv
[root@test1 ~]# pvcreate /dev/sdb
WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/sdb.
  Physical volume "/dev/sdb" successfully created.

# 验证
[root@test1 ~]# pvscan
  PV /dev/sda2   VG rhel            lvm2 [<118.88 GiB / 4.00 MiB free]
  PV /dev/sdb                       lvm2 [500.00 GiB]
  Total: 2 [<618.88 GiB] / in use: 1 [<118.88 GiB] / in no VG: 1 [500.00 GiB]

注意要选择dev/sdb这个新加的硬盘

扩展vg

[root@test1 ~]# vgextend rhel /dev/sdb
  Volume group "rhel" successfully extended
[root@test1 ~]# pvscan
  PV /dev/sda2   VG rhel            lvm2 [<118.88 GiB / 4.00 MiB free]
  PV /dev/sdb    VG rhel            lvm2 [<500.00 GiB / <500.00 GiB free]
  Total: 2 [<618.88 GiB] / in use: 2 [<618.88 GiB] / in no VG: 0 [0   ]

扩展lv

# 扩展前
[root@test1 ~]# lvscan
  ACTIVE            '/dev/rhel/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/rhel/root' [111.00 GiB] inherit 
# 扩展500G
[root@test1 ~]# lvextend -L +500G /dev/rhel/root
  Size of logical volume rhel/root changed from 111.00 GiB (28416 extents) to 611.00 GiB (156416 extents).
  Logical volume rhel/root successfully resized.
# 验证
[root@test1 ~]# lvscan
  ACTIVE            '/dev/rhel/swap' [<7.88 GiB] inherit
  ACTIVE            '/dev/rhel/root' [611.00 GiB] inherit

这时候通过lsblk查看,/root已经扩展到611G空间

[root@test1 ~]# lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda             8:0    0   120G  0 disk
├─sda1          8:1    0     1G  0 part /boot
└─sda2          8:2    0 118.9G  0 part
  ├─rhel-root 253:0    0   611G  0 lvm  /
  └─rhel-swap 253:1    0   7.9G  0 lvm  [SWAP]
sdb             8:16   0   500G  0 disk
└─rhel-root   253:0    0   611G  0 lvm  /
sr0            11:0    1  1024M  0 rom 

但是通过df命令发现实际并没有正式扩容

[root@test1 ~]# df -Th
Filesystem            Type      Size  Used Avail Use% Mounted on
devtmpfs              devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs                 tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                 tmpfs     3.9G  8.9M  3.9G   1% /run
tmpfs                 tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs       111G   99G   13G  89% /
/dev/sda1             xfs      1014M  137M  878M  14% /boot
tmpfs                 tmpfs     799M     0  799M   0% /run/user/0

这里需要用xfs_growfs对逻辑分区做最后调整

[root@test1 ~]# xfs_growfs /dev/rhel/root
meta-data=/dev/mapper/rhel-root  isize=512    agcount=4, agsize=7274496 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=29097984, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=14208, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 29097984 to 160169984
# 验证,可以看到这里已经是611G空间大小了。
[root@test1 ~]# df -Th
Filesystem            Type      Size  Used Avail Use% Mounted on
devtmpfs              devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs                 tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                 tmpfs     3.9G  8.9M  3.9G   1% /run
tmpfs                 tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs       611G   99G  513G  17% /
/dev/sda1             xfs      1014M  137M  878M  14% /boot
tmpfs                 tmpfs     799M     0  799M   0% /run/user/0

需要注意的是,针对部分老系统,还是用ext3或者ext4的,最后一步逻辑分区调整大小的命令有所区别。

1、针对的是ext2、ext3、ext4文件系统,使用resize2fs 命令。增大和缩小都支持

2、针对的是xfs文件系统,使用的事xfs_growfs 命令,但是只支持增大。

至此,针对使用lvm文件分区前提下的在线扩容使用完毕,对现有业务和应用是没有影响的。

生产环境下不建议,所需要的空间不应该由缩容其他分区得到,而是直接利用IaaS平台的虚拟化手段热添加硬盘。

by 2020年10月11日 张诚

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机磁盘清理软件,清理磁盘空间的7种技巧,电脑装机、安装系统必备

随着技术的进行&#xff0c;硬盘变得越来越大&#xff0c;但它们似乎总是会装满。如果使用的是固态驱动器(SSD)&#xff0c;它的空间比传统的机械硬盘要小得多&#xff0c;那就更是如此。如果你的硬盘空间不足&#xff0c;下面这些技巧可以帮助你清除硬盘上的垃圾&#xff0c;为…

攀爬网怎么取消_桂林旅游学院宿舍条件怎么样

大学就是我们的第二个家&#xff0c;高考填报志愿时&#xff0c;桂林旅游学院宿舍条件怎么样、好不好是广大同学和家长朋友们十分关心的问题&#xff0c;为了方便大家查询&#xff0c;大学生必备网已经为大家整理好了桂林旅游学院宿舍条件和宿舍图片&#xff0c;供大家参考。1、…

微信怎么绑定消息服务器吗,fastweixin: 极其方便的实现微信公众平台服务端开发,2行代码完成服务器绑定,3行代码实现用户消息监听...

fastweixin作者:peiyu快速搭建微信公众平台服务器简单封装了所有与微信服务器交互的消息:文本消息、图片消息、图文消息等等提供了基于springmvc以及基于servlet框架的控制器&#xff0c;集成了微信服务器绑定、监听所有类型消息的方法使用时继承&#xff0c;重写即可&#xff…

炒菜机器人放食材的顺序_如果给你个做饭机器人,你会让它做些什么饭菜?

我曾去过一个从事人工智能软件开发的工程师家里&#xff0c;进她家&#xff0c;从进门开锁、开灯、烧开水、泡咖啡、扫地机、蒸饭、炖汤、洗碗机等基本上实现了智能控制。我笑着说&#xff0c;如果再有个机器人帮你炒菜&#xff0c;你就实现“家务自由”了&#xff01;现在唯独…

服务器中文件设置密码,共享服务器文件权限怎么设置密码

共享服务器文件权限怎么设置密码 内容精选换一换该步骤必须在root用户下执行&#xff0c;若以普通系统用户登录&#xff0c;需要执行su切换到root用户下执行后续操作。ssh-keygen -t rsa过程中需要&#xff1a;(可选)输入保存的文件名&#xff0c;默认为在/root/.ssh/id_rsa目录…

ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序

js定时器怎么写&#xff1f;就是在特定时间执行某段程序复制代码 代码如下:$(function(){var handler function(){}var timer setInterval( handler , 1000);var clear function(){clearInterval(timer);}});我要在定时里面加一个页面跳转&#xff0c;然后在页面load的时候加…

vue读取服务器文件跨域,新版vue-cli模板下本地开发环境使用node服务器跨域的方法...

背景我们都知道浏览器有一个既核心也最基本的安全功能&#xff0c;即同源策略。同源分别是:协议&#xff0c;域名&#xff0c;端口。如果浏览器访问服务器不同源的话&#xff0c;就会访问不到数据。那开发中常常访问的服务器不同源&#xff0c;那么可以借助一个服务器当做中介来…

一个账号可以登录几台机器_干货:一个PubMed账号可以有这么多用处!

且不说撰写一个综述类文章&#xff0c;就连平时的课题设计和汇报&#xff0c;都是动辄几十篇文献以上&#xff0c;那么&#xff0c;该如何管理这么多文献呢&#xff1f;笔者认为&#xff0c;一个PubMed账号足矣。我们都知道&#xff0c;在生物医药领域&#xff0c;PubMed这个文…

投票选举 算法_区块链主流共识算法一文全通

在每种伟大的加密货币背后&#xff0c;都有着一个伟大的共识算法。没有共识算法是完美的&#xff0c;但是它们各有千秋。在加密世界中&#xff0c;需要共识算法来防止重支付。这是迄今为止一些最流行的共识算法的简要介绍&#xff0c;从区块链到DAG以及介于两者之间的所有内容。…

clion 引用dll_用CLion实现本地方法并给java调用

众所周知&#xff0c;PHP是世界上最好的语言&#xff0c;java排第二&#xff0c;因为PHP无所不能。但是在某些场景下java还要调用本地方法来提高执行的效率&#xff0c;故java只能排第二。java提供了jni(Java Native Interface)来实现在java中调用本地方法。本地方法在java中用…

mysql没有创建数据库的权限设置_mysql 创建数据库,用户并给用户设置权限

mysql创建数据create database dataBaseName default charset utf8 collate utf8_general_ci; --创建数据库并设置字符集创建用户create user 用户名% identified by 密码; -- ‘%‘ 是该用户可以在任何机器上登录查询用户select user,host.password from mysql.user;给用户设置…

golang mysql封装_自己封装的golang 操作数据库方法

这个是我用Go写的第一个东东&#xff0c;可能还存在些BUG没有测试到。这里主要是提供一个参考。各位可以改写成自己的风格。在命令行下输入如下两条命令&#xff0c;进行安装go get github.com/male110/SimpleDbgo install github.com/male110/SimpleDbGo语言的数据库操作&…

mysql历史数据备份_Mysql存储过程历史表备份

原文:Mysql存储过程历史表备份应用背景SCADA采集系统需要将实时数据存入历史表。问题1&#xff1a;如何更简单的添加历史数据&#xff1f;2.海量历史数据&#xff0c;比如年数据&#xff0c;如何快速筛选 画曲线&#xff1f;利用mysql的事件&#xff0c;每小时存一次采集数据&a…

如何用js给图片重置宽_如何用js给老婆每天发情话

作者: 加百利真胖原文&#xff1a;https://juejin.cn/events/all一、引言最近家里添了小孩&#xff0c;在家带娃陪产了一些天,深刻体会到老婆带孩子的辛苦。工作的时候不能在家陪她&#xff0c;就想着写个程序&#xff0c;每天固定在固定时间给她发一些情话&#xff0c;好让她在…

世界手机号码格式_世界上手机号码最长的国家是中国,最短的是哪个国家?

现在手机普及率非常之高&#xff0c;基本上人手至少一个手机&#xff0c;那么哪个国家的手机号码最长呢&#xff1f;其实世界上最长的电话号码&#xff0c;是11位数的中国手机号码。为什么手机号码是11位呢&#xff1f;1、号码格式决定我们的手机号可以分为三段&#xff0c;都有…

dockers log查询dockers的文件_Tomcat PUT方法任意文件上传

漏洞背景&#xff1a;tomcat(7.0.0-7.8.1)服务器,开启了HTTP PUT请求方法&#xff0c;web.xml文件中的readonly值设置未false漏洞环境&#xff1a;使用vulhub环境&#xff0c;直接dockers安装安装成功&#xff1a;安装vulhub详见&#xff1a;https://vulhub.org/#/index/漏洞利…

vue替换全部符合’字符串_技术成长日记-Vim实用技巧-4.7查找替换

1. 普通查找/ 向下查找? 向上查找n 查找下一个目标字符串N 查找上一个目标字符串q/ 回溯查找历史&#xff0c;输入该命令后会在状态栏上方显示一个查找历史回溯窗口&#xff0c;如图4.1&#xff1a; 图4.1 回溯查找历史可以选择之前执行过的查找&#xff0c;也可以在最后一行回…

bex5 mysql_bex5 库存系统的增删改查等功能对MYSQL数据库的维护操作 Windows Develop 276万源代码下载- www.pudn.com...

文件名称: bex5下载 收藏√ [5 4 3 2 1 ]开发工具: Java文件大小: 99 KB上传时间: 2017-05-18下载次数: 0提 供 者: 张天详细说明&#xff1a;库存系统的增删改查等功能对MYSQL数据库的维护操作- U5E93 u5B58 u7CFB u7EDF文件列表(点击判断是否您需要的文件&#xff0c;如…

excel导入mysql 截断_解决Excel导入数据库时出现的文本截断问题

问题在把Excel导入到数据库中时&#xff0c;发生文本截断问题&#xff1a;即导入的数据每行只有一部分&#xff0c;原始的Excel数据为&#xff1a;忽略错误导入SQLServer2008过程中&#xff0c;如果源数据和目标数据类型不匹配会导入失败&#xff0c;所以导入数据时会忽略错误&…

mysql表添加完整性约束_SQL语句——完整性约束

1.MySQL支持的完整性约束a.主键约束特点&#xff1a;唯一且非空主键可以由一个字段组成&#xff0c;也可以由多个字段组成如果主键由一个字段组成&#xff0c;既可以添加到列级&#xff0c;也可以添加到表级。如果主键由多个字段组成&#xff0c;则只能添加到表级。(1)在字段的…