LVM 管理磁盘驱动器。它可以将多个驱动器和分区组合成更大的卷组,通过快照辅助备份,并支持动态调整卷的大小。它还可以提供类似于 RAID 1 阵列的镜像功能。
对 LVM 的完整讨论超出了本简介的范围,但以下介绍基本概念。
要运行此处介绍的任何命令,必须安装 LVM2-2.03.41 软件包。所有命令都必须以 root 用户身份执行。
使用 lvm 管理磁盘通过以下概念实现:
即物理磁盘或分区,例如 /dev/sda3 或 /dev/sdb。
这是由管理员操作的、命名的物理卷组。构成卷组的物理卷数量任意。物理卷可以动态地添加到卷组中或从中移除。
卷组可以细分为逻辑卷。每个逻辑卷随后可以像普通 Linux 分区一样单独格式化。管理员可以根据需要动态调整逻辑卷的大小。
举一个具体例子,假设您有两个 2 TB 的磁盘。再假设一个非常大的数据库需要非常大量的空间,挂载在 /srv/mysql 下。初始分区设置如下所示:
分区 用途 大小 分区类型
/dev/sda1 /boot 100 MB 83(Linux)
/dev/sda2 / 10 GB 83(Linux)
/dev/sda3 swap 2 GB 82(Swap)
/dev/sda4 LVM 剩余 8e(LVM)
/dev/sdb1 swap 2 GB 82(Swap)
/dev/sdb2 LVM 剩余 8e(LVM)
首先初始化物理卷:
pvcreate /dev/sda4 /dev/sdb2
整个磁盘可以用作物理卷的一部分,但请注意,pvcreate 命令会销毁该磁盘上的任何分区信息。
接下来创建一个名为 lfs-lvm 的卷组:
vgcreate lfs-lvm /dev/sda4 /dev/sdb2
可以通过运行 vgscan 命令检查卷组的状态。现在创建逻辑卷。由于大约有 3900 GB 可用空间,保留约 900 GB 用于扩展。请注意,名为 mysql 的逻辑卷大于任何单个物理磁盘。
lvcreate --name mysql --size 2500G lfs-lvm lvcreate --name home --size 500G lfs-lvm
最后,可以格式化并挂载逻辑卷。在此示例中,使用 jfs 文件系统(jfsutils-1.1.15)进行演示。
mkfs -t ext4 /dev/lfs-lvm/home mkfs -t jfs /dev/lfs-lvm/mysql mount /dev/lfs-lvm/home /home mkdir -p /srv/mysql mount /dev/lfs-lvm/mysql /srv/mysql
可能需要激活这些逻辑卷,以便它们出现在 /dev 中。以
root 用户身份执行以下命令,可以同时激活所有逻辑卷:
vgchange -a y
LVM 逻辑卷可以承载根文件系统,但需要使用 initramfs(初始 RAM 文件系统)。“关于 initramfs”一节 中提供的
initramfs 允许在内核命令行中通过 root=
参数传递 lvm 卷。
如果不使用 initramfs,systemd
中存在竞争条件,会阻止通过 /etc/fstab 挂载逻辑卷。您必须创建一个
“挂载” 单元(参见
systemd.mount(5)),如下例所示,该单元在启动时自动挂载
/home 目录:
cat > /etc/systemd/system/home.mount << EOF
[Unit]
Description=将 lvm 卷 /dev/lfs-lvm/home 挂载到 /home
[Mount]
What=/dev/lfs-lvm/home
Where=/home
Type=ext4
Options=default
[Install]
WantedBy=multi-user.target
EOF
单元的名称必须是挂载点的名称,将“/”字符替换为“-”,并省略前导的“/”。
接下来,必须启用该单元:
systemctl enable home.mount
有关 LVM 的更多信息,请参见 LVM HOWTO 和 lvm 手册页。RedHat® 提供了一份详尽的 指南,尽管其中有时会引用专有工具。