Linux 下配置 LVM (逻辑卷管理)

LVM 介绍

LVM 是 Logical Volume Manager (逻辑卷管理) 的简写,它是 Linux 环境下对磁盘分区进行管理的一种机制

LVM - 优点:

LVM 通常用于装备大量磁盘的系统,但它同样适于仅有一、两块硬盘的小系统。

小系统使用 LVM 的益处:

传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变:

1、不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用;

2、当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中;或采用符号连接的方式使用其它分区的空间。

3、如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。

当采用 LVM 时,情况有所不同:

1、硬盘的多个分区由 LVM 统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;

2、文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小 (在卷组容量范围内) 以满足要求;

3、文件系统建立在 LVM 上,可以跨分区,方便使用;

系统使用 LVM 的益处

1、在使用很多硬盘的大系统中,使用 LVM 主要是方便管理、增加了系统的扩展性。

2、在一个有很多不同容量硬盘的大型系统中,对不同的用户的空间分配是一个技巧性的工作,要在用户需求与实际可用空间中寻求平衡。

3、用户/用户组的空间建立在 LVM 上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用 LVM 可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去。

名词解释


1、物理卷 —–PV(Physical Volume)
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。

2、卷组 ——–VG(Volumne Group)
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

3、逻辑卷 —–LV(Logical Volume)
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷要以属于同一个卷组,也可以属于不同的多个卷组。

4、物理区域–PE(Physical Extent)
物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。

安装 LVM

1
2
yum install lvm2 #centos和redhat环境下使用
apt-get install lvm2 #debin和ubuntu环境下使用

LVM 使用

比方我有二块硬盘,其中 /dev/sdb1 是 SSD。sdc 的硬盘分成二个区。/dev/sdb1、/dev/sdc1、/dev/sdc2。

建立 PV

pvcreate 创建 LVM 磁盘(即物理卷)
将 sdb1 和 sdc2 创建成 LVM

1
2
pvcreate /dev/sdb1
pvcreate /dev/sdc2

pvdisplay 显示卷组中的物理卷信息.
pvs 显示卷组简单信息

建立 VG

vgcreate 创建卷组.
将 sdb1 和 sdc2 添加到 VG,VG 起名:vgdisk

1
vgcreate vgdisk /dev/sdb1 /dev/sdc2

vgdisplay 显示 vg 信息
vgs 显示 vg 简单信息

图片中显示的 VG Size 就是整个 VG 的大小,PE Size 就是 PE 的值,默认是 4M。Total PE 是整个 PE 的数量。Free PE 是剩余 PE 的数量。PE 的数值 * 4M 就是整个硬盘的大小。

建立 LV

lvcreate 创建逻辑卷

在 vgdisk 卷组上,创建一个 200M, 名字叫 lv 的逻辑卷,

1
lvcreate -L 200M -n lv vgdisk

lvdisplay 显示 lv 信息
lvs 显示 lv 简单信息

其它运用

将 vgdisk 组的剩余空间全部分配到一个新的逻辑卷,取名 lv2

1
lvcreate -l 这里使用FreePE的值 -n lv2 vgdisk

将逻辑卷 lv 增加 500M 空间

1
lvextend -L +500M /dev/vgdisk/lv

变更逻辑卷大小后,需要同步文件改变

1
resize2fs /dev/vgdisk/lv

删除逻辑卷 lv

1
lvremove /dev/vgdisk/lv

删除卷组 vgdisk

1
vgremove vgdisk

从 vgdisk 卷组里把 sda6 删除

1
vgreduce vgdisk /dev/sda6

如果 VG 的大小不够了,需要添加新的 PV 到 VG. 下面就是将 /dev/sdd1 添加到 vgdisk 中

1
vgextend vgdisk /dev/sdd1

将 LV 逻辑卷的大小,缩小 15G.

1
2
3
e2fsck /dev/vgdisk/lv
resize2fs -f /dev/vgdisk/lv 15g
lvreduce -L 15g /dev/vgdisk/lv

用 SSD 物理盘 /dev/sdb1, 划一块做缓存给 vgdisk 上的 lv 逻辑卷.

1
lvcreate --type cache --cachemode writeback -L 缓存大小 -n 你给缓存起的名字  /dev/vgdisk/lv /dev/sdb1

查看缓存是否建立成功.

1
lvs -a vgdisk  

换系统后 LVS 的挂载

1
2
lvs -o +devices #检查磁盘及文件系统状况
mount | grep '/dev/mapper' #检查缓冲盘

检查完之后就可以在 /dev 目录下找到丢失的 LVS 了。

遇到的问题。

建立缓存后可能会存在重启后 VG 不见的情况,这时需要安装 “thin-provisioning-tools” 工具组件.

1
2
apt-get install thin-provisioning-tools #debian&ubuntu
yum install thin-provisioning-tools #centos&redhat

重启后无法挂载 vgdisk, 使用 vgchange 激活 vgdisk

1
vgchange -a y vgdisk