Myluzh Blog

Strive to become a dream architect.

LVM逻辑卷基础-扩容逻辑卷

发布时间: 2022-12-8 文章作者: myluzh 分类名称: Linux


扩容VG卷组
查看/dev/sdb剩余容量(可以看到start起始位置跟end结束位置)
[root@localhost /]# parted /dev/sdb
(parted) print free
2049MB  53.7GB  51.6GB           Free SpaceNumber  Start   End     Size    Type     File system  Flags
        0.00B   511B    512B             Free Space
 1      512B    1025MB  1025MB  primary               lvm
 2      1025MB  2049MB  1024MB  primary               lvm
        2049MB  53.7GB  51.6GB           Free Space


创建一个2GB的分区(后面的2049mb跟4079mb是结束位置)
(parted) mkpart primary 2049MB 4097MB

变成逻辑卷并退出退出
(parted)set 3 lvm on
(parted)quit

从物理分区变成物理卷
[root@localhost /]# pvcreate /dev/sdb3 
  Devices file /dev/sdb is excluded by filter: device is partitioned.
  Physical volume "/dev/sdb3" successfully created.

把物理卷添加到database卷组
[root@localhost /]# vgextend database /dev/sdb3
  Devices file /dev/sdb is excluded by filter: device is partitioned.
  Volume group "database" successfully extended

查看下database卷,可以看到物理卷pv变成了3个,物理卷组vg大小也变成了3.8G,剩余PE也变大了。
[root@localhost /]# vgdisplay database
Act PV                3
VG Size               <3.80 GiB
Free  PE / Size       161 / <2.52 GiB

缩减VG卷组
需要先把卷组分区内的数据移走,pvscan 查看数据在哪个分区
[root@localhost /]# pvscan 
  Devices file /dev/sdb is excluded by filter: device is partitioned.
  PV /dev/sdb1   VG database        lvm2 [976.00 MiB / 464.00 MiB free]
  PV /dev/sdb2   VG database        lvm2 [960.00 MiB / 160.00 MiB free]
  PV /dev/sdb3   VG database        lvm2 [<1.91 GiB / <1.91 GiB free]

/dev/sdb2上的数据移走
[root@localhost /]# pvmove /dev/sdb2
/dev/sdb2: Moved: 100.00%

再次查看database内/dev/sdb2是否被使用
[root@localhost /]# pvscan
PV /dev/sdb2   VG database        lvm2 [960.00 MiB / 960.00 MiB free]

缩小VG,把database卷组内的/dev/sdb2分区移走
[root@localhost /]# vgreduce database /dev/sdb2
  Removed "/dev/sdb2" from volume group "database"

查看vg,可以看到database卷组内的PV从3个变成2个了。
[root@localhost /]# vgdisplay
 Cur PV                2

扩容LV逻辑卷
查看逻辑卷大小
[root@localhost /]# lvscan
 ACTIVE            '/dev/database/mysql' [512.00 MiB] inherit
 ACTIVE            '/dev/database/web' [800.00 MiB] inherit

lvextend使用-L参数调整逻辑卷大小 -l是指定PE -L是指定大小,两种写法都一种直接写扩容后大小,第二种写+多少大小。
[root@localhost /]# lvextend -L 800m /dev/database/mysql 
[root@localhost /]# lvextend -L +200m /dev/database/web 

使用df -h 可以查看容量并没有变成800MB,因为逻辑卷扩容需要经过2个层面,第一步是扩逻辑卷,第二步是扩容文件系统。
[root@localhost /]# df -h | grep mysql
/dev/mapper/database-mysql  507M   30M  478M   6% /mnt/mysq

通过df -T查看文件系统格式
[root@localhost /]# df -T
Filesystem                 Type     1K-blocks    Used Available Use% Mounted on
/dev/mapper/database-mysql xfs         813728   32336    781392   4% /mnt/mysql
/dev/mapper/database-web   ext4        788320  409636    321340  57% /mnt/web

如果文件系统是xfs格式,使用xfs_growfs+挂载点路径扩容
[root@localhost /]# xfs_growfs /mnt/mysql/
data blocks changed from 131072 to 204800
如果文件系统是ext4格式,使用resize2fs扩容
[root@localhost /]# resize2fs /dev/database/web
The filesystem on /dev/database/web is now 258048 (4k) blocks long.

查看扩容后的大小
[root@localhost /]# df -h /dev/database/web /dev/database/mysql 
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/database-web    978M  402M  516M  44% /mnt/web
/dev/mapper/database-mysql  795M   32M  764M   4% /mnt/mysql

是不是觉得很麻烦?要先扩容逻辑卷又要扩文件系统。
其实只要在使用lvextend加一个-r(--resizefs)选项,会自动扩容文件系统。例如:
[root@localhost /]# lvextend -r -l +20 /dev/database/web
The filesystem on /dev/mapper/database-web is now 339968 (4k) blocks long.
使用df-h可以查看文件系统大小已经改变
[root@localhost /]# df -h /dev/database/web
/dev/mapper/database-web  1.3G  403M  818M  33% /mnt/web


标签: lvm 逻辑卷 lv扩容

发表评论