撰于 阅读 139

Linux LVM 使用教程

如果你想增加(扩展)根分区(根目录)容量,可以看这篇文章

准备环境

确保你有一些未分区的磁盘空间或额外的磁盘设备来创建 LVM 逻辑卷

安装 LVM 工具

大部分现代的 Linux 发行版都默认包含了 LVM 工具,如果没有可以通过以下命令安装:

  • 在基于 Debian 的系统上(例如 Ubuntu):

    sudo apt install lvm2
  • 在基于 RedHat 的系统上(例如 CentOS):

    sudo yum install lvm2

LVM 基本概念

LVM 主要涉及以下几个概念:

  • 物理卷 (PV, Physical Volume):LVM 直接管理的物理存储单元,通常是一个分区或一整个硬盘
  • 卷组 (VG, Volume Group):由一个或多个物理卷组成的存储池,逻辑卷可以在这个存储池中创建
  • 逻辑卷 (LV, Logical Volume):从卷组中分配的虚拟磁盘空间,可以动态调整大小

创建 LVM

创建物理卷 (PV)

首先,将未分区的磁盘或分区初始化为物理卷
磁盘可以进行分区使用也可以不分区直接使用整个磁盘
假设要使用 /dev/sdb 作为 LVM 的物理卷:

sudo pvcreate /dev/sdb

创建卷组 (VG)

将物理卷添加到卷组中
在此示例中,创建一个名为 vg_data 的卷组:

sudo vgcreate vg_data /dev/sdb

你可以通过 vgdisplay 或者vgs查看卷组的信息:

vgdisplay查看详细信息,vgs快速查看卷组基本信息

sudo vgdisplay
sudo vgs

创建逻辑卷 (LV)

从卷组中分配空间来创建逻辑卷
假设需要创建一个 20GB 的逻辑卷,并将其命名为 lv_data:

sudo lvcreate -L 20G -n lv_data vg_data

lvcreate-L 参数用于指定大小,可以使用-l (小写的-L)指定多少个块,也就是多少容量;-n 参数用于指定逻辑卷的名称

格式化逻辑卷

创建逻辑卷后,需要对其进行格式化才能使用
假设使用 ext4 文件系统:

sudo mkfs.ext4 /dev/vg_data/lv_data

挂载逻辑卷

将格式化好的逻辑卷挂载到系统中,例如挂载到 /mnt/data

sudo mount /dev/vg_data/lv_data /mnt/data

为了开机自动挂载,可以在 /etc/fstab 中添加一行:

/dev/vg_data/lv_data  /mnt/data  ext4  defaults  0  0

扩展逻辑卷

扩展逻辑卷大小

如果卷组中有剩余空间,可以动态扩展逻辑卷
假设你要将 lv_data 扩展到 30GB:

sudo lvextend -L 30G /dev/vg_data/lv_data

全部扩展到逻辑卷

sudo lvextend -l +100%FREE /dev/vg_data/lv_data

在线调整文件系统大小

扩展逻辑卷后,需要调整文件系统大小来匹配新的容量
对于 ext4 文件系统,使用以下命令:

sudo resize2fs /dev/vg_data/lv_data

缩小逻辑卷

缩小 LVM 容量有风险,特别是操作文件系统时,建议先备份重要数据

确保缩小后的大小足够容纳现有数据,缩小到比实际数据量更小的大小将导致数据不可恢复的丢失,可以使用以下命令查看文件系统的使用情况:

df -h /mnt/data

卸载逻辑卷

缩小逻辑卷前,必须先卸载它:

sudo umount /mnt/data

检查文件系统

缩小前要先检查文件系统:

sudo e2fsck -f /dev/vg_data/lv_data

调整文件系统大小

假设要将文件系统调整到 15GB:

sudo resize2fs /dev/vg_data/lv_data 15G

缩小逻辑卷

现在可以缩小逻辑卷大小:

sudo lvreduce -L 15G /dev/vg_data/lv_data

或者使用交互模式,系统会提示确认:

sudo lvreduce -r -L 15G /dev/vg_name/lv_name

-r 选项表示同时调整文件系统和逻辑卷大小

如果上一步没有使用 -r 选项,再次调整文件系统大小以适应新的逻辑卷大小:

resize2fs /dev/vg_data/lv_data

挂载逻辑卷

重新挂载逻辑卷:

sudo mount /dev/vg_data/lv_data /mnt/data

验证

通过 df -h / lsblk/fdisk -l 检查新的文件系统和逻辑卷大小是否正确

删除 LVM 组件

卸载逻辑卷

sudo umount /mnt/data

删除逻辑卷

sudo lvremove /dev/vg_data/lv_data

删除卷组

sudo vgremove vg_data

删除物理卷

sudo pvremove /dev/sdb