前言
本文将列举最常用的LVM磁盘管理案例,分2个案例4种场景,涵盖最常用的使用案例,希望能帮助读者能很好理解LVM的原理、操作及使用时的注意点。
案例1:目前硬盘的空间不足,原硬盘的根分区是LVM分区。想通过加新硬盘的方式,扩展原来根分区的大小。即把新加硬盘的空间加入到原来的根分区。
Step1:在加硬盘之前先查看硬盘资源情况:
执行lsblk可以看到vda2是物理分区,vda2使用了LVM逻辑分区,分成了两个分区,一个swap,一个是根分区。
[root@zcwyou ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 240G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 39G 0 part
├─centos-root 253:0 0 35.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
执行df -TH可以看到根分区使用了xfs文件系统,物理分区vda1挂载到/boot,同样使用xfs文件系统
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 38G 940M 37G 3% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda1 xfs 1.1G 150M 914M 15% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0
执行parted -l可以看到磁盘vda的分区情况
[root@zcwyou ~]# parted -l
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 258GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 42.9GB 41.9GB primary lvm
Step2:加新硬盘后查看硬盘资源情况:
执行lsblk可以看到新硬盘vdb
[root@zcwyou ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 240G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 39G 0 part
├─centos-root 253:0 0 35.1G 0 lvm /
└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
vdb 252:16 0 60G 0 disk
执行parted -l可以看到新硬盘vdb
[root@zcwyou ~]# parted -l
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
使用parted查看新硬盘连接情况
Step3:使用fdisk给新硬盘分区(可选):
[root@zcwyou ~]# fdisk /dev/vdb
Command (m for help): n 输入n表示建立新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p 输入p表示建立主分区,MBR主分区最多4个
Partition number (1-4, default 1): 直接回车使用默认即可,表示从最可用低值开始
First sector (2048-125829119, default 2048): 扇区开始的位置,直接回车使用默认即可
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-125829119, default 125829119): 扇区结束的位置,直接回车使用剩下的所有空间。
Using default value 125829119
Partition 1 of type Linux and of size 60 GiB is set
Command (m for help): t 输入t表示修改分区的系统ID
Selected partition 1
Hex code (type L to list all codes): 8e输入8e表示修改分区的系统ID为LVM
Changed type of partition ‘Linux’ to ‘Linux LVM’
Command (m for help): w 输入w表示保存分区信息
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
使用fdisk给新硬盘分区,界面如下:
Step4:加入原PV组:
扫描pv,看到PV组的成员以及VG组的名字
[root@zcwyou ~]# pvscan
PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]
扫描vg,看到vg组名字为centos
[root@zcwyou ~]# vgscan
Reading volume groups from cache.
Found volume group “centos” using metadata type lvm2
扫描当前系统中的vg组情况
图中的组名为cl,根据自己的环境中的实际情况进行调整。
如果没有执行Step3,则把整个vdb加入PV组:
[root@zcwyou ~]# pvcreate /dev/vdb
如果执行了Step3,则把vdb1加入PV组
[root@zcwyou ~]# pvcreate /dev/vdb1
因为刚刚分区了,有了vdb1,所以可以把该分区加入到pv组中。
检查
[root@zcwyou ~]# pvscan
PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]
PV /dev/vdb1 lvm2 [<60.00 GiB]
扫描pv情况
查询pv的信息
[root@zcwyou ~]# pvdisplay
如果要删除物理卷,执行命令:
[root@zcwyou ~]# pvremove /dev/vdb1
Step5:加入原VG组:
加入VG组
[root@zcwyou ~]# vgextend centos /dev/vdb1
把vdb1加入原VG组
注意,图中的VG组为cl
,根据自己的实际情况自行调整
检查,留意空间是否变大了:
[root@zcwyou ~]# vgdisplay
留意空闲的空间
Free PE / Size XXXX / XXX GiB
检查vg组是否更新
从VG组删除:
[root@zcwyou ~]# vgreduce centos /dev/vdb1
Step6:扩展LV卷
查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:
[root@zcwyou ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g
使用lvs命令查询当前lv信息
以扩展LV卷为例:
变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:
- 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
- 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
- 把vg组剩下所有可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root
Step7:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:
如果原来的文件系统是EXT2/3/4,执行以下指令
[root@zcwyou ~]# e2fsck -f /dev/centos/root
对于正在挂载的文件系统,则显示以下错误:
使用e2fsck检查磁盘错误
如果原来的文件系统是xfs,执行以下指令
[root@zcwyou ~]# xfs_ncheck /dev/centos/root
Step8:扩展文件系统大小:
如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息
[root@zcwyou ~]# resize2fs -f /dev/centos/root
如果原来的文件系统是xfs,执行以下指令更新文件系统信息
[root@zcwyou ~]# xfs_growfs /dev/centos/root
更新xfs文件系统信息
检查逻辑卷状态
[root@zcwyou ~]# lvdisplay
检查逻辑卷最新状态
可以看到lv的容量已经更新了。
Step9:检查文件系统大小:
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 103G 941M 102G 1% /
检查调整过后的文件系统大小
可以看到根分区的大小已经成功扩展!
接下来我们看看其他案例
案例2:目前硬盘的空间充足,但原分区划分不合理。比如根分区小,不够用。/home分区过大过剩。
前提条件:
根分区和/home分区都是LVM。并且/home不能是XFS文件系统,因为XFS不支持缩小空间。
系统可以重启
场景1:假设/home的文件系统是XFS或者/home里的资料已经做好了安全备份,这时可以直接把/home分区删除。注意,此方法需要重启系统。
Step1:修改fstab配置
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 54G 939M 53G 2% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-home xfs 199G 34M 199G 1% /home
/dev/vda1 xfs 1.1G 150M 915M 15% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0
编辑/etc/fstab,
[root@zcwyou ~]# vi /etc/fstab
删除关于/home的行,
如果不会vi命令,执行以下命令一键删除关于/home的行
sed -i '/home/d' /etc/fstab
然后重启系统
[root@zcwyou ~]# reboot
Step2:删除LV
重启后:
[root@localhost ~]# df -TH /home/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 54G 940M 53G 2% /
可以看到现在的/目录是挂在/centos-root上的,跟/目录属于同一分区。
扫描LV
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-a—– 20.00g
root centos -wi-ao—- 50.00g
swap centos -wi-ao—- <3.88g
记下VL名称与VG名称。
删除对应的LV
[root@zcwyou ~]# lvremove /dev/centos/home
删除LV后,应该可以得到空闲的VG空间
[root@zcwyou ~]# vgdisplay
Free PE / Size 42271 / 165.12 GiB
Step3:扩展LV卷
查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g
以扩展LV卷为例:
变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:
- 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
- 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
- 把vg组可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root
Step4:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:
如果原来的文件系统是EXT2/3/4,执行以下指令
[root@zcwyou ~]# e2fsck -f /dev/centos/root
如果原来的文件系统是xfs,执行以下指令
[root@zcwyou ~]# xfs_ncheck /dev/centos/root
Step5:扩展文件系统大小:
如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息
[root@zcwyou ~]# resize2fs -f /dev/centos/root
如果原来的文件系统是xfs,执行以下指令更新文件系统信息
[root@zcwyou ~]# xfs_growfs /dev/centos/root
检查逻辑卷状态
[root@zcwyou ~]# lvdisplay
Step6:检查文件系统大小:
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 253G 940M 252G 1% /
场景2:假设/home的文件系统是EXT2/3/4,原理是把/home的分区缩小,/分区增大。/home和/分区必须是LVM分区。
Step1:前期准备
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 43G 939M 42G 3% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-home ext4 207G 63M 196G 1% /home
/dev/vda1 xfs 496M 141M 355M 29% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0
可以看到根目录/的空间很小,/home的空间是207G,并且/home的文件系统是ext系列的,支持LVM缩小。如果是XFS,则不支持缩小。
修改fstab配置
[root@zcwyou ~]# vi /etc/fstab
注释掉/home的行,即前面加#号
#/dev/mapper/centos-home /home ext4 defaults 1 2
重启系统
[root@zcwyou ~]# reboot
Step2:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:
查看LVM的基本情况:
[root@zcwyou ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao—- <195.53g
root centos -wi-ao—- 40.00g
swap centos -wi-ao—- 4.00g
记下LV名称和VG名称
[root@zcwyou ~]# e2fsck -f /dev/centos/home
Step3:缩小文件系统大小和LV大小:
缩小文件系统,更新文件系统信息
[root@zcwyou ~]# resize2fs /dev/centos/home 10g
减少LV大小
[root@zcwyou ~]# lvresize -L 10g /dev/centos/home
编辑/etc/fstab
[root@zcwyou ~]# vi /etc/fstab
把刚刚加入的#号删除
/dev/mapper/centos-home /home ext4 defaults 1 2
重新挂载文件系统
[root@zcwyou ~]# mount -a
检查调整后的文件系统,看到9.9G
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 43G 939M 42G 3% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 8.9M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda1 xfs 496M 141M 355M 29% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0
/dev/mapper/centos-home ext4 11G 38M 9.9G 1% /home
Step4:扩展LV卷
查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:
[root@zcwyou ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g
[root@zcwyou ~]# vgdisplay
看到空闲空间
Free PE / Size 47495 / <185.53 GiB
以扩展LV卷为例:
变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:
- 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
- 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
- 把vg组可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root
Step5:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:
如果原来的文件系统是EXT2/3/4,执行以下指令
[root@zcwyou ~]# e2fsck -f /dev/centos/root
如果原来的文件系统是xfs,执行以下指令
[root@zcwyou ~]# xfs_ncheck /dev/centos/root
Step6:扩展文件系统大小:
如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息
[root@zcwyou ~]# resize2fs -f /dev/centos/root
如果原来的文件系统是xfs,执行以下指令更新文件系统信息
[root@zcwyou ~]# xfs_growfs /dev/centos/root
检查逻辑卷状态
[root@zcwyou ~]# vgdisplay
看到空闲空间为0
Free PE / Size 0 / 0
Step7:检查文件系统大小:
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 243G 940M 242G 1% /
场景3:针对KVM虚拟机,把虚拟机关机后对原硬盘扩充,重新开机后,进入系统使用fdisk创建一个新分区
Step1:创建新分区:
[root@zcwyou ~]# fdisk /dev/vda
Command (m for help): n 输入n表示建立新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p 输入p表示建立主分区,MBR主分区最多4个
Partition number (3-4, default 3): 直接回车使用默认即可,表示从最可用低值开始
First sector (2048-125829119, default 20480): 扇区开始的位置,直接回车使用默认即可
Using default value 20480
Last sector, +sectors or +size{K,M,G} (2048-125829119, default 125829119): 扇区结束的位置,直接回车使用剩下的所有空间。
Using default value 125829119
Partition 3 of type Linux and of size 60 GiB is set
Command (m for help): t 输入t表示修改分区的系统ID
Selected partition 1
Hex code (type L to list all codes): 8e输入8e表示修改分区的系统ID为LVM
Changed type of partition ‘Linux’ to ‘Linux LVM’
Command (m for help): w 输入w表示保存分区信息
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Step2:查看新分区:
[root@zcwyou ~]# lsblk
应该可以看到类似于标识为vda3的新分区,并且没有挂载点。
Step3:加入原PV组:
扫描pv,看到PV组的成员以及VG组的名字
[root@zcwyou ~]# pvscan
PV /dev/vda2 VG centos lvm2 [<39.00 GiB / 4.00 MiB free]
扫描vg,看到vg组名字为centos
[root@zcwyou ~]# vgscan
Reading volume groups from cache.
Found volume group “centos” using metadata type lvm2
把vdb3加入PV组
[root@zcwyou ~]# pvcreate /dev/vdb1
检查
[root@zcwyou ~]# pvscan
PV /dev/vdb3 lvm2 [<60.00 GiB]
[root@zcwyou ~]# pvdisplay
如果要删除物理卷,执行命令:
[root@zcwyou ~]# pvremove /dev/vdb3
Step4:加入原VG组:
加入VG组
[root@zcwyou ~]# vgextend centos /dev/vdb1
检查:
[root@zcwyou ~]# vgdisplay
留意空闲的空间
Free PE / Size XXXX / XXX GiB
从VG组删除:
[root@zcwyou ~]# vgreduce centos /dev/vdb1
Step5:扩展LV卷
查看原有的LV名字,可以看到一个LV名为root,一个LV名为swap:
[root@zcwyou ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao—- <35.12g
swap centos -wi-ao—- <3.88g
以扩展LV卷为例:
变更LV逻辑卷的大小三种方式,只需要采用其中一种就行:
- 定义逻辑卷最终大小:
[root@zcwyou ~]# lvresize -L 40g /dev/centos/root
- 定义逻辑卷要添加减少的大小:
[root@zcwyou ~]# lvresize -L +20g /dev/centos/root
- 把vg组剩下所有可用的空间加入LV卷
[root@zcwyou ~]# lvresize -l +100%FREE /dev/centos/root
Step6:检查磁盘错误,前提是必须先卸载文件系统,对于根分区,不能在线执行此命令:
如果原来的文件系统是EXT2/3/4,执行以下指令
[root@zcwyou ~]# e2fsck -f /dev/centos/root
如果原来的文件系统是xfs,执行以下指令
[root@zcwyou ~]# xfs_ncheck /dev/centos/root
Step7:扩展文件系统大小:
如果原来的文件系统是EXT2/3/4,执行以下指令更新文件系统信息
[root@zcwyou ~]# resize2fs -f /dev/centos/root
如果原来的文件系统是xfs,执行以下指令更新文件系统信息
[root@zcwyou ~]# xfs_growfs /dev/centos/root
检查逻辑卷状态
[root@zcwyou ~]# lvdisplay
Step8:检查文件系统大小:
[root@zcwyou ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 103G 941M 102G 1% /
总结:善于利用LVM,能灵活按需求调整分区大小,但请注意,调整分区有大风险,调整前请备好数据。
评论前必须登录!
注册