Linux 下的逻辑卷管理 LVM
LVM(Logical Volume Manager)是 Linux 下的一种逻辑卷管理方式。它可以抽象地将硬盘分区封装成为卷组(Volume Group)和逻辑卷(Logical Volume),从而实现硬盘空间的动态分配和扩容。
LVM 的工作原理
LVM 的工作原理如下:
-
将硬盘分区初始化为物理卷(Physical Volume,PV) -
将多个 PV 汇聚为一个卷组(Volume Group, VG) -
在 VG 上创建逻辑卷(Logical Volume,LV),LV 才是真正的数据块存储区 -
文件系统建立在 LV 之上,应用程序对 LV 进行读写
LVM 的安装
在 Linux 下安装 LVM 很简单,通常只需要安装 lvm2
软件包即可。
$ sudo apt-get install lvm2 # Debian/Ubuntu
$ sudo yum install lvm2 # CentOS/Red Hat
LVM 常用命令
LVM 的常用命令主要包括:
-
pvcreate
:初始化物理卷 -
vgcreate
:创建卷组 -
lvcreate
:在卷组上创建逻辑卷 -
lvextend
:扩展逻辑卷的空间 -
pvdisplay
:显示物理卷的信息 -
vgdisplay
:显示卷组的信息 -
lvdisplay
:显示逻辑卷的信息
实际应用示例
假设我们有两块硬盘 /dev/sdb
和 /dev/sdc
,现在想要使用 LVM 来创建可扩容的数据分区。
初始设置
-
将
/dev/sdb
初始化为 PV:pvcreate /dev/sdb
-
创建名为 datavg 的 VG:
vgcreate datavg /dev/sdb
-
在 datavg 上创建名为 datalv 的 10G LV:
lvcreate -L 10G -n datalv datavg
-
格式化并挂载 datalv:
mkfs.ext4 /dev/datavg/datalv
mount /dev/datavg/datalv /data
到此我们就得到了一个可用的逻辑卷 /dev/datavg/datalv
作为 /data
分区使用。
扩容
后期如果 /data
分区空间不足,我们可以很容易进行扩容:
-
将新硬盘
/dev/sdc
初始化为 PV,并加入 datavg:pvcreate /dev/sdc
vgextend datavg /dev/sdc -
扩展逻辑卷空间:
lvextend -L +5G /dev/datavg/datalv
-
重新调整文件系统大小:
resize2fs /dev/datavg/datalv
这样通过 LVM 即可轻松实现存储空间的动态扩展,无需担心物理磁盘分区不足。
总结
LVM 提供了磁盘分区抽象化管理的功能,可以将硬盘分区的物理限制解耦,实现存储空间的动态分配和扩展。上面介绍了 LVM 的工作原理、常用命令以及实际应用的示例,可以看到利用 LVM 可以非常方便地实现磁盘空间的热插拔和在线扩容。