LVM涉及到了PV、VG、LV三个层次,每一个层次都有对应的命令来管理centos
管理PV的工具:pvs, pvscan, pvdisplay, pvcreate, pvremove, pvmovebash
经常使用命令:app
♦ pvs [OPTIONS] 显示简要的PV信息ide
♦ pvdisplay [OPTIONS] 显示详细的PV信息工具
♦ pvcreate /dev/DEVICE 建立PV性能
♦ pvmove /dev/DEVICE 删除PVui
♦ pvscan [OPTIONS] 检查PVcentos7
管理VG工具:vgs, vgscan, vgdisplay, vgcreate, vgremove, vgreduce, vgextend, vgchangecode
经常使用命令:rem
♦ vgs [OPTIONS] 显示简要的VG信息
♦ vgdisplay [OPTIONS] 显示详细的VG信息
♦ vgcreate [-s #[kKmMgGtTpPeE]] VG_NAME /dev/DEVICE [/dev/DEVICE...] 建立VG
♦ vgextend VG_NAME /dev/DEVICE [/dev/DEVICE...] 扩展VG
♦ vgreduce VG_NAME /dev/DEVICE [/dev/DEVICE...] 缩减VG
♦ vgremove VG_NAME 删除VG
♦ vgscan [OPTIONS] 检查VG
♦ vgchange [OPTIONS] 修改VG属性
管理LV工具:lvs, lvscan, lvdisplay, lvcreate, lvremove, lvreduce, lvextemd, kvresize
经常使用命令:
♦ lvs [OPTIONS] 查看简单的LV信息
♦ lvdisplay [OPTIONS] 查看详细的LV信息
♦ lvcreate -L SIZE[mMgGtT] -n LV_NAME VG_NAME 建立LV
lvcreate -l 100% FREE -n LV_NAME VG_NAME :指定LV大小为全部可用的VG空间,-l指定PE数量
♦ lvremove /dev/VG_NAME/LV_NAME 删除LV
♦ lvextend -L [+]SIZE[mMgGtT] /dev/VG_NAME/LV_NAME 扩展LV
配合同步ext系列文件系统的命令才生效:resize2fs /dev/VG_NAME/LV_NAME
或同步xfs文件系统的命令才生效:xfs_growfs /dev/VG_NAME/LV_NAME
lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
说明:执行一条命令后同时完成扩展LV和同步文件系统的功能,使用全部的VG空间扩展LV。SIZE表示为扩展到LV 的总容量大小,+SIZE表示在用来基础上增长的容量大小。
♦ lvreduce -L [-]SIZE[mMgGtT] /dev/VG_NAME/LV_NAME 缩减LV
说明:缩减LV时,注意步骤,先执行umount命令卸载,而后进行文件系统检查,再重置文件系统大小,最后才执行lvreduce命令
♦ lvscan [OPTIONS] 检查LV
前提准备好分区
#建立PV [root@centos82s ~]$pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@centos82s ~]$pvcreate /dev/sdb2 Physical volume "/dev/sdb2" successfully created. #查看 [root@centos82s ~]$pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- 5.00g 5.00g /dev/sdb2 lvm2 --- 5.00g 5.00g #建立VG [root@centos82s ~]$vgcreate -s 16M myvg /dev/sdb{1,2} Volume group "myvg" successfully created [root@centos82s ~]$vgs VG #PV #LV #SN Attr VSize VFree myvg 2 0 0 wz--n- <9.97g <9.97g #建立LV [root@centos82s ~]$lvcreate -n mylv -L 2G myvg Logical volume "mylv" created. [root@centos82s ~]$lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 2.00g #查看LV路径 [root@centos82s ~]$lvdisplay --- Logical volume --- LV Path /dev/myvg/mylv LV Name mylv #建立ext4系统 [root@centos82s ~]$mkfs.ext4 /dev/myvg/mylv #建立挂载点 [root@centos82s ~]$mkdir /mnt/mylvs #开机自动挂载文件系统,在/etc/fstab中添加下面内容 /dev/myvg/mylv /mnt/mylvs ext4 defaults 0 0 #手动挂载该文件系统 [root@centos82s ~]$mount -a
#添加硬盘,建立PV [root@centos82s ~]$pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created. #扩展VG [root@centos82s ~]$vgextend myvg /dev/sdb3 Volume group "myvg" successfully extended #扩展LV [root@centos82s ~]$lvextend -r -L +3G /dev/myvg/mylv Size of logical volume myvg/mylv changed from 2.00 GiB (128 extents) to 5.00 GiB (320 extents). Logical volume myvg/mylv successfully resized. resize2fs 1.45.4 (23-Sep-2019) Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt/mylvs; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/mapper/myvg-mylv is now 1310720 (4k) blocks long. #若是没有-r参数,需执行 [root@centos82s ~]$resize2fs /dev/myvg/mylv
#卸载目录挂载点 [root@centos82s ~]$umount /mnt/mylvs/ #检测文件系统 [root@centos82s ~]$fsck -f /dev/myvg/mylv #把文件系统空间大小缩减到10G [root@centos82s ~]$resize2fs /dev/myvg/mylv #缩减LV [root@centos82s ~]$lvreduce -L 10G /dev/myvg/mylv #查看 [root@centos82s ~]$lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-a----- 10.00g
#建立PV [root@centos82s ~]$pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. #建立vg [root@centos82s ~]$vgcreate myvg /dev/sdb1 Volume group "myvg" successfully created #把/dev/sdb硬盘上已分配的PE移动到其它LVM上 [root@centos82s ~]$pvmove /dev/sdb1 /dev/sdb1: Moved: 4.30% /dev/sdb1: Moved: 100.00% #把sdb1移动到其它lvm上 [root@centos82s ~]$pvmove /dev/sdb1 /dev/sdb1: Moved: 11.72% /dev/sdb1: Moved: 100.00% #把/dev/sdb1从VG移除 [root@centos82s ~]$vgreduce myvg /dev/sdb1 Removed "/dev/sdb1" from volume group "myvg"
把centos6上的LVM迁移到centos7上,centos6LVM总容量20G,centos7LVM总容量40G
#查看centos6磁盘使用状况 [root@centos610 ~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 97.7G 0 part / ├─sda3 8:3 0 48.8G 0 part /data ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 2G 0 part [SWAP] sdb 8:16 0 20G 0 disk [root@centos610 ~]#pvs #建立PV [root@centos610 ~]#pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created [root@centos610 ~]#pvs PV VG Fmt Attr PSize PFree /dev/sdb lvm2 ---- 20.00g 20.00g #建立VG [root@centos610 ~]#vgcreate centos6myvg /dev/sdb Volume group "centos6myvg" successfully created [root@centos610 ~]#vgs VG #PV #LV #SN Attr VSize VFree centos6myvg 1 0 0 wz--n- 20.00g 20.00g #建立LV [root@centos610 ~]#lvcreate -l 100%FREE -n mylv centos6myvg Logical volume "mylv" created. [root@centos610 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv centos6myvg -wi-a----- 20.00g #修改LV名称 [root@centos610 ~]#lvrename /dev/centos6myvg/mylv /dev/centos6myvg/centos6mylv Renamed "mylv" to "centos6mylv" in volume group "centos6myvg" [root@centos610 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert centos6mylv centos6myvg -wi-a----- 20.00g #卸载 [root@centos610 ~]#umount /data/mylvm/ #禁用VG [root@centos610 ~]#vgchange -an centos6myvg 0 logical volume(s) in volume group "centos6myvg" now active [root@centos610 ~]#lvscan inactive '/dev/centos6myvg/centos6mylv' [20.00 GiB] inherit #导出VG后硬盘拆下来安装在centos7主机上 [root@centos7s ~]#lsblk #导入原VG [root@centos7s ~]#vgimport centos6myvg [root@centos7s ~]#vgdisplay [root@centos7s ~]#lvdisplay #激活原VG [root@centos7s ~]#vgchange -ay centos6myvg [root@centos7s ~]#lvdisplay #建立挂载点 [root@centos7s ~]#mkdir /data/centos6lvm #挂载 [root@centos7s ~]#mount /dev/centos6myvg/centos6mylv /data/centos6mylvm
注意:因为快照区与本来的LV共用不少PE的区块,所以快照与被快照的LV必须在同一个VG中。系统恢复时候的文件数量不能高于快照区的实际容量。快照实际上也是一个逻辑卷,因此建立快照前,要保证现有LVM系统中VG有足够的剩余空间。
建议:如非须要,不要使用快照,快照越多,对原LV和快照LV的IO写性能损失巨大,急剧降低。
#建立快照 [root@centos610 ~]#lvcreate -n centos6mylv-snapshot -s -L 1G -p r /dev/centos6myvg/centos6mylv Logical volume "centos6mylv-snapshot" created. #查看,-p r表示快照卷是只读 [root@centos610 ~]#lvdisplay --- Logical volume --- LV Path /dev/centos6myvg/centos6mylv-snapshot LV Name centos6mylv-snapshot VG Name centos6myvg LV UUID mj0Hqr-d468-W24p-edVH-GBZH-PIpE-bYa1hp LV Write Access read only LV Creation host, time centos610, 2020-08-18 01:58:35 +0800 LV snapshot status active destination for centos6mylv #建立挂载点 [root@centos610 ~]#mkdir /data/centos6snapshot #挂载快照卷 [root@centos610 ~]#mount /dev/centos6myvg/centos6mylv-snapshot /data/centos6snapshot/ mount: block device /dev/mapper/centos6myvg-centos6mylv--snapshot is write-protected, mounting read-only #卸载原始卷和快照卷 [root@centos610 ~]#umount /data/mylvm/ [root@centos610 ~]#umount /data/centos6snapshot/ #恢复快照卷在挂载使用 [root@centos610 ~]#lvconvert --merge /dev/centos6myvg/centos6mylv-snapshot Merging of volume centos6mylv-snapshot started. centos6mylv: Merged: 100.0% Merge of snapshot into logical volume centos6mylv has finished. Logical volume "centos6mylv-snapshot" successfully removed [root@centos610 ~]#mount /dev/centos6myvg/centos6mylv /data/mylvm/