LVM卷相关操作总结
功能来源:
- lvm2
#安装软件包
yum -y install lvm2
LVM2相关命令
物理卷PV相关命令
常用命令汇总表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qTEqZGhs-1668351825804)(ImageDB/image-20221113192932118.png)]
创建物理卷:pvcreate
命令参数 | 功能 | 备注 |
---|---|---|
-f | 强制创建物理卷,无需交互 | 不建议使用 |
-u | 指定设备的UUID | |
-y | 所有的问题都回答“yes” | |
-Z | 是否利用前4个扇区 | 没特殊要求,一般不指定 |
删除物理卷:pvremove
命令参数 | 功能 | 备注 |
---|---|---|
-d | 调试模式 | |
-f | 强制删除 | 不建议使用 |
-y | 所有的问题都回答“yes” |
扫描物理卷PV:pvscan
命令参数 | 功能 | 备注 |
---|---|---|
-d | 调试模式 | |
-e | 仅显示属于输出卷组的物理卷; | |
-n | 仅显示不属于任何卷组的物理卷; | |
-s | 短格式输出 | |
-u | 显示UUID |
查看物理卷pv:pvdiskplay|pvs
功能:查看pv的详细信息
[root@localhost ~13:45]$pvs
PV VG Fmt Attr PSize PFree
/dev/sdb4 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc1 vg0 lvm2 a-- <5.00g 0
/dev/sdc2 vg0 lvm2 a-- <5.00g 0
/dev/sdc3 vg0 lvm2 a-- <5.00g <4.99g
[root@localhost ~14:41]$pvdisplay
--- Physical volume ---
PV Name /dev/sdb4
VG Name vg0
PV Size <5.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID BUr5Wd-GMwb-zGdb-RHdr-UmYA-nGqd-SijhT1
--- Physical volume ---
PV Name /dev/sdc1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID v4nV3Y-og91-RGxk-svKF-1Bl6-NaFv-n9iHr7
--- Physical volume ---
PV Name /dev/sdc2
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID xa4lgu-LFX2-JFbp-QEn2-k01w-EznX-MsVh8n
--- Physical volume ---
PV Name /dev/sdc3
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1277
Allocated PE 2
PV UUID hm943b-F0nw-sSXo-uohf-8XWT-I075-ptfHaE
迁移物理卷PV:pvmove
功能:将目标PV迁移到其余的pv上,需要保证有pv容量大于需迁移pv,必须同一个卷组
#格式:
pvmove 源pv路径 目标pv路径
VG相关命令
创建VG卷组:vgcreate
命令参数 | 功能 | 备注 |
---|---|---|
-l | 卷组上允许创建的最大逻辑卷数 | |
-p | 卷组中允许添加的最大物理卷数 | |
-s | 卷组上的物理卷的PE大小 |
删除VG卷组:vgremove
命令参数 | 功能 | 备注 |
---|---|---|
-f | 强制删除 |
扩展VG卷组: vgextent vg名称 pv路径
命令参数 | 功能 | 备注 |
---|---|---|
-d | 调试模式; | |
-t | 仅测试,不实际配置 |
缩容VG卷组: vgreduce
命令参数 | 功能 | 备注 |
---|---|---|
-a | 如果命令行中没有指定要删除的物理卷,则删除所有的空物理卷; | |
–removemissing | 删除卷组中丢失的物理卷,使卷组恢复正常状态; |
修改VG属性: vgchange -an 逻辑卷名称
命令参数 | 功能 | 备注 |
---|---|---|
-a | 设置卷组的活动状态 | |
-ay | 设置卷组为活动 | |
-an | 设置卷组为静默 |
LV相关命令
查看逻辑卷
**语法格式:**lvdisplay [参数]
命令参数 | 功能 | 备注 |
---|---|---|
-C | 以列显示输出 | |
-c | 使用冒号分隔输出 |
创建LV逻辑卷:
**语法格式:**lvcreate 参数 逻辑卷
命令参数 | 功能 | 备注 |
---|---|---|
-L | 指定逻辑卷的大小(容量值) | |
-l | 指定逻辑卷的大小(PE个数),还可以直接使用剩余空间的百分比的形式来给定大小,如 -l +100%FRE | |
-n | 指定逻辑卷名称 |
扩容LV逻辑卷:
语法格式: lvextend [参数] 逻辑卷
命令参数 | 功能 | 备注 |
---|---|---|
-L | 指定逻辑卷的大小(容量值) | |
-l | 指定逻辑卷的大小(PE个数),还可以直接使用剩余空间的百分比的形式来给定大小,如 -l +100%FRE |
LVM在线卷替换
思维导图
1.加入新的磁盘格式化后,加入为pv物理卷
2.将对应的PV物理卷加入到对应的VG中
3.暂停业务,使用pvmove命令进行迁移
4.迁移完毕后,使用pvs -o+devices查看源卷Allocated PE是否为0
5.使用命令vgreduce剔除源盘
6.使用pvremove删除pv卷
7.losf查看挂载点是否被占用,可能还在均衡需要等待
8.重新挂载挂载点
实现步骤
#查看需替换的VG与当前所有PV的替换关系,与PE个数;
[root@localhost lvs12:06]$pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID 1bhhcN-2d8P-zjYE-bwSz-sgBA-1FLc-UncOaQ
--- Physical volume ---
PV Name /dev/sdb2
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID 0KKv1N-1KVA-7smh-2Xm7-no0B-Gfxl-jdjuic
--- Physical volume ---
PV Name /dev/sdb3
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1277
Allocated PE 2
PV UUID 6Q7qko-A6rm-F25J-tPYo-yhR0-tTnz-cCbJUU
--- Physical volume ---
PV Name /dev/sdb4
VG Name vg0
PV Size <5.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID BUr5Wd-GMwb-zGdb-RHdr-UmYA-nGqd-SijhT1
#这里发现所有/dev/sdb4是完全没有使用的,那么目标就是迁移/dev/sdb{1,2,3}
#增加新磁盘,然后分区为LVM格式,并创建为物理卷PV
[root@localhost lvs12:10]$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 20G 0 part /
├─sda3 8:3 0 10G 0 part /home
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part
│ └─vg0-lv0 253:0 0 10G 0 lvm /mnt/lvs
├─sdb2 8:18 0 5G 0 part
│ └─vg0-lv0 253:0 0 10G 0 lvm /mnt/lvs
├─sdb3 8:19 0 5G 0 part
│ └─vg0-lv0 253:0 0 10G 0 lvm /mnt/lvs
└─sdb4 8:20 0 5G 0 part
sdc 8:32 0 20G 0 disk
#新增一块盘为sdc,对其进行分区
Device Boot Start End Blocks Id System
/dev/sdc1 2048 10487807 5242880 8e Linux LVM
/dev/sdc2 10487808 20973567 5242880 8e Linux LVM
/dev/sdc3 20973568 31459327 5242880 8e Linux LVM
[root@localhost lvs12:12]$pvcreate /dev/sdc{1,2,3}
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdc2" successfully created.
Physical volume "/dev/sdc3" successfully created.
[root@localhost lvs12:12]$pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg0 lvm2 a-- <5.00g 0
/dev/sdb2 vg0 lvm2 a-- <5.00g 0
/dev/sdb3 vg0 lvm2 a-- <5.00g <4.99g
/dev/sdb4 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc1 lvm2 --- 5.00g 5.00g
/dev/sdc2 lvm2 --- 5.00g 5.00g
/dev/sdc3 lvm2 --- 5.00g 5.00g
#将其加入卷组vg0,如果有业务且数据量比较大,这里需要先暂停一下业务,不然后续进行pvmove时可能因数据量过大导致PE数量不够,如果能保证PE数量足够,可以在进行pvmove时在短暂的暂停业务
[root@localhost lvs12:13]$vgextend vg0 /dev/sdc{1,2,3}
Volume group "vg0" successfully extended
[root@localhost lvs12:18]$vgs
VG #PV #LV #SN Attr VSize VFree
vg0 7 1 0 wz--n- 34.97g 24.97g
[root@localhost lvs12:18]$pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg0 lvm2 a-- <5.00g 0
/dev/sdb2 vg0 lvm2 a-- <5.00g 0
/dev/sdb3 vg0 lvm2 a-- <5.00g <4.99g
/dev/sdb4 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc1 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc2 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc3 vg0 lvm2 a-- <5.00g <5.00g
#进行pvmove迁移
#查看pv状态
[root@localhost lvs12:19]$pvdisplay /dev/sdc1
--- Physical volume ---
PV Name /dev/sdc1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID v4nV3Y-og91-RGxk-svKF-1Bl6-NaFv-n9iHr7
[root@localhost lvs12:19]$pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID 1bhhcN-2d8P-zjYE-bwSz-sgBA-1FLc-UncOaQ
#执行pvmove进行迁移,这里是定向替换,也可以随机分配,后续不带目标即可
[root@localhost lvs12:19]$pvmove /dev/sdb1 /dev/sdc1
/dev/sdb1: Moved: 0.23%
/dev/sdb1: Moved: 100.00%
#再次查看pv状态
[root@localhost lvs12:22]$pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1279
Free PE 1279
Allocated PE 0
PV UUID 1bhhcN-2d8P-zjYE-bwSz-sgBA-1FLc-UncOaQ
[root@localhost lvs12:23]$pvdisplay /dev/sdc1
--- Physical volume ---
PV Name /dev/sdc1
VG Name vg0
PV Size 5.00 GiB / not usable 4.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1279
Free PE 0
Allocated PE 1279
PV UUID v4nV3Y-og91-RGxk-svKF-1Bl6-NaFv-n9iHr7
#已完成迁移,剔除/dev/sdb1
[root@localhost lvs12:25]$vgreduce vg0 /dev/sdb1
Removed "/dev/sdb1" from volume group "vg0"
#删除pv
[root@localhost lvs12:26]$pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost lvs12:26]$pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 5.00g 5.00g
/dev/sdb2 vg0 lvm2 a-- <5.00g 0
/dev/sdb3 vg0 lvm2 a-- <5.00g <4.99g
/dev/sdb4 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc1 vg0 lvm2 a-- <5.00g 0
/dev/sdc2 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc3 vg0 lvm2 a-- <5.00g <5.00g
#该操作重复执行3次,完全剔除掉/dev/sdb{1,2,3}
[root@localhost lvs12:39]$pvs
PV VG Fmt Attr PSize PFree
/dev/sdb4 vg0 lvm2 a-- <5.00g <5.00g
/dev/sdc1 vg0 lvm2 a-- <5.00g 0
/dev/sdc2 vg0 lvm2 a-- <5.00g 0
/dev/sdc3 vg0 lvm2 a-- <5.00g <4.99g
#重新挂载
[root@localhost ~12:47]$lsof /mnt/lvs/
[root@localhost ~12:45]$umount /mnt/lvs/
[root@localhost ~12:45]$mount -a
[root@localhost ~12:45]$df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 10M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda2 20G 5.4G 15G 27% /
/dev/sda3 10G 33M 10G 1% /home
/dev/sda1 1014M 159M 856M 16% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/mapper/vg0-lv0 10G 5.0G 5.1G 50% /mnt/lvs
LVM实现快照功能
mkfs.xfs /dev/vg0/data
mount /dev/vg0/data/ /mnt/data
#为现有逻辑卷创建快照,注意ext4必须使用-p r 实现只读
lvcreate -l 64 -s -n data-snapshot /dev/vg0/data
#挂载快照,xfs注意要使用-o ro实现只读,访止快照被修改
mkdir -p /mnt/snap
mount -o ro,nouuid /dev/vg0/data-snapshot /mnt/snap
#恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot
#删除快照
umount /mnt/snap
lvremove /dev/vg0/data-snapshot
常用额外操作
扫盘命令
linux扫盘
echo "- - -" > /sys/class/scsi_host/host*/scan
查看磁盘流量
iostat -dxc
64 -s -n data-snapshot /dev/vg0/data
#挂载快照,xfs注意要使用-o ro实现只读,访止快照被修改
mkdir -p /mnt/snap
mount -o ro,nouuid /dev/vg0/data-snapshot /mnt/snap
#恢复快照
umount /dev/vg0/data-snapshot
umount /dev/vg0/data
lvconvert --merge /dev/vg0/data-snapshot
#删除快照
umount /mnt/snap
lvremove /dev/vg0/data-snapshot
### 常用额外操作
#### 扫盘命令
##### linux扫盘
```bash
echo "- - -" > /sys/class/scsi_host/host*/scan
查看磁盘流量
iostat -dxc