LVM磁盘空间管理
什么是LVM,以及PV,PE,VG,LV等重要概念。
LVM(Logical Volume Manager)本文译作逻辑卷管理器,是一种磁盘管理技术,为操作系统提供了更为灵活的管理存储设备方式。LVM提供了如下组件:
物理卷(Physical Volume, PV),LVM 的基础存储设备,通常是物理硬盘、分区或 LVM 兼容的设备。
卷组(Volume Group, VG),由一个或多个物理卷组成的逻辑存储池。卷组中的空间可以被多个逻辑卷共享。
逻辑卷(Logical Volume, LV),从卷组中划分出的存储单元,类似于传统分区。逻辑卷可以格式化为文件系统并用于存储数据。
物理扩展(Physical Extent, PE),物理卷被划分为多个相同大小的块,这些块就是物理扩展。每个物理扩展的大小通常是 4 MB 或 8 MB,具体取决于系统配置。
LVM技术流程:磁盘划分为PV —> PV组成了VG,同时设置了PE大小 —> 从VG中划分出LV,其结构示意图如下所示:
LVM的原理
将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。 通过这种方式可以只关心封装后的逻辑卷,而不去关注物理底层。这样做的优点有2个:
- 文件系统可以跨磁盘存储,存储空间利用率得到提升;
- 可以灵活对系统磁盘扩容,逻辑层面上不受任何影响;
文件系统创建流程:
设置待操作磁盘或分区的SYSTEM ID(8e)
1
2
3
4fdisk [disk/partion] # 磁盘或分区的绝对路径
输入n -> p -> [可用分区号] -> [first sector] -> [last sector]或+size{K,M,G} ->
t -> 83(Linux)或8e(Linux LVM) -> w # m查看帮助 n+p选择主分区创建PV
1
2
3pvcreate [disk/partion] # 磁盘或分区的绝对路径
pvs # 查看物理卷创建VG
1
2
3
4
5
6
7#使用默认的PE大小
vgcreate [vg_name] [pv_name] # pv_name表示磁盘或分区的绝对路径
#指定PE大小
vgcreate -s [size] [new_vg] [pv_name] # size可以是m,g,t
vgs # 查看卷组创建LV
1
2
3
4#指定lv大小
lvcreate -n [lv_name] -L [lv_size] [vg_name] # lv_size为lv的实际大小
lvs # 查看逻辑卷格式化LV
1
2
3mkfs -t [ext3/ext4/xfs] /dev/[vg_name]/[lv_name]
或者
mkfs.[ext3/ext4/xfs] /dev/[vg_name]/[lv_name]文件系统挂载到系统目录
1
2
3
4mount [lv_name] [absolute_path]
#查看文件系统
df -hT # h人性化的大小,m,g,t;T文件系统类型(xfs...)
以下为上述流程的示意图:
LVM扩容
在LVM扩容之前,需要思考的是:VG剩余大小是否大于所需大小,本文首先给出满足此条件下的情形:
追加LV
1
2
3
4
5#追加lv大小
lvextend -L +[lv_size] /dev/[vg_name]/[lv_name] # lv_size为lv的增加大小
#指定lv最终大小
lvextend -L [lv_size] /dev/[vg_name]/[lv_name] # lv_size为lv的最终大小在LV扩容后,文件系统也要扩容,才能真正使用
1
2
3
4
5#xfs
xfs_growfs /dev/[vg_name]/[lv_name]
#ext3/ext4
resize2fs /dev/[vg_name]/[lv_name]
接下来是不满足此条件的情形:
- 首先确定有多余的磁盘或者分区,按文件系统创建流程建立PV
#扩充卷组池 vgextend [vg_name] [pv_name] # pv_name为新创建未使用的PV
- 扩充之后如果VG剩余大小仍然不满足,继续扩充,反之则按满足此条件的情形进行扩容。
参考