LVM是动态调整Linux分区方式的一种机制。逻辑卷的读写效率可能没有普通磁盘高,但是可以动态的管理磁盘空间,是一种更灵活的设备管理方式。逻辑卷的底层可以是磁盘,RAID阵列或SAN磁盘。
逻辑卷的创建过程可以概括为以下四个部分:硬件设备 -> 创建成物理卷pv -> 创建卷组vg -> 创建逻辑卷lv
将普通存储设备创建为物理卷(pv),接下来,将物理上比较分散的各物理卷的存储空间组成一个逻辑整体,叫卷组(vg),最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷(lv),最终,逻辑卷才是用户可以格式化并挂载使用的存储单位。pv是PE的堆放,PE默认为4M。
如何创建LVM
---
1)fdisk 设备名 //创建分区
2)pvcreate 分区名1 分区名2 … //创建pv
pvs:查看pv信息
pvdisplay:查看个pv详尽信息
3)vgcreate vg名 pv名1 pv名2 … //以指定pv为成员创建vg
vgs:查看vg信息
4)创建lv的3种方法
a)lvcreate -L 100M -n lv名 vg名
表示从指定的vg中分割100M创建lv
b)lvcreate -l 20 -n lv名 vg名
表创建大小为20个PE的lv
c)lvcreate -l 100%FREE -n lv名 vg名
表示分配剩余的所有空间给lv
lvdisplay:查看lv信息
说明:创建的lv存放在下面两个地方,任用其中一个地址都可以引用lv。
/dev/vg名/lv名
/dev/mapper/vg名-lv名
5)格式化lv
mkfs.ext4 /dev/mapper/vg名-lv名
6)挂载使用lv
使用mount命令挂载
另外,PE的大小设置:在创建vg的时候使用-s选项可以指定
如,vgcreate vg名 -s 8M pv名1 pv名2
LV调整大小
---
1. 动态扩展LV大小
可以在线扩展文件系统,主要分3种情况:
1)vg的剩余够用的情况
a)lvextend -L +38M /dev/mapper/vg名-lv名 //表增加38M
或 lvextend -L 150M /dev/mapper/vg名-lv名 //增加到150M
b)resize2fs /dev/mapper/lv名 //使扩展的容量生成文件系统,不然文件系统的大小并不扩大
2)vg剩余不够时从pv扩
a)vgextend vg名 可用的pv
b)lvextend -L 200M lv名
c)resize2fs /dev/mapper/vg名-lv名
3)现有pv不够的情况下,要再新建pv
2. 减小LV
减小LV不能在线执行,必需先umount掉lv。
1)dumpe2fs /dev/mapper/vg名-lv名 //查看有多少个组
2)resize2fs /dev/mapper/vg名-lv名 100M //重新设定减小后的文件系统大小为100M
3)e2fsck -f /dev/mapper/vg名-lv名 //查看PE使用情况
4)lvreduce /dev/mapper/vg名-lv名 -L 100M //将LV减小到100M
注意:2)中指定的文件系统大小和4)中指定的逻辑卷大小要一致。如果resize2fs的大小大于物理设备的大小了,这种情况补救的办法就是先加大物理设备大小,然后再重新操作。还有,resize2fs命令是对ext4文件系统的,不适用于xfs文件系统;xfs文件系统要使用xfs_growfs。
3. pv的移动
pvmove命令:将同一个vg里的一个pv上以分配的PE移动到另一个pv上。
(然后再用vgreduce命令可以将没有分配PE的pv从vg组删除。)
如:
pvmove /dev/vdb1 /dev/vdb2
vgreduce vgtest /dev/vdb1
4. LV快照
LV快照存放的位置和LV位置一样。
快照的创建:
lvcreate -s /dev/mapper/vg名-lv名 -L 快照容量 snap名
LV快照也是通过挂载去使用,里面的内容与创建时指定的LV里的内容完全一样。
5. LV的删除
LV删除之前必须先umount
1)lvremove /dev/mapper/vg名-lv名
如果该lv有快照的话,会提示是否删除快照
2)vgremove vg名 pv名
3)pvremove pv名
4)删除存储设备