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自定义)

创建逻辑卷

  • 在虚拟机中添加一块硬盘:sdb 或多个块硬盘
  • 分区,分三个分区sdb[1-3]
    LVM
  • 创建PV
[root@apenglinux-002 yum.repos.d]# yum install lvm2 -y

遇到这样的问题
LVM
解决方法

[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

LVM

缩小没有使用的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