Linux LVM分区管理学习备忘

Asia/Shanghai | Leave a comment
Linux LVM分区管理学习备忘
Linux LVM分区管理学习备忘

This post is over a year old, some of this information may be out of date.

由于平常开发主要是在Windows下进行,对于Linux的使用仅局限于服务器端虚拟机,所以初始分区这块一直使用的是默认配置,随着目前Windows Only开发收窄以及考虑今后跨平台开发,后期主力开发系统将逐渐迁移到Linux下,当然发行版肯定是基于Debian的,毕竟这个发行版较熟悉一些。如果主力开发系统迁移到Linux下那么分区又是一个绕不开的话题,所以我又将目前主流的LVM分区管理方式进行了学习,记录本文以备忘。

1 LVM 介绍

LVM 全称是逻辑卷管理(Logical Volume Manager),既然是逻辑卷就需要和传统的物理卷作出区分,传统物理卷一般在安装操作系统的时候进行分区划分,分区多少空间以后就是多少空间,空间不够怎么办?对不起,这个就麻烦了,就好比Windows下经常有人问C盘空间不够怎么办?能不能从其他分区划出一部分空间给C盘?以前我一般建议使用压缩卷或者一些第三方分区软件进行操作,实际上这些都是有局限和一定风险的,后来我也就不再推荐这个做法了。逻辑卷可以理解成在物理卷上进行了一层抽象,屏蔽物理卷的局限性,LVM技术最大的特点就是可伸缩性,也就是说可以方便的扩容和缩减存储空间。

1.1 PV、PE、VG和LV

为了便于进一步引入LVM相关知识,这里对PV、PE、VG和LV的基本概念进行介绍:

(1) PV(Physical Volume)
PV物理卷可以简单理解成实际硬盘之类的存储设备,如果要想使用LVM,那么物理存储设备需要被创建成PV物理卷。
(2) PE(Physical Extents)
PE是可被LVM寻址的最小单元,默认是4MB,这个默认值是可以修改的,但是我们一般维持默认不变,PE可以理解成从PV划分的块。
(3) VG(Volume Group)
VG表示卷组,VG建立在PV之上,可以理解成逻辑上VG是PE的集合,物理上VG建立在PV之上。
(4) LV(Logical Volume)
LV表示逻辑卷,这个是操作系统真正所要利用的分区卷,LV建立在VG之上,LV的分区大小取决于VG中划分出的大小(PE数量)。

PV、PE、VG和LV的关系可以简单使用下面的示意图表示:

2 LVM操作

下面我将简单介绍4种使用LVM管理的卷操作方式,需要提醒的是以下操作存在一定的风险,建议先搭建实验环境模拟测试,本人不对以下操作可能带来的数据损失负责。

2.1 创建分区

创建一个分区需要进行这些步骤,首先连接或者分配物理磁盘,其次将物理磁盘初始化成PV(Physical Volume),然后将PV加入VG(Volume Group),最后从VG上分配LV(Logical Volume)并最终格式化文件系统并挂载以完成分区创建。

一个例子如下所示:

1. 将物理磁盘初始化成物理卷PV

例如我们有磁盘/dev/sdb/dev/sdc,那么可以通过下面的命令将磁盘初始化成PV:

pvcreate /dev/sdb /dev/sdc

2. 创建卷组VG,并将第1步创建的PV加入

vgcreate myvg /dev/sdb /dev/sdc

这里myvg是卷组的名字,这个可以根据喜好自定义。

3. 基于卷组VG创建逻辑卷LV

lvcreate -n mylv -L 16G myvg

这里mylv是逻辑卷的名字,同样可以根据喜好自定义。

2.2 删除分区

删除分区和创建分区执行相反的操作,比如删除第2.1节创建的分区,遵循下面的步骤,请注意部分操作可根据实际情况酌情选择:

1.删除LV

lvremove /dev/myvg/mylv

2.删除VG(根据情况选择)

vgremove myvg

3.删除物理卷(根据情况选择)

pvremove /dev/sdb

2.3 扩容分区

扩容分区也称作拉伸逻辑卷,首先我们需要确保卷组VG中有足够的空闲空间,如果空间不足将会导致后续操作失败,查看VG空闲空间的命令是vgdisplay,空闲空间满足条件后使用lvextend命令拉伸逻辑卷。

1.扩容1G大小空间

lvextend -L +1G /dev/myvg/mylv

扩容完成后建议使用lvdisplay确认一下扩充后的大小,然后使用resize2fs更新文件系统。

2.更新文件系统

resize2fs /dev/myvg/mylv

更新完成后建议使用df -h查看并确认更新后的结果。

3.扩容卷组(根据情况选择)

扩容分区前我们一般会通过vgdisplay检查VG的空闲空间,如果此时空闲空间不足,那么就需要此步操作来扩容(拉伸)卷组了。

3.1 将新硬盘格式化为PV

pvcreate /dev/sdd

此步同2.1 创建分区 第1步。

3.2 将新格式化创建的PV添加到卷组中

vgextend myvg /dev/sdd

最后使用vgdisplay确认操作结果。

2.4 缩减分区

缩减分区也称为缩小逻辑卷,需要注意的是此操作需要离线执行(需要卸载和重新挂载逻辑卷)。

1.卸载已有的分区(逻辑卷)

umount /dev/myvg/mylv

2.缩小文件系统

resize2fs /dev/myvg/mylv 1G

3.缩小逻辑卷LV

lvreduce -L -1G /dev/myvg/mylv

此步骤后可使用lvdisplay查看并确认操作结果。

4.重新挂载分区(逻辑卷)

mount /dev/myvg/mylv /mnt

3 总结

LVM为Linux系统管理员提供了一种灵活管理存储空间的方式,大大降低了系统维护和管理的成本,尤其对于数据量增长的业务模式尤其适用,在线扩充存储空间避免了数据备份迁移的成本,大大缩短了业务恢复的时间。