一:LVM简介
1哪些是LVM?
LVM是LogicalVolumeManager(逻辑卷管理)的缩写
2为何使用LVM?
LVM一般用于武器大量c盘的系统,但它同样易于仅有一、两块硬碟的小系统。
-----小系统使用LVM的好处:传统的文件系统:一个文件系统对应一个分区,直观linux分区方案 lvm,但不易改变,不同的分区相对独立,无相互联系,各分区空间经常借助不平衡,空间不能充分借助。当一个文件系统/分区已满时linux分区方案 lvm,难以对其扩展,只能采用重新分区/构建文件系统,十分麻烦,或把分区中的数据移到另一个更大的分区中;或采用符号联接的方法使用其它分区的空间。假如要把硬碟上的多个分区合并在一起使用,只能采用再分区的方法,这个过程须要数据的备份与恢复。采用LVM:光驱的多个分区由LVM统一为卷组管理,可以便捷的加入或移走分区以扩大或减少卷组的可用容量,充分借助硬碟空间;文件系统构建在逻辑卷上,而逻辑卷可依照须要改变大小(在卷组容量范围内)以满足要求,可以跨分区。
----大系统使用LVM的好处:在使用好多硬碟的大系统中,使用LVM主要是便捷管理、增加了系统的扩充性。用户/用户组的空间构建在LVM上,可以随时按要求减小,或依据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬碟时,毋须把用户的数据从原硬碟迁移到新硬碟,而只须把新的分区加入卷组并扩展逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬碟转移到新硬碟空间中去。
3优点:可随时按需求改变逻辑卷大小,充分借助硬碟空间。
二、LVM原理
传统文件系统,例如这个盘只有300G,这么完善在这个300G里面的文件系统最多只能用到300G,并且有了LVM这个功能后,我们构建文件系统的盘就不是构建在数学盘上,而是构建在一个叫LV逻辑卷里面,这个卷是一个逻辑概念不是数学盘,空间可能小于一个数学盘,也可能大于一个数学盘。并且这个LV逻辑卷的空间可以扩充和缩小,这样就给下层的文件系统提供了更好的支持。
须要理解的几个概念:
PV(PhysicalVolume):数学空间的意思,虽然就是指一个分区(如/dev/sdb1)或则是一个盘(如/dev/sdb)
VG(VolumeGroup):相当于一个Pool,由多个PV组成的pool
LV(LogicalVolume):拿来构建一个文件系统的空间,这个空间来始于VG,大小随便,可以扩充。(例如/dev/mapper/rhel-root这个目录也许是一个文件系统挂载点,这个点就是承载在一个LV上,这个文件系统的大小就是这个LV的大小。)
原理图:
三、LVM实验
1)创建PVredhat linux 9.0,VG,LV的指令
创建物理卷
pvcreate /dev/vdb1 ##创建物理卷/dev/vdb1
创建物理卷组
vgcreate vg0 /dev/vdb1 ##创建物理卷组vg0
创建逻辑卷
lvcreate -L 300M -n lv0 vg0 ##在vg0卷组上创建名为lv0,大小为300M的逻辑卷
(-L指定创建的LV大小,-l指定创建的LV的PE数量,-n是LV的名字)
2)创建一个逻辑卷(操作展示)
[root@localhost ~]# fdisk /dev/vda
将分区类型改为LVM:
[root@localhost ~]# pvcreate /dev/vdb1 ##创建物理卷
[root@localhost ~]# vgcreate -s 8M vg0 /dev/vdb1 ##创建物理卷组vg0,PE为8M
[root@localhost ~]# lvcreate -L 300M -n lv0 vg0 ##在卷组vg0上创建名为lv0,大小为300M的逻辑卷
[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 ##格式化逻辑卷并改系统格式为xfs
[root@localhost ~]# mount /dev/vg0/lv0 /mnt ##挂载【linux下的文件系统需要被挂载后才能使用】
[root@localhost ~]# df
监控命令:watch-n1‘pvs;echo===;vgs;echo===;lvs;echo===;df-h/mnt/’
3)扩容:
a)xfs系统中的扩容:
情况一:vg足够扩充
[root@localhost ~]# lvextend -L 500M /dev/vg0/lv0 ##扩展逻辑卷空间到500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0 ##扩展文件系统
情况二:vg不够拉伸,得先扩大设备再扩大系统
扩大设备:
[root@localhost ~]# pvcreate /dev/vdb2 ##创建物理卷/dev/vdb2
[root@localhost ~]# vgextend vg0 /dev/vdb2 ##将新的物理卷vdb2添加到现有的卷组vg0
扩充逻辑卷
[root@localhost ~]# lvextend -L 1500M /dev/vg0/lv0 ##增加逻辑卷空间到1500M
[root@localhost ~]# xfs_growfs /dev/vg0/lv0
b)ext4系统的扩容
[root@localhost ~]# umount /mnt ##先卸载
[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 ##格式化逻辑卷 ,并改系统为ext4
[root@localhost ~]# mount /dev/vg0/lv0 /mnt/ ##挂载
[root@localhost ~]# lvextend -L 1800M /dev/vg0/lv0 ##增加逻辑卷空间
Extending logical volume lv0 to 1.76 GiB Logical volume lv0 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv0 ##更新逻辑卷信息
4)削减逻辑卷空间
[root@localhost ~]# umount /mnt ##先卸载
[root@localhost ~]# e2fsck -f /dev/vg0/lv0 ##扫描逻辑卷上的空余空间
[root@localhost ~]# resize2fs /dev/vg0/lv0 1000M ##设备文件减少到1000M
[root@localhost ~]# lvreduce -L 1000M /dev/vg0/lv0 ##将逻辑卷减少到1000M
[root@localhost ~]# mount /dev/vg0/lv0 /mnt ##挂载
5)削减vg:(迁移到闲置设备)
[root@localhost ~]# pvmove /dev/vdb1 /dev/vdb2 ##将vdb1的空间数据转移到vdb2
/dev/vdb1: Moved: 88.0%
/dev/vdb1: Moved: 100.0% ##转移数据成功
[root@localhost ~]# vgreduce vg0 /dev/vdb1 ##将/dev/vdb1分区从vg0卷组中移除
Removed "/dev/vdb1" from volume group "vg0"
[root@localhost ~]# pvremove /dev/vdb1 ##把/dev/vdb1分区从系统中删除
Labels on physical volume "/dev/vdb1" successfully wiped
注意:将vdb1的空间数据转移到vdb2时鸟哥的linux私房菜,要确保vdb2的足够的空间能将vdb1的数据转移,否则须要先将vdb1削减。
6)LVM快照创建
[root@localhost ~]# touch /mnt/file{1..5}
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##建立一个50M的快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt ##挂载快照
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
[root@localhost mnt]# rm -fr * ##删除所有文件
[root@localhost mnt]# cd
[root@localhost ~]# umount /mnt
[root@localhost ~]# lvremove /dev/vg0/lv0backup ##删除快照
[root@localhost ~]# lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0 ##重建快照
[root@localhost ~]# mount /dev/vg0/lv0backup /mnt ##挂载快照
[root@localhost ~]# ls /mnt ##又可以看到之前建立的文件
推论:LVM的快照可以将某一时刻的信息记录到快照区中,为此,可以借助这一特性对数据做完全备份。
7)删掉设备
[root@localhost ~]# umount /mnt ##卸载
[root@localhost ~]# df
[root@localhost ~]# lvremove /dev/vg0/lv0backup ##删除快照
[root@localhost ~]# lvremove /dev/vg0/lv0 ##删除逻辑卷
[root@localhost ~]# vgremove vg0 ##删除物理卷组
[root@localhost ~]# pvremove /dev/vdb{1..2} ##删除物理卷
总结
LVM其实挺好用,然而由于在硬件上使用纯软件形式进行管理,所以删掉除数据恢复愈加困难,LVM削减分区大小风险较大,并不推荐使用LVM对c盘分区进行管理。