LVM: Logical Volume Manager
概念
它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。
允许对卷进行方便操作的抽象层,包括重新设定 文件系统的大小 允许在多个物理设备间重新组织文件系统 • 将设备指定为物理卷 • 用一个或者多个物理卷来创建一个卷组 • 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的 • 在物理卷上创建的逻辑卷是由物理区域(PE)组成 • 可以在逻辑卷上创建文件系统
原理描述
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
通过创建LVM,我们可以更轻松的管理磁盘分区,将若干个不同大小的不同形式的磁盘整合为一个整块的卷组,然后在卷组上随意的创建逻辑卷,既避免了大量不
同规格硬盘的管理难题,也使逻辑卷容量的扩充缩减不再受限于磁盘规格;并且LVM的snapshot(快照)功能给数据的物理备份提供了便捷可靠的方式
要想理解好LVM的原理,我们必须首先要掌握4个基本的逻辑卷概念。
① PE (Physical Extend) 物理拓展,物理磁盘上的每一个分区
② PV (Physical Volume) 物理卷, fdisk工具修改卷标为 8e,形成一个PV
③ VG (Volume Group) 卷组,将多个PV组合起来成为一个大的硬盘
④ LV (Logical Volume) 逻辑卷, 在VG上划分出来的逻辑卷
lvm, lvm2
dm: device mapper 功用:将一个或多个底块设备(包括RAID)组织一个逻辑存储空间; 其边界:可动态扩展或缩减; lv, multipath PE, LE Pysical Extent Logical Extent
管理命令:
pv: pvcreate, pvdisplay, pvs, pvscan, pvremove, pvmove vg: vgcreate, vgdisplay, vgs, vgscan, vgremove, vgextend, vgreduce lv: lvcreate, lvdisplay, lvs, lvresize, lvextend, lvreduce, lvremove
创建PV **pvcreate /dev ** 示例: 创建一个10G vg:
PV:
创建pv:
准备块设备,调整其id为8e; pvcreate [-f] /dev/DEVICE
查看
# pvdisplay [/dev/DEVICE] 查看的是更详细的信息 # pvs
移动pv上的pe到其它pv:
# pvmove
删除pv:
# pvremove
VG:
创建vg: 新增一个vg,并指明其包含哪个或哪些pv实现;
# vgcreate VGNAME /dev/PV1...
-L 指明容量
-n 起个名
删除vg:
# vgremove VGNAME... 缩减vg: 通过从vg中移除pv实现 注意:计划移除的pv不能包含已经存储数据的pe;如果有需要先使用pvmove移动到同vg内其它pv上; pvmove /dev/SOME_PV vgreduce VG_NAME /dev/some_PV
扩展vg: 向vg中添加更多的pv实现
vgextend VG_NAME /dev/some_PV...
LV: Logical Volume
查看
lvs lvdisplay
创建lv:
lvcreate -L 指明的大小 -n 名字 VG_name LogicalVolume{Name|Path}] VG_NAME -L指明大小 设备路径: (1) /dev/VGNAME/LVNAME (2) /dev/mapper/VGNAME-LVNAME 实际路径:/dev/dm-# 注意:lv的大小必须为pe的整数倍
移除lv:
lvremove LV_PATH
扩展lv:
存储设备有:物理边界 文件系统有:逻辑边界
扩展:先扩展物理边界,而后拉伸逻辑边界
lvextend, lvresize
resize2fs
如何扩展lv:
1、先确定目标大小:要确保此lv所在vg中有足够的空闲可用; 2G --> 4G 4G +2G 2、扩展物理边界 lvextend -L [+]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME 3、拉伸逻辑边界 resize2fs /dev/VGNAME/LVNAME
缩减lv:
注意: 1、缩减要离线! 2、先缩减文件系统大小,再缩减lv的大小; 过程: 1、先确定缩减后的目标大小:要确保缩减后的大小能够容纳现在的所有数据; 2、卸载逻辑卷,并强制做文件系统一致性检查; e2fsck -f /dev/VGNAME/LVNAME 3、缩减逻辑边界 resize2fs /dev/VGNAME/LVNAME #[bBsSkKmMgGtTpPeE] 4、缩减物理边界 lvreduce -L [-]#[bBsSkKmMgGtTpPeE] /dev/VGNAME/LVNAME
快照卷:
访问原卷上数据另一个路径,备份工具可以通过此路径完成数据备份; 快照卷自身仅是为备份工具提供一个时间点一致的访问路径; 备份开始之前创建快照卷,完成之后即可删除之;快照卷的生命周期; 如何保证通过快照所访问到的数据的时间点一致? 通过把那些要发生改变的位于原卷上的数据自动复制一份至快照卷进行的,因此,快照卷上的数据如果有效,则必须能完成存储原卷即将发生改变的所有的数据的原有版本。 创建快照卷: (1) 快照卷要与原卷在同一卷组中,因此创建快照卷无须指定卷组; (2) 快照卷大小要精心设定;另外,快照卷应该是只读的; 创建命令: lvcreate -L SIZE -n Name -p r -s /dev/VGNAME/LVNAME
练习:
1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
2、新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录
3、扩展testlv至7G,要求archlinux用户的文件不能丢失
4、收缩testlv至3G,要求archlinux用户的文件不能丢失
5、对testlv创建快照,并尝试基于快照备份数据,验正快照的功能
一 、
1、用fdisk分区 把 /dev/sdd 和/dev/sde 各分出10G
如果不同步就用 partprobe 命令同步一下!
2、创建两个pv并组成一个vg
vgcreate testvg -s 16M /dev/sdd1 /dev/sde1
3、创建testlv 并挂载
lvcreate -L 5G -n testlv testvg mkdir /users mkfs.ext4 /dev/testvg/testlv mount /dev/testvg/testlv /users
二、
1、
useradd archlinux -d /users/archlinux
三、扩展testlv、
1、扩展扩展物理边界
lvextend -L +2G /dev/testvg/testlv
2、扩展逻辑边界
resize2fs /dev/testvg/testlv
四、收缩testlv
1、卸载逻辑卷,并强制做文件系统一致性检查
umount /dev/testvg/testlv e2fsck -f /dev/testvg/testlv
2、缩减
resize2fs /dev/testvg/testlv 3G lvreduce -L 3G /dev/testvg/testlv
3、挂载查看
mount /dev/testvg/testlv /users/
五、创建快照
[root@localhost ~ ]# lvcreate -L 2G -n kuaizhao -p r -s /dev/testvg/testlv Logical volume "kuaizhao" created.
将快照挂载
mount -r /dev/testvg/kuaizhao /mnt/kuaizhao [root@localhost /mnt/kuaizhao ]# ll 总用量 20 drwx------. 6 archlinux archlinux 4096 9月 2 22:07 archlinux
删除/users中的archlinux
[root@localhost /mnt/kuaizhao ]# cd /users [root@localhost /users ]# ls archlinux lost+found [root@localhost /users ]# rm -rf archlinux [root@localhost /users ]# ls lost+found [root@localhost /users ]# ls /mnt/kuaizhao/ archlinux lost+found [root@localhost /users ]# cp -arp /mnt/kuaizhao/archlinux . [root@localhost /users ]# ls archlinux lost+found
原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/43318