Sep
22
三、进阶命令
1、扩展VG
首先,需要准备好可用的PV设备:
引用
[root@dc5 ~]# pvcreate /dev/loop[23]
Physical volume "/dev/loop2" successfully created
Physical volume "/dev/loop3" successfully created
Physical volume "/dev/loop2" successfully created
Physical volume "/dev/loop3" successfully created
然后,使用下面的命令扩展VG:
引用
[root@dc5 ~]# vgextend datavg /dev/loop[23]
Volume group "datavg" successfully extended
[root@dc5 ~]# vgdisplay |grep PE
PE Size 8.00 MB
Total PE 186
Alloc PE / Size 62 / 496.00 MB
Free PE / Size 124 / 992.00 MB
Volume group "datavg" successfully extended
[root@dc5 ~]# vgdisplay |grep PE
PE Size 8.00 MB
Total PE 186
Alloc PE / Size 62 / 496.00 MB
Free PE / Size 124 / 992.00 MB
2、扩展LV
从vgdisplay可以获得Free PE或容量大小,我为了后续演示,这里扩展一个PV的空间:
引用
[root@dc5 ~]# lvextend -l +62 /dev/datavg/datav01
Extending logical volume datav01 to 992.00 MB
Logical volume datav01 successfully resized
[root@dc5 ~]# lvdisplay /dev/datavg/datav01|grep -i size
LV Size 992.00 MB
Extending logical volume datav01 to 992.00 MB
Logical volume datav01 successfully resized
[root@dc5 ~]# lvdisplay /dev/datavg/datav01|grep -i size
LV Size 992.00 MB
3、扩展文件系统
文件系统和LV是分开的,可以从下面看到,文件系统还没有扩大:
引用
[root@dc5 ~]# df -h /dev/mapper/datavg-datav01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
481M 11M 446M 3% /media/test
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
481M 11M 446M 3% /media/test
并不是所有的文件系统都能支持扩容,但ext2/3可以。但执行前,建议卸载分区:
引用
[root@dc5 ~]# umount /mnt/test/
[root@dc5 ~]# e2fsck -f /dev/datavg/datav01
[root@dc5 ~]# resize2fs /dev/datavg/datav01
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/datavg/datav01 to 1015808 (1k) blocks.
The filesystem on /dev/datavg/datav01 is now 1015808 blocks long.
[root@dc5 ~]# e2fsck -f /dev/datavg/datav01
[root@dc5 ~]# resize2fs /dev/datavg/datav01
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/datavg/datav01 to 1015808 (1k) blocks.
The filesystem on /dev/datavg/datav01 is now 1015808 blocks long.
重新挂载分区,即可看到大小已经改变:
引用
[root@dc5 ~]# mount /dev/datavg/datav01 /mnt/test/
[root@dc5 ~]# df -h /dev/mapper/datavg-datav01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
961M 11M 911M 2% /media/test
[root@dc5 ~]# df -h /dev/mapper/datavg-datav01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
961M 11M 911M 2% /media/test
(resize2fs只是对ext2/3有用,reiserfs文件系统可使用resize_reiserfs命令,xfs文件系统可使用xfs_growfs命令改变大小,裸设备不用进行这样的操作,但建议重建)
※注意:原来DC 4.1上还有一个e2fsadm命令,可以同时扩展LV及ext2/3的文件系统,其实它就是同时执行lvextend与resize2fs命令。但在DC Server 5.0的LVM2中被取消了。
4、准备
为演示,我们先把/mnt/test填满:
for i in $(seq 1 100); do dd if=/dev/zero of=/mnt/test/file-$i bs=1024k count=10; done
接下来,我们模拟一次PV迁移;
5、PV迁移
可以假设原VG中有一个PV即将出现故障,需要更换。更换PV,必须保证新旧PV在同一个VG里面,并且有足够的剩余空间。
上面的操作,datavg中还有一个空闲的PV,我们就用它:
引用
[root@dc5 test]# pvmove /dev/loop2 /dev/loop3
/dev/loop2: Moved: 100.0%
/dev/loop2: Moved: 100.0%
然后,我们就可以把该PV拿掉:
引用
[root@dc5 test]# vgreduce datavg /dev/loop2
Removed "/dev/loop2" from volume group "datavg"
[root@dc5 test]# vgdisplay |grep -i size
VG Size 992.00 MB
PE Size 8.00 MB
Alloc PE / Size 124 / 992.00 MB
Free PE / Size 0 / 0
Removed "/dev/loop2" from volume group "datavg"
[root@dc5 test]# vgdisplay |grep -i size
VG Size 992.00 MB
PE Size 8.00 MB
Alloc PE / Size 124 / 992.00 MB
Free PE / Size 0 / 0
※这样的数据迁移,可以在线实现。
6、缩小LV
可以看到/dev/loop2不属于任何VG,所以:
引用
[root@dc5 ~]# pvdisplay /dev/loop2 |grep 'VG Name'
VG Name
VG Name
为演示,我们需再次扩展VG、LV和文件系统:
引用
[root@dc5 test]# vgextend datavg /dev/loop2
Volume group "datavg" successfully extended
[root@dc5 test]# pvdisplay /dev/loop2 |grep 'VG Name'
VG Name datavg
[root@dc5 ~]# vgdisplay |grep 'Free'
Free PE / Size 62 / 496.00 MB
[root@dc5 ~]# lvextend -l +62 /dev/datavg/datav01
Extending logical volume datav01 to 1.45 GB
Logical volume datav01 successfully resized
[root@dc5 ~]# lvdisplay /dev/datavg/datav01|grep -i size
LV Size 1.45 GB
[root@dc5 ~]# vgdisplay |grep 'Free'
Free PE / Size 0 / 0
[root@dc5 /]# umount /mnt/test
[root@dc5 /]# e2fsck -f /dev/datavg/datav01
[root@dc5 /]# resize2fs /dev/datavg/datav01
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/datavg/datav01 to 1523712 (1k) blocks.
The filesystem on /dev/datavg/datav01 is now 1523712 blocks long.
[root@dc5 /]# mount /dev/datavg/datav01 /mnt/test/
[root@dc5 /]# df -h /dev/mapper/datavg-datav01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
1.5G 961M 436M 69% /media/test
Volume group "datavg" successfully extended
[root@dc5 test]# pvdisplay /dev/loop2 |grep 'VG Name'
VG Name datavg
[root@dc5 ~]# vgdisplay |grep 'Free'
Free PE / Size 62 / 496.00 MB
[root@dc5 ~]# lvextend -l +62 /dev/datavg/datav01
Extending logical volume datav01 to 1.45 GB
Logical volume datav01 successfully resized
[root@dc5 ~]# lvdisplay /dev/datavg/datav01|grep -i size
LV Size 1.45 GB
[root@dc5 ~]# vgdisplay |grep 'Free'
Free PE / Size 0 / 0
[root@dc5 /]# umount /mnt/test
[root@dc5 /]# e2fsck -f /dev/datavg/datav01
[root@dc5 /]# resize2fs /dev/datavg/datav01
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/datavg/datav01 to 1523712 (1k) blocks.
The filesystem on /dev/datavg/datav01 is now 1523712 blocks long.
[root@dc5 /]# mount /dev/datavg/datav01 /mnt/test/
[root@dc5 /]# df -h /dev/mapper/datavg-datav01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
1.5G 961M 436M 69% /media/test
下面我们将缩小LV,该过程与扩展LV是相反的:首先需要缩小文件系统,然后才能缩小LV,否则会丢失数据。
缩小文件系统,需要知道缩小后卷的块数,可以参考上面的计算:
引用
blocks=1k
62×8M×1024=507904K=507904blocks
1523712-507904=1015808blocks
(我计算的是减去一个磁盘的大小)
62×8M×1024=507904K=507904blocks
1523712-507904=1015808blocks
(我计算的是减去一个磁盘的大小)
操作如下:
引用
[root@dc5 /]# umount /mnt/test/
[root@dc5 /]# e2fsck -f /dev/datavg/datav01
[root@dc5 /]# resize2fs /dev/datavg/datav01 1015808
[root@dc5 /]# lvreduce -l -62 /dev/datavg/datav01
WARNING: Reducing active logical volume to 992.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce datav01? [y/n]: y
Reducing logical volume datav01 to 992.00 MB
Logical volume datav01 successfully resized
[root@dc5 /]# mount /dev/datavg/datav01 /mnt/test/
[root@dc5 /]# df -h /dev/mapper/datavg-datav01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
961M 961M 0 100% /media/test
[root@dc5 /]# e2fsck -f /dev/datavg/datav01
[root@dc5 /]# resize2fs /dev/datavg/datav01 1015808
[root@dc5 /]# lvreduce -l -62 /dev/datavg/datav01
WARNING: Reducing active logical volume to 992.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce datav01? [y/n]: y
Reducing logical volume datav01 to 992.00 MB
Logical volume datav01 successfully resized
[root@dc5 /]# mount /dev/datavg/datav01 /mnt/test/
[root@dc5 /]# df -h /dev/mapper/datavg-datav01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datav01
961M 961M 0 100% /media/test
(对于reiserfs文件系统也必须卸载后,用resize_reiserfs命令实现,但xfs无法缩小)
四、其他命令
1、备份
VG的信息非常重要,故应及时备份相关信息,以防万一:
引用
[root@dc5 /]# vgcfgbackup
Volume group "datavg" successfully backed up.
Volume group "datavg" successfully backed up.
2、禁用及激活
引用
[root@dc5 /]# umount /mnt/test/
[root@dc5 /]# lvchange -an /dev/datavg/datav01
[root@dc5 /]# lvscan
inactive '/dev/datavg/datav01' [992.00 MB] inherit
[root@dc5 /]# lvchange -ay /dev/datavg/datav01
[root@dc5 /]# lvscan
ACTIVE '/dev/datavg/datav01' [992.00 MB] inherit
[root@dc5 /]# lvchange -an /dev/datavg/datav01
[root@dc5 /]# lvscan
inactive '/dev/datavg/datav01' [992.00 MB] inherit
[root@dc5 /]# lvchange -ay /dev/datavg/datav01
[root@dc5 /]# lvscan
ACTIVE '/dev/datavg/datav01' [992.00 MB] inherit
3、搬迁VG
这是说的搬迁,是指迁移卷组到其他机器(Linux):
引用
[root@dc5 /]# umount /mnt/test/
[root@dc5 /]# lvchange -an /dev/datavg/datav01
[root@dc5 /]# vgchange -an datavg
0 logical volume(s) in volume group "datavg" now active
[root@dc5 /]# lvchange -an /dev/datavg/datav01
[root@dc5 /]# vgchange -an datavg
0 logical volume(s) in volume group "datavg" now active
导出:
引用
[root@dc5 /]# vgexport datavg
Volume group "datavg" successfully exported
Volume group "datavg" successfully exported
导入:
引用
[root@dc5 /]# pvscan
PV /dev/loop1 VG datavg lvm2 [496.00 MB / 0 free]
PV /dev/loop3 VG datavg lvm2 [496.00 MB / 0 free]
PV /dev/loop2 VG datavg lvm2 [496.00 MB / 496.00 MB free]
Total: 3 [1.45 GB] / in use: 3 [1.45 GB] / in no VG: 0 [0 ]
[root@dc5 /]# vgimport datavg /dev/loop[123]
Volume group "datavg" successfully imported
PV /dev/loop1 VG datavg lvm2 [496.00 MB / 0 free]
PV /dev/loop3 VG datavg lvm2 [496.00 MB / 0 free]
PV /dev/loop2 VG datavg lvm2 [496.00 MB / 496.00 MB free]
Total: 3 [1.45 GB] / in use: 3 [1.45 GB] / in no VG: 0 [0 ]
[root@dc5 /]# vgimport datavg /dev/loop[123]
Volume group "datavg" successfully imported
4、改名
引用
[root@dc5 /]# vgrename datavg testvg
Volume group "testvg" still has active LVs
[root@dc5 /]# vgchange -an datavg
0 logical volume(s) in volume group "datavg" now active
[root@dc5 /]# vgrename datavg testvg
Volume group "datavg" successfully renamed to "testvg"
[root@dc5 /]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "testvg" using metadata type lvm2
[root@dc5 /]# vgchange -ay testvg
1 logical volume(s) in volume group "testvg" now active
Volume group "testvg" still has active LVs
[root@dc5 /]# vgchange -an datavg
0 logical volume(s) in volume group "datavg" now active
[root@dc5 /]# vgrename datavg testvg
Volume group "datavg" successfully renamed to "testvg"
[root@dc5 /]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "testvg" using metadata type lvm2
[root@dc5 /]# vgchange -ay testvg
1 logical volume(s) in volume group "testvg" now active
LV也可以改名:
引用
[root@dc5 /]# lvrename testvg datav01 datav02
Renamed "datav01" to "datav02" in volume group "testvg"
Renamed "datav01" to "datav02" in volume group "testvg"
※操作LVM的命令很多,也可以输入命令lvm,进入>lvm状态运行。在将其应用到实际环境中前,需多做尝试,以防出现问题,有充足的时间和经验处理。
