LVM Logical Volume Manager (逻辑卷管理)
是Linux环境下对底层磁盘的一种管理机制,处在物理磁盘和文件系统之间。
PV Physical Volume(物理卷)
VG Volume Group(卷组)
LV Logical Volume(逻辑卷)
最小存储单位为:PE
名称 | 最小存储单位 |
---|---|
硬盘 | 扇区(512字节) |
文件系统 | block(1k或4k) |
raid | chunk (512k) mdadm -c |
LVM | PE (16M自定义) |
创建逻辑卷
[root@apenglinux-002 yum.repos.d]# yum install lvm2 -y
[root@apenglinux-002 yum.repos.d]# dd if=/dev/urandom of=/dev/sdb1 bs=512 count=64
[root@apenglinux-002 yum.repos.d]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
- 创建VG
[root@apenglinux-002 yum.repos.d]# vgcreate Vg1 /dev/{sdb1,sdb2}
Volume group "Vg1" successfully created
- 创建LV
[root@apenglinux-002 yum.repos.d]# lvcreate -n LV1 -L 1200M Vg1
Logical volume "LV1" created.
查看系统中的物理卷,卷组,逻辑卷
# pvs # pvscan # pvdisplay
# vgs # vgscan # vgdisplay
# lvs # lvscan # lvdisplay
查看pv创建时PE的大小
[root@apenglinux-002 yum.repos.d]# pvdisplay |grep "PE Size"
PE Size 4.00 MiB
PE Size 4.00 MiB
创建vg时指定PE的大小
[root@apenglinux-002 yum.repos.d]# vgcreate -s 8M vg1 /dev/sdb1 /dev/sdb2
使用逻辑卷
- 格式化,挂载
[root@apenglinux-002 yum.repos.d]# mke2fs -t ext4 /dev/Vg1/LV1
[root@apenglinux-002 yum.repos.d]# mount /dev/Vg1/LV1 /opt/
LVM支持动态扩展
- 查看卷组,逻辑卷的大小
- 逻辑卷扩展
[root@apenglinux-002 dev]# lvextend -L +50M /dev/Vg1/LV1
注意:逻辑卷大小变大了,但是文件大小没有改变
- 文件系统识别逻辑卷大小
[root@apenglinux-002 dev]# resize2fs /dev/Vg1/LV1
VG的扩展
[root@apenglinux-002 dev]# vgextend Vg1 /dev/sdb3
LV缩减
lvm支持在线缩小,但是ext4文件系统不支持在线缩小。btrfs支持在线缩小
btrfs的特性
首先,是扩展性相关的特性,btrfs最重要的设计目标是应对在型机器对文件系统的扩展性要求。其整体性能而不会随着系统容量的增加而降低。
其次是数据一致性相关的特性
第三是和多设备管理相关的特性。btrfs支持创建快照
这些特性都是比较先进的技术,能够显著提高文件系统的时间和空间性能,包括延迟分配,小文件的存储优化,目录索引等。
- 卸载
[root@apenglinux-002 dev]# umount /opt/
- 强制检测,再缩减(文件系统上的缩减)
[root@apenglinux-002 dev]# e2fsck -f /dev/Vg1/LV1
[root@apenglinux-002 dev]# resize2fs /dev/Vg1/LV1 1000M
- 逻辑卷的缩减
[root@apenglinux-002 dev]# lvreduce -L 1000M /dev/Vg1/LV1
WARNING: Reducing active logical volume to 1000.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce Vg1/LV1? [y/n]: y
Size of logical volume Vg1/LV1 changed from 1.27 GiB (326 extents) to 1000.00 MiB (250 extents).
Logical volume Vg1/LV1 successfully resized.
- 挂载,再使用
[root@apenglinux-002 dev]# mount /dev/Vg1/LV1 /opt/
VG缩减
注:缩减时,可以不卸载正在使用中的LV。另外,只能缩减没有被使用的pv。否则会提示以下内容
[root@apenglinux-002 dev]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 Vg1 lvm2 a-- 1020.00m 20.00m //正在使用
/dev/sdb2 Vg1 lvm2 a-- 1020.00m 1020.00m
/dev/sdb3 Vg1 lvm2 a-- 1020.00m 1020.00m
缩小没有使用的pv
[root@apenglinux-002 dev]# vgreduce Vg1 /dev/sdb3
Removed "/dev/sdb3" from volume group "Vg1"
LVM删除
- 卸载
[root@apenglinux-002 dev]# umount /dev/Vg1/LV1
- 删除逻辑卷
[root@apenglinux-002 dev]# lvremove /dev/Vg1/LV1
Do you really want to remove active logical volume Vg1/LV1? [y/n]: y
Logical volume "LV1" successfully removed
- 删除卷组
[root@apenglinux-002 dev]# vgremove Vg1
Volume group "Vg1" successfully removed
- 删除物理卷
[root@apenglinux-002 dev]# pvremove /dev/sdb[1-3]
LVM快照
- 创建一个逻辑卷 LV1,格式化,挂载,写入数据
- 创建一个快照
[root@apenglinux-002 dev]# lvcreate -s -n lv1_sp -L 300M /dev/Vg1/LV1
- 查看lv
[root@apenglinux-002 dev]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV1 Vg1 owi-aos--- 1.00g
lv1_sp Vg1 swi-a-s--- 300.00m LV1 16.50
lv1_sp2 Vg1 swi-a-s--- 300.00m LV1 0.00
- 挂载快照 lv1_sp2,对快照 lv1_sp2 进行热备份
[root@apenglinux-002 dev]# mkdir /tmp/lv1_sp2
[root@apenglinux-002 dev]# mount /dev/Vg1/lv1_sp2 /tmp/lv1_sp2
[root@apenglinux-002 dev]# mkdir /back
[root@apenglinux-002 dev]# cp -r /tmp/lv1_sp2/* /back