本文以Linux5.4 32Bit操作系统为例,简要说明LVM的管理操作。
此操作系统版本旧,LVM功能相对于rhel6和rhel7有很多不足之处,可用参数也不够多。
以下操作是在vmware虚拟机中测试。
在生产中建议尽快升级操作系统,或迁移应用到更高的操作系统版本上。
1、扫描新增磁盘
[root@linux54 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@linux54 ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 514048+ 83 Linux
/dev/sda2 65 2610 20450745 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdd doesn't contain a valid partition table
Disk /dev/sde: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sde doesn't contain a valid partition table
2、用新磁盘创建PV
[root@linux54 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
[root@linux54 ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
[root@linux54 ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created
[root@linux54 ~]# pvcreate /dev/sde
Physical volume "/dev/sde" successfully created
3、创建VG
[root@linux54 ~]# vgcreate datavg /dev/sdb /dev/sdc /dev/sdd /dev/sde
Volume group "datavg" successfully created
[root@linux54 ~]#
[root@linux54 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 4 0 0 wz--n- 19.98G 19.98G
rootvg 1 2 0 wz--n- 19.50G 0
[root@linux54 ~]#
[root@linux54 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rootvg lvm2 a- 19.50G 0
/dev/sdb datavg lvm2 a- 5.00G 5.00G
/dev/sdc datavg lvm2 a- 5.00G 5.00G
/dev/sdd datavg lvm2 a- 5.00G 5.00G
/dev/sde datavg lvm2 a- 5.00G 5.00G
[root@linux54 ~]#
4、从VG中删除PV
[root@linux54 ~]# vgreduce datavg /dev/sde
Removed "/dev/sde" from volume group "datavg"
[root@linux54 ~]# vgreduce datavg /dev/sdd
Removed "/dev/sdd" from volume group "datavg"
[root@linux54 ~]#
[root@linux54 ~]#
[root@linux54 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rootvg lvm2 a- 19.50G 0
/dev/sdb datavg lvm2 a- 5.00G 5.00G
/dev/sdc datavg lvm2 a- 5.00G 5.00G
/dev/sdd lvm2 -- 5.00G 5.00G
/dev/sde lvm2 -- 5.00G 5.00G
[root@linux54 ~]#
5、把PV加到VG中
[root@linux54 ~]# vgextend datavg /dev/sdd
Volume group "datavg" successfully extended
[root@linux54 ~]# vgextend datavg /dev/sde
Volume group "datavg" successfully extended
[root@linux54 ~]#
[root@linux54 ~]#
[root@linux54 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rootvg lvm2 a- 19.50G 0
/dev/sdb datavg lvm2 a- 5.00G 5.00G
/dev/sdc datavg lvm2 a- 5.00G 5.00G
/dev/sdd datavg lvm2 a- 5.00G 5.00G
/dev/sde datavg lvm2 a- 5.00G 5.00G
[root@linux54 ~]#
6、创建卷
[root@linux54 ~]# lvcreate -m 1 --corelog -L 4g -n datalv01 datavg /dev/sdb /dev/sdc
Logical volume "datalv01" created
[root@linux54 ~]#
[root@linux54 ~]# pvs --segment -v |grep datalv01
Scanning for physical volume names
/dev/sdb datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_0] 0 linear /dev/sdb:0-1023
/dev/sdc datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_1] 0 linear /dev/sdc:0-1023
[root@linux54 ~]# lvs -a -o +devices |grep datalv01
datalv01 datavg mwi-a- 4.00G 100.00 datalv01_mimage_0(0),datalv01_mimage_1(0)
[datalv01_mimage_0] datavg iwi-ao 4.00G /dev/sdb(0)
[datalv01_mimage_1] datavg iwi-ao 4.00G /dev/sdc(0)
7、扩展卷
[root@linux54 ~]# lvextend -L 6g /dev/datavg/datalv01 /dev/sdd /dev/sde
Extending 2 mirror images.
Extending logical volume datalv01 to 6.00 GB
Logical volume datalv01 successfully resized
[root@linux54 ~]# lvs -a -o +devices |grep datalv01
datalv01 datavg mwi-a- 6.00G 100.00 datalv01_mimage_0(0),datalv01_mimage_1(0)
[datalv01_mimage_0] datavg iwi-ao 6.00G /dev/sdb(0)
[datalv01_mimage_0] datavg iwi-ao 6.00G /dev/sdd(0)
[datalv01_mimage_1] datavg iwi-ao 6.00G /dev/sdc(0)
[datalv01_mimage_1] datavg iwi-ao 6.00G /dev/sde(0)
[root@linux54 ~]# pvs --segment -v |grep datalv01
Scanning for physical volume names
/dev/sdb datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_0] 0 linear /dev/sdb:0-1023
/dev/sdc datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_1] 0 linear /dev/sdc:0-1023
/dev/sdd datavg lvm2 a- 5.00G 3.00G 0 512 [datalv01_mimage_0] 1024 linear /dev/sdd:0-511
/dev/sde datavg lvm2 a- 5.00G 3.00G 0 512 [datalv01_mimage_1] 1024 linear /dev/sde:0-511
[root@linux54 ~]#
8、挂载文件系统
[root@linux54 ~]# mkfs.ext3 /dev/datavg/datalv01
[root@linux54 ~]# mount /dev/datavg/datalv01 /data/
[root@linux54 ~]#
[root@linux54 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-root
17G 2.5G 14G 16% /
/dev/sda1 487M 17M 445M 4% /boot
tmpfs 1014M 0 1014M 0% /dev/shm
/dev/mapper/datavg-datalv01
6.0G 141M 5.5G 3% /data
[root@linux54 ~]#
9、删除镜像
[root@linux54 ~]# lvs -a -o +devices |grep datalv01
datalv01 datavg mwi-a- 6.00G 100.00 datalv01_mimage_0(0),datalv01_mimage_1(0)
[datalv01_mimage_0] datavg iwi-ao 6.00G /dev/sdb(0)
[datalv01_mimage_0] datavg iwi-ao 6.00G /dev/sdd(0)
[datalv01_mimage_1] datavg iwi-ao 6.00G /dev/sdc(0)
[datalv01_mimage_1] datavg iwi-ao 6.00G /dev/sde(0)
删除镜像datalv01_mimage_1
[root@linux54 ~]# lvconvert -b -m 0 /dev/datavg/datalv01 /dev/sdc
No mirror images found using specified PVs. 指定需要删除的目标镜像所在的所有磁盘,否则失败
[root@linux54 ~]# lvconvert -b -m 0 /dev/datavg/datalv01 /dev/sdc /dev/sde 使用-b参数,放置后台,删除镜像可选参数。
Logical volume datalv01 converted.
[root@linux54 ~]#
[root@linux54 ~]#
[root@linux54 ~]# lvs -a -o +devices |grep datalv01
datalv01 datavg -wi-a- 6.00G /dev/sdb(0)
datalv01 datavg -wi-a- 6.00G /dev/sdd(0)
[root@linux54 ~]# pvs --segment -v |grep datalv01
Scanning for physical volume names
/dev/sdb datavg lvm2 a- 5.00G 1020.00M 0 1024 datalv01 0 linear /dev/sdb:0-1023
/dev/sdd datavg lvm2 a- 5.00G 3.00G 0 512 datalv01 1024 linear /dev/sdd:0-511
[root@linux54 ~]#
10、建立镜像,
指定corelog,否则报错。
[root@linux54 ~]# lvconvert -b -m 1 --corelog /dev/datavg/datalv01 /dev/sdc /dev/sde 使用-b参数,放置后台,便于大容量卷做镜像,避免前台长时间等待。
Logical volume datalv01 converted.
[root@linux54 ~]# lvs -a -o +devices |grep datalv01 可以看到同步进度为37.10%
datalv01 datavg mwi-a- 6.00G 37.10 datalv01_mimage_0(0),datalv01_mimage_1(0)
[datalv01_mimage_0] datavg iwi-ao 6.00G /dev/sdb(0)
[datalv01_mimage_0] datavg iwi-ao 6.00G /dev/sdd(0)
[datalv01_mimage_1] datavg iwi-ao 6.00G /dev/sdc(0)
[datalv01_mimage_1] datavg iwi-ao 6.00G /dev/sde(0)
[root@linux54 ~]#
[root@linux54 ~]# pvs --segment -v
Scanning for physical volume names
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/sda2 rootvg lvm2 a- 19.50G 0 0 560 root 0 linear /dev/sda2:0-559
/dev/sda2 rootvg lvm2 a- 19.50G 0 560 64 swap 0 linear /dev/sda2:560-623
/dev/sdb datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_1] 0 linear /dev/sdb:0-1023
/dev/sdb datavg lvm2 a- 5.00G 1020.00M 1024 255 0 free
/dev/sdc datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_0] 0 linear /dev/sdc:0-1023
/dev/sdc datavg lvm2 a- 5.00G 1020.00M 1024 255 0 free
/dev/sdd datavg lvm2 a- 5.00G 3.00G 0 512 [datalv01_mimage_1] 1024 linear /dev/sdd:0-511
/dev/sdd datavg lvm2 a- 5.00G 3.00G 512 767 0 free
/dev/sde datavg lvm2 a- 5.00G 3.00G 0 512 [datalv01_mimage_0] 1024 linear /dev/sde:0-511
/dev/sde datavg lvm2 a- 5.00G 3.00G 512 767 0 free
[root@linux54 ~]#
[root@linux54 ~]# pvs --segment -v |grep datalv01
Scanning for physical volume names
/dev/sdb datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_1] 0 linear /dev/sdb:0-1023
/dev/sdc datavg lvm2 a- 5.00G 1020.00M 0 1024 [datalv01_mimage_0] 0 linear /dev/sdc:0-1023
/dev/sdd datavg lvm2 a- 5.00G 3.00G 0 512 [datalv01_mimage_1] 1024 linear /dev/sdd:0-511
/dev/sde datavg lvm2 a- 5.00G 3.00G 0 512 [datalv01_mimage_0] 1024 linear /dev/sde:0-511
[root@linux54 ~]#
11、也可以使用1个大的PV来镜像一个分布在2个PV上的lv
[root@linux54 ~]# pvs --segment -v |grep datalv01
Scanning for physical volume names
/dev/sdb datavg lvm2 a- 5.00G 0 0 1279 datalv01 0 linear /dev/sdb:0-1278
/dev/sdd datavg lvm2 a- 5.00G 1.99G 0 769 datalv01 1279 linear /dev/sdd:0-768
[root@linux54 ~]#
[root@linux54 ~]#
[root@linux54 ~]# lvs -a -o +devices |grep datalv01
datalv01 datavg -wi-a- 8.00G /dev/sdb(0)
datalv01 datavg -wi-a- 8.00G /dev/sdd(0)
[root@linux54 ~]#
原镜像是用2个pv,现使用一个大pv来镜像这个lv
[root@linux54 ~]# fdisk -l /dev/sdh
Disk /dev/sdh: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdh doesn't contain a valid partition table
[root@linux54 ~]# pvcreate /dev/sdh
Physical volume "/dev/sdh" successfully created
[root@linux54 ~]# vgextend datavg /dev/sdh
Volume group "datavg" successfully extended
[root@linux54 ~]#
[root@linux54 ~]# lvconvert -b -m 1 --corelog /dev/datavg/datalv01 /dev/sdh
Logical volume datalv01 converted.
[root@linux54 ~]# lvs -a -o +devices |grep datalv01
datalv01 datavg mwi-a- 8.00G 50.88 datalv01_mimage_0(0),datalv01_mimage_1(0)
[datalv01_mimage_0] datavg Iwi-ao 8.00G /dev/sdb(0)
[datalv01_mimage_0] datavg Iwi-ao 8.00G /dev/sdd(0)
[datalv01_mimage_1] datavg Iwi-ao 8.00G /dev/sdh(0)
[root@linux54 ~]# pvs --segment -v |grep datalv01
Scanning for physical volume names
/dev/sdb datavg lvm2 a- 5.00G 0 0 1279 [datalv01_mimage_0] 0 linear /dev/sdb:0-1278
/dev/sdd datavg lvm2 a- 5.00G 1.99G 0 769 [datalv01_mimage_0] 1279 linear /dev/sdd:0-768
/dev/sdh datavg lvm2 a- 10.00G 2.00G 0 2048 [datalv01_mimage_1] 0 linear /dev/sdh:0-2047