LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。
通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。
以下介绍几个与LVM相关的术语
物理卷(Physical Volume,PV):是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)
逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。直接使用的设备,可以增大缩减并保持原有数据不变。
物理块(Physical Extent,PE):每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,pe是lvm设备的最小存储单元,lvm是pe的整数倍。
lvm的创建
实验环境设置:
1)fdisk -l ###/查看是vdb中是否存在之前的分区情况,如果有,fdisk /dev/vdb,删除所有的分区
2)umount /mnt ###解除之前的挂载
3)vim /etc/fstab ###删除之前在文件中的操作
1. watch -n 1 'pvs;echo====;vgs;echo====;lvs;df -h /mnt'
监控结果如下:
2.建立分区并改变分区 id 为8e
3.命令创建逻辑卷
pvcreate /dev/vdb1 ##物理分区处理,初始化物理卷pv
vgcreate vg0 /dev/vdb1 ##创建物理卷组vg0
lvcreate -L 20M -n lv0 vg0 ##创建逻辑卷lv0,大小为20M
mkfs.xfs /dev/vg0/lv0 ##格式化逻辑卷lv0,使改逻辑卷可以使用
mount /dev/vg0/lv0 /mnt ##挂载
df -h /mnt ##显示挂载点为/mnt的挂载信息
可以看出逻辑卷lv0成功挂载了
监控结果:
lvm的拉伸
lvm支持热拉伸
针对xfs文件系统的拉伸
1.当vg中的剩余容量足够时
lvextend -L 400M /dev/vg0/lv0 ###将设备拉伸至400M
xfs_growfs /dev/vg0/lv0 ###l拉伸文件系统,不用指定拉伸的大小,系统自动补
2.当vg中的剩余容量不足时,再次建立分区并修改标签为8e
fdisk /dev/vdb ###再次建立分区vdb2并修改标签为8e
pvcreate /dev/vdb2 ###创建物理卷
vgextend vg0 /dev/vdb2 ###将物理卷vdb2放在物理卷组vg0里
lvextend -L 500M /dev/vg0/lv0 ###扩容逻辑卷lv0到500M,但是拉大的一部分没有被格式化
xfs_growfs /dev/vg0/lv0 ###直接拉伸扩容部分的逻辑卷,mkfs.xfs /dev/vg0/lv0是将整个逻辑卷进行拉伸
监控结果:
针对ext文件系统的拉伸和缩减
umount /mnt ##因为之前做xfs实验,所以先解挂
mkfs.ext4 /dev/vg0/lv0 ##改变格式为ext4
mount /dev/vg0/lv0 /mnt ##挂载
mount ##查看当前挂载情况,检查是不是成功修改为ext4格式
拉伸
lvextend -L 550M /dev/vg0/lv0 ##扩容逻辑卷lv0到550M
resize2fs /dev/vg0/lv0 ## 类似于xfs格式的xfs_growfs命令,修改文件系统的大小
缩减
umount /dev/vg0/lv0 ###不支持热缩减,需要先解挂
e2fsck -f /dev/vg0/lv0 ###扫描
resize2fs /dev/vg0/lv0/ 400M ###缩减文件系统至400M
lvreduce -L 400M /dev/vg0/lv0 ###缩减设备
mount /dev/vg0/lv0 /mnt ###挂载
vg的缩减
vgreduce vg0 /dev/vdb2
监控结果:
vg的扩展
vgextend vg0 /dev/vdb2
监控结果:
数据的迁移(移除含有数据的设备)
直接将物理卷/dev/vdb1移出卷组vg0会报如下错误:
当两个设备都被占用时,需先将一个设备中的文件移动到另一个文件
然后将物理卷/dev/vdb1移出卷组vg0
最后移除物理卷。
lvm快照
快照的作用主要用于数据备份与恢复,快照的损坏不影响其他设备的正常工作。
lvcreate -L 10M -n lv0-backup -s /dev/vg0/lv0 ###创建名为lv0-backup的快照
mount /dev/vg0/lv0-backup /mnt ###挂载
dd if=/dev/zero of=/mnt/file bs=1M count=50 ###截取的数据大于10M,会损坏设备
设备自动解除挂载
再次挂载会报错
重新生成
lvremove /dev/vg0/lv0-backup
llvcreate -L 10M -n lv0-backup -s /dev/vg0/lv0
还原:
umount /dev/vg0/lv0-backup ##快照解挂
lvremove /dev/vg0/lv0-backup ##移除快照
umount /mnt ### lv0解挂
lvremove /dev/vg0/lv0 ##移除lv0
vgremove vg0 ##移除vg0
pvremove /dev/vdb1 ##移除设备
监控结果: