在上一篇博文LVM---基本创建和使用中介绍了,LVM的基本配置和使用,这篇博文中我将断续介绍LVM的其它一些操作.
1.VG的扩展
2.VG的缩小
3.LV的扩展
4.LV的缩小
-------------------VG的扩展,VG的扩展相对简单三步操作就可以完成-----------------
步骤:
准备分区,设置新分区的System ID为8e
使用pvcreate构建PV
使用vgextend将新的PV加入到原有VG中
查看当前系统中原有的PV:
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 testVG lvm2 a-- 10.00g 0 /dev/sdc1 testVG lvm2 a-- 10.00g 10.00g
准备分区结果:
[root@localhost ~]# fdisk /dev/sdd Device Boot Start End Blocks Id System /dev/sdd1 1 1306 10490413+ 8e Linux LVM
使用pvcreate 命令创建pv:
[root@localhost ~]# pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created
查看当前系统中的所有PV:
[root@localhost ~]# pvscan PV /dev/sdb1 VG testVG lvm2 [10.00 GiB / 0 free] PV /dev/sdc1 VG testVG lvm2 [10.00 GiB / 10.00 GiB free] PV /dev/sdd1 lvm2 [10.00 GiB] Total: 3 [30.00 GiB] / in use: 2 [20.00 GiB] / in no VG: 1 [10.00 GiB]
可见sdb1和sdc1已经加入到了名为testVG的VG中,
将名为/dev/sdd1的PV加入到名为testVG中:
[root@localhost ~]# vgextend testVG /dev/sdd1 Volume group "testVG" successfully extended
查看VG扩展结果:
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 testVG lvm2 a-- 10.00g 0 /dev/sdc1 testVG lvm2 a-- 10.00g 10.00g /dev/sdd1 testVG lvm2 a-- 10.00g 10.00g
------------VG的缩减--------------:
步骤:
确定要移除的PV
使用pvmove将此PV上的数据转移到其它PV
使用vgreduce:从卷组中将此PV移除
使用pvremove删除物理卷,真正删除pv的物理卷
移除名为/dev/sdb1的pv
pvmove /path/to/pv 将PV上的数据转移到其它PV,如果不指定目标PV则转移到同卷组的其它PV上:
[root@localhost ~]# pvmove /dev/sdb1 /dev/sdb1: Moved: 0.2% /dev/sdb1: Moved: 61.5% /dev/sdb1: Moved: 100.0%
卷组testVG的当前情况:
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 testVG lvm2 a-- 10.00g 10.00g /dev/sdc1 testVG lvm2 a-- 10.00g 0 /dev/sdd1 testVG lvm2 a-- 10.00g 10.00g
从卷组testVG中移除名为/dev/sdv1的PV:
[root@localhost ~]# vgreduce testVG /dev/sdb1 Removed "/dev/sdb1" from volume group "testVG"
再次查看卷组testVG的情况:
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 a-- 10.00g 10.00g /dev/sdc1 testVG lvm2 a-- 10.00g 0 /dev/sdd1 testVG lvm2 a-- 10.00g 10.00g
可以看到vgreduce命令只是把/dev/sdb1从卷组testVG中移除,但并没有删除名为/dev/sdb1的PV
使用pvremove真正删除名为/dev/sdb1的PV:
[root@localhost ~]# pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped
查看pvremove的操作结果,可以看到名为/dev/sdb1的pv被删除了
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdc1 testVG lvm2 a-- 10.00g 0 /dev/sdd1 testVG lvm2 a-- 10.00g 10.00g
注意:pvmove 和 pvremove操作的不同,pvmove是移动数据,而pvremove是删除PV.
VG上的操作并不会影响lv中的数据
----------------LV的扩展----------------------
步骤:
确定当前逻辑卷所在的卷组有足够的空闲空间:
扩展物理边界,即分区的大小
扩展逻辑边界,即文件系统的大小
完成文件系统检测
使用命令pvs查看名为testVG的信息:
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree testVG 2 1 0 wz--n- 20.00g 10.00g
可以看到在testVG的卷组中PV数为2 LV数为1 ,VG总大小为20G ,空闲10G
查看lv的大小:
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert testLV testVG -wi-ao--- 10.00g
使用命令lvextend [-L|-l] [+] SIZE /path/to/lv扩展物理边界的大小:
size前边有+号和没有加号的区别:
有+号:表示扩展了
无+号: 表示扩展到
-L:SIZE 以B ,M ,G 为单位表示扩展的量
-l:以物理扩展为单位,表示扩展了多少个pe
[root@localhost ~]# lvextend -L +5G /dev/testVG/testLV Extending logical volume testLV to 15.00 GiB Logical volume testLV successfully resized
使用lvs查看扩展后的lv的前况:
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert testLV testVG -wi-ao--- 15.00g
可以看到扩展成功,但是为什么我们把lv挂载之后使用df -lh查看,却只是看得到10G而不是15G呢?
[root@localhost ~]# df -lh /backup/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/testVG-testLV 9.9G 151M 9.2G 2% /backup [root@localhost ~]#j ld
是因为我们只扩展了分区的大小,并没有扩展文件系统的大小:
使用命令resize2fs /path/to/device扩展文件系统:
[root@localhost ~]# resize2fs /dev/testVG/testLV resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/testVG/testLV is mounted on /backup; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/testVG/testLV to 3932160 (4k) blocks. The filesystem on /dev/testVG/testLV is now 3932160 blocks long.
再次使用df -lh 查看文区大小,可以看到结果也是15G了
[root@localhost ~]# df -lh /backup/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/testVG-testLV 15G 153M 14G 2% /backup
文件系统检测:
fsck :可以检测所有的支持的文件系统
e2fsck [-t fs_type][-f][-p] /path/to/device 只支持ext系列文件系统
-f :强制检测
-p:检测过程中如果有问题就修复
注意不能检测当前正处于挂载中的设备
[root@localhost ~]# umount /dev/testVG/testLV [root@localhost ~]# e2fsck -f /dev/testVG/testLV e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/testVG/testLV: 12/983040 files (0.0% non-contiguous), 100865/3932160 blocks
--------------------缩减逻辑卷------------------------------(有风险)
步骤:
确定要缩减为多大? 前提是:至少能容纳原有的所有数据
卸载当前正在挂载中的LV并检测文件系统
缩减逻辑边界 resize2fs /path/to/device SIZE
缩减物理边界 lvreduce [-L | -l ] SIZE /path/to/lv
检测文件系统
挂载使用
查看当前处于挂载中的设备:
[root@localhost ~]# mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/mapper/testVG-testLV on /backup type ext4 (rw)
卸载当前正在挂载中的LV并检测文件系统
[root@localhost ~]# umount /dev/mapper/testVG-testLV [root@localhost ~]# e2fsck -f /dev/mapper/testVG-testLV e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/testVG-testLV: 12/983040 files (0.0% non-contiguous), 100865/3932160 block
使用resize2fs使用缩减逻辑边界:
[root@localhost ~]# resize2fs /dev/testVG/testLV 5G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/testVG/testLV to 1310720 (4k) blocks. The filesystem on /dev/testVG/testLV is now 1310720 blocks long.
使用lvs查看LV,发现LV并没有变化,因为我们只缩减了逻辑边界,并没有缩减物理边界
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert testLV testVG -wi-a---- 15.00g
使用lvreduce缩减物理边界:
[root@localhost ~]# lvchange -a n /dev/testVG/testLV [root@localhost ~]# lvreduce -L 5G /dev/testVG/testLV Reducing logical volume testLV to 5.00 GiB Logical volume testLV successfully resized [root@localhost ~]# lvchange -a y /dev/testVG/testLV
再次使用lvs发现lv减小了:
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert testLV testVG -wi-a---- 5.00g
检测文件系统:
[root@localhost ~]# e2fsck -f /dev/testVG/testLV e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/testVG/testLV: 12/327680 files (0.0% non-contiguous), 58463/1310720 blocks
挂载设备并查看大小:
[root@localhost ~]# mount /dev/testVG/testLV /backup/ [root@localhost ~]# df -lh /backup/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/testVG-testLV 5.0G 148M 4.6G 4% /backu
-------------------------完-------------------------------------------------