LVM卷相关操作总结(部分)

本文详细介绍了Linux Logical Volume Manager (LVM) 的使用,包括如何创建和删除物理卷(PV)、卷组(VG)及逻辑卷(LV),物理卷迁移,卷组扩展和缩减,以及LVM快照的创建、挂载、恢复和删除。内容涵盖 pvcreate、pvremove、pvmove、vgcreate、vgremove、lvcreate、lvextend、lvremove 等关键命令及其参数,以及在线卷替换的完整步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值