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 | yum install lvm2 #centos和redhat环境下使用 |
LVM 使用
比方我有二块硬盘,其中 /dev/sdb1 是 SSD。sdc 的硬盘分成二个区。/dev/sdb1、/dev/sdc1、/dev/sdc2。
建立 PV
pvcreate 创建 LVM 磁盘(即物理卷)
将 sdb1 和 sdc2 创建成 LVM
1 | pvcreate /dev/sdb1 |
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 | e2fsck /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 | lvs -o +devices #检查磁盘及文件系统状况 |
检查完之后就可以在 /dev
目录下找到丢失的 LVS 了。
遇到的问题。
建立缓存后可能会存在重启后 VG 不见的情况,这时需要安装 “thin-provisioning-tools” 工具组件.
1 | apt-get install thin-provisioning-tools #debian&ubuntu |
重启后无法挂载 vgdisk, 使用 vgchange 激活 vgdisk
1 | vgchange -a y vgdisk |