在LVM上安装 Arch Linux
您应该在分区和格式化步骤之间创建 LVM 卷,参考安装步骤。文件系统将在逻辑卷 (LV) 内创建,而不是直接格式化分区作为根文件系统。
快速概览
- 安装所需软件包。(参考LVM#安装)
- 创建分区,物理卷 (PV) 将驻留在其中。
- 创建您的 PV。如果您只有一个磁盘,最好在一个大分区中创建一个 PV。如果您有多个磁盘,则可以在每个磁盘上创建分区,并在每个分区上创建一个 PV。
- 创建您的卷组 (VG) 并将所有 PV 添加到其中。
- 在该 VG 内创建逻辑卷 (LV)。
- 继续安装指南#格式化分区。
- 当您到达安装指南中的“创建初始 ramdisk 环境”步骤时,将
lvm2
钩子添加到/etc/mkinitcpio.conf
(详见下文)。
安装
您将按照安装指南进行操作,直到您看到安装指南#分区磁盘。此时您将分叉并记住所有使用 LVM 进行分区的情况。
创建分区
首先,在配置 LVM 之前,根据需要分区您的磁盘。
创建分区
- 如果您使用 GUID 分区表,请将分区类型 GUID 设置为
E6D6D379-F507-44C2-A23C-238F2A3DF928
(fdisk 中的分区类型Linux LVM
和 gdisk 中的8e00
)。 - 如果您使用主引导记录分区表,请将分区类型 ID 设置为
8e
(fdisk 中的分区类型Linux LVM
)。
创建物理卷
列出所有可用作物理卷的设备
# lvmdiskscan
在它们上创建物理卷
# pvcreate DEVICE
此命令在每个设备上创建一个标头,以便它可以用于 LVM。正如LVM#LVM 构建块中定义的那样,DEVICE 可以是任何块设备,例如磁盘 /dev/sda
、分区 /dev/sda2
或环回设备。例如
# pvcreate /dev/sda2
您可以使用以下命令跟踪已创建的物理卷
# pvdisplay
您还可以使用以下命令获取有关物理卷的摘要信息
# pvscan
创建和扩展卷组
首先,您需要在任何一个物理卷上创建一个卷组
# vgcreate volume_group physical_volume
例如
# vgcreate VolGroup00 /dev/sda2
请参阅 lvm(8) 以获取卷组名称的有效字符列表。
扩展卷组同样容易
# vgextend volume_group physical_volume
例如,要将 sdb1
和 sdc
都添加到您的卷组
# vgextend VolGroup00 /dev/sdb1 # vgextend VolGroup00 /dev/sdc
您可以使用以下命令跟踪卷组的增长情况
# vgdisplay
如果您想将磁盘添加到具有故障磁盘的 RAID 或镜像组,这也是您应该做的。
组合创建物理卷和卷组
LVM 允许您在一个简单的步骤中组合创建卷组和物理卷。例如,要使用上述三个设备创建组 VolGroup00,您可以运行
# vgcreate VolGroup00 /dev/sda2 /dev/sdb1 /dev/sdc
此命令将首先将这三个分区设置为物理卷(如果需要),然后使用这三个卷创建卷组。如果命令检测到任何设备上存在现有文件系统,它将发出警告。
创建逻辑卷
- 如果您希望使用快照、逻辑卷缓存、精简配置逻辑卷或 RAID,请参阅LVM#逻辑卷。
- 如果逻辑卷将使用 ext4 格式化,请在卷组中至少保留 256 MiB 的可用空间,以便使用 e2scrub(8)。在创建最后一个卷
-l 100%FREE
之后,可以通过使用lvreduce -L -256M 卷组/逻辑卷
减小其大小来完成此操作。
现在我们需要在此卷组上创建逻辑卷。您可以通过指定新卷的名称和大小以及它将驻留的卷组,使用下一个命令创建逻辑卷
# lvcreate -L size volume_group -n logical_volume
例如
# lvcreate -L 10G VolGroup00 -n lvolhome
这将创建一个逻辑卷,您稍后可以使用 /dev/VolGroup00/lvolhome
访问它。与卷组一样,除了 lvm(8) § VALID_NAMES 中列出的少数例外情况外,您可以在创建逻辑卷时使用任何您想要的名称。
您还可以指定一个或多个物理卷来限制 LVM 分配数据的位置。例如,您可能希望在您的小型 SSD 上为根文件系统创建一个逻辑卷,并在较慢的机械硬盘上为您的 home 卷创建一个逻辑卷。只需将物理卷设备添加到命令行,例如
# lvcreate -L 10G VolGroup00 -n lvolhome /dev/sdc1
要使用卷组中剩余的所有可用空间,请使用下一个命令
# lvcreate -l 100%FREE volume_group -n logical_volume
您可以使用以下命令跟踪已创建的逻辑卷
# lvdisplay
modprobe dm_mod
) 才能使上述命令成功。格式化和挂载逻辑卷
您的逻辑卷现在应该位于 /dev/您的卷组名称/
中。如果您找不到它们,请使用以下命令启动用于创建设备节点的模块并使卷组可用
# modprobe dm_mod # vgscan # vgchange -ay
现在您可以格式化您的逻辑卷并将它们像普通分区一样挂载(有关更多详细信息,请参阅挂载文件系统)
# mkfs.fstype /dev/volume_group/logical_volume # mount /dev/volume_group/logical_volume /mountpoint
例如
# mkfs.ext4 /dev/VolGroup00/lvolhome # mount /dev/VolGroup00/lvolhome /home
/dev/Volgroup00/lvolhome
)。不要选择在其上创建逻辑卷的实际分区(不要使用:/dev/sda2
)。配置系统
lvm2
钩子。如果您在新安装的 arch-chroot 中运行 mkinitcpio,则必须在 arch-chroot 内部安装 lvm2,以便 mkinitcpio 找到 lvm2
钩子。如果 lvm2 仅存在于 arch-chroot 之外,mkinitcpio 将输出 Error: Hook 'lvm2' cannot be found
。添加 mkinitcpio 钩子
如果您的根文件系统在 LVM 上,您将需要启用相应的 mkinitcpio 钩子,否则您的系统可能无法启动。启用
- 用于默认基于 busybox 的 initramfs 的
udev
和lvm2
- 用于基于 systemd 的 initramfs 的
systemd
和lvm2
udev
默认存在。编辑文件并在 block
和 filesystems
之间插入 lvm2
,如下所示
/etc/mkinitcpio.conf
HOOKS=(base udev ... block lvm2 filesystems)
对于基于 systemd 的 initramfs
/etc/mkinitcpio.conf
HOOKS=(base systemd ... block lvm2 filesystems)
之后,您可以继续按照正常的安装说明进行操作,执行创建初始 ramdisk 步骤。
内核启动选项
如果根文件系统位于逻辑卷中,则 root=
内核参数 必须指向映射的设备,例如 /dev/vg-name/lv-name
。