LVM逻辑卷Logical Volume Manager
标准磁盘管理是由磁盘本身来管理维护,这样的坏处就是配置好后就无法再修改,现实环境中带来了很大的不便,LVM逻辑卷就是解决这样的问题而出现。
- 属于块设备管理级别
- 逻辑卷可以更有效的管理和分配磁盘空间,如增加空间,删除空间,合并空间等
- 可以实现线性模式(默认模式)和交错模式或条带模式(类似Raid0)
LVM的三个主要概念
- PV(Physical Volume)物理卷,把磁盘、磁盘分区、RAID等存储功能的块设备划入到LVM逻辑卷中的功能
- VG(Volume Group)卷组,由物理卷内的一个或多个磁盘组成,可以创建多个VG
- PE(physical extent)用于最小存储单元,也就是标准磁盘的Block大小,默认为4M,最大容量对于内核2.6.x已经可以无限大了
- LV,(Logical Volume)逻辑卷,VG可以理解为磁盘,而LV就是分区了,用于最终的数据存储块设备
三者关系是相互的
2个模式
-
线性模式:当VG中2个或多个磁盘或磁盘分区加入,LV分配使用容量是安装顺序分配,而不是多个磁盘中平均分配,系统默认为线性模式
可以看到创建的2个LV逻辑卷都是一个物理卷下,PE号是顺序0-4606分配 -
条带模式(striped ):多块磁盘或磁盘分区都会分配相应的PE给到LV,好处是提升读写能力,坏处是数据会变得不安全其中一个硬盘损坏都会导致数据丢失,建议Raid可以使用,交错模式类似对象存储Ceph
可以看到PE取得范围在2个物理卷上分别取PE0-255个
参考:http://tech.zhujianwei.net/?p=326
LVM命令:
PV
- 如果添加的是磁盘分区,提前创建好后,不要格式化(因为格式化就代表把分区变成了文件系统,这样是无法把分区加入PV中的)
pvcreate /dev/nvme0n2 /dev/nvme0n3p1 #创建物理卷,磁盘2和磁盘3分区1
#我的实验为虚拟机,正常/dev/sdb,/dev/sdc1
#pvs 查看pv简要信息
#pvdisplay PV详细信息
VG
- 默认PE大小为4M,可以根据需求修改大小,小文件存储可以改PE小点节省空间
- 一个PV只能再一个VG组中,不能加入多个组,2的幂数
常用参数:
VG
- vgextend 扩展vg,就是增加pv
- vgs/vgscan 查看系统里有vg的磁盘
- vgdisplay 显示系统上面的vg状态
- vgremove 删除vg
- vgreduce 在vg里删除pv
vgcreate test2020 /dev/nvme0n2 /dev/nvme0n3p1 #创建vg名为test2020
vgcreate -s 16 test2020 /dev/nvme0n2 /dev/nvme0n3p1 #指定PE大小为16M
LV
- 条带模式是在LV创建实现
常用参数:
LV
- lvs/lvscan 查看系统里有lv的磁盘
- lvdisplay 显示系统上面的lv状态
- lvremove 删除lv,指定绝对路径而不是LV名
- lvreduce 缩减容量,值就是使用容量
- lvextend 修改容量,值就是使用容量
- lvresize 扩展容量或减少容量(+ -)原有的容量增或减值
lvcreate -L 5G -n lv1 test2020 #创建了大小为5G的逻辑卷,卷名为lv1(可以不写为默认)
lvcreate -l 100%VG test2020 #创建VG的所有容量给LV
#-L 大小 M G
#-l PE个数
lvcreate -i 2 -L 6G test2020
#配置条带模式,参数-i 2为指定LV可以从几个VG里的物理卷分配,一般设置为vg里的PV数量
lvs -o lv_name,lv_attr,lv_size,seg_pe_ranges
#可以查看到PE分配的范围
可以看到从2个PV中分配LV所需要的的容量,实现了性能双写入和双读取
LV增加/减少
- 增加/减少分2种情况,格式化前和格式化后(块设备和文件系统),2者是有区别存在的
- 格式化前操作没有区别,常见为格式化后的增加/减少
增加,xfs和格式extx格式都支持。支持在线增加
lvresize -L +10G /dev/test2020/lvol0 #增加10G的容量,可以在挂载下进行
xfs_growfs /dev/test2020/lvol0 #同步文件系统容量,xfs格式文件系统
resize2fs /dev/test2020/lvol0 #同步文件系统容量,extx格式文件系统
减少,不支持xfs格式,用extx格式,不支持在线减少
umount /mnt #卸载使用
e2fsck -f /dev/test2020/lvol0 #检查文件一致性
resize2fs /dev/test2020/lvol0 3G #文件系统减少3G容量
lvresize -L -2G /dev/test2020/lvol0 #减少2G,本来5G,也可以使用
删除操作
- 删除VG可以不先删除LV,前提LV没有被挂载使用
- 删除PV下磁盘或分区前必须删除VG占用的PV
创建顺序:PV-VG-LV
删除顺序:VG-PV