在LVM上安装 Arch Linux

来自 ArchWiki

您应该在分区格式化步骤之间创建 LVM 卷,参考安装步骤。文件系统将在逻辑卷 (LV) 内创建,而不是直接格式化分区作为根文件系统。

快速概览

  • 安装所需软件包。(参考LVM#安装
  • 创建分区,物理卷 (PV) 将驻留在其中。
  • 创建您的 PV。如果您只有一个磁盘,最好在一个大分区中创建一个 PV。如果您有多个磁盘,则可以在每个磁盘上创建分区,并在每个分区上创建一个 PV。
  • 创建您的卷组 (VG) 并将所有 PV 添加到其中。
  • 在该 VG 内创建逻辑卷 (LV)。
  • 继续安装指南#格式化分区
  • 当您到达安装指南中的“创建初始 ramdisk 环境”步骤时,将 lvm2 钩子添加到 /etc/mkinitcpio.conf(详见下文)。
警告: 当使用不支持 LVM 的引导加载程序时,/boot 不能位于 LVM 中(已知只有 GRUB 支持 LVM)。您必须创建一个单独的 /boot 分区并直接格式化它。

安装

您将按照安装指南进行操作,直到您看到安装指南#分区磁盘。此时您将分叉并记住所有使用 LVM 进行分区的情况。

创建分区

首先,在配置 LVM 之前,根据需要分区您的磁盘。

创建分区

  • 如果您使用 GUID 分区表,请将分区类型 GUID 设置为 E6D6D379-F507-44C2-A23C-238F2A3DF928fdisk 中的分区类型 Linux LVMgdisk 中的 8e00)。
  • 如果您使用主引导记录分区表,请将分区类型 ID 设置为 8efdisk 中的分区类型 Linux LVM)。

创建物理卷

列出所有可用作物理卷的设备

# lvmdiskscan
警告: 确保您定位到正确的设备,否则以下命令将导致数据丢失!

在它们上创建物理卷

# pvcreate DEVICE

此命令在每个设备上创建一个标头,以便它可以用于 LVM。正如LVM#LVM 构建块中定义的那样,DEVICE 可以是任何块设备,例如磁盘 /dev/sda、分区 /dev/sda2 或环回设备。例如

# pvcreate /dev/sda2

您可以使用以下命令跟踪已创建的物理卷

# pvdisplay

您还可以使用以下命令获取有关物理卷的摘要信息

# pvscan
提示: 如果您遇到预先存在的磁盘签名问题,可以使用wipefs将其删除。

创建和扩展卷组

首先,您需要在任何一个物理卷上创建一个卷组

# vgcreate volume_group physical_volume

例如

# vgcreate VolGroup00 /dev/sda2

请参阅 lvm(8) 以获取卷组名称的有效字符列表。

扩展卷组同样容易

# vgextend volume_group physical_volume

例如,要将 sdb1sdc 都添加到您的卷组

# 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
注意: 您可能需要加载 device-mapper 内核模块 (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 软件包已安装

提示: lvm2 提供了 lvm2 钩子。如果您在新安装的 arch-chroot 中运行 mkinitcpio,则必须在 arch-chroot 内部安装 lvm2,以便 mkinitcpio 找到 lvm2 钩子。如果 lvm2 仅存在于 arch-chroot 之外,mkinitcpio 将输出 Error: Hook 'lvm2' cannot be found

添加 mkinitcpio 钩子

如果您的根文件系统在 LVM 上,您将需要启用相应的 mkinitcpio 钩子,否则您的系统可能无法启动。启用

  • 用于默认基于 busybox 的 initramfs 的 udevlvm2
  • 用于基于 systemd 的 initramfs 的 systemdlvm2

udev 默认存在。编辑文件并在 blockfilesystems 之间插入 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