跳转至内容

在 LVM 上安装 Arch Linux

来自 ArchWiki

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

快速概览

  • 安装所需软件包。(参考 LVM#安装
  • 创建将用于存放物理卷 (PV) 的 分区
  • 创建您的 PV。如果您只有一个磁盘,最好在一个大分区中创建单个 PV。如果您有多个磁盘,可以在每个磁盘上创建分区,并在每个分区上创建 PV。
  • 创建您的卷组 (VG),并将所有 PV 添加到其中。
  • 在 VG 中创建逻辑卷 (LV)。
  • 继续 安装指南#格式化分区
  • 当您在安装指南中到达 安装指南#Initramfs 部分时,请将 lvm2 hook 添加到 /etc/mkinitcpio.conf(更多详情请参阅下文)。
警告 当使用不支持 LVM 的引导加载程序时(目前已知只有 GRUB 支持 LVM),/boot 不能位于 LVM 中。您必须创建一个 单独的 /boot 分区 并直接格式化它。

安装

您将按照安装指南进行操作,直到到达 安装指南#分区磁盘。此时您将分道扬镳,并开始考虑 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
提示 如果在处理预先存在的磁盘签名时遇到问题,可以使用 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 volume_group/logical_volume 命令减小其大小来实现。

现在我们需要在此卷组上创建逻辑卷。您可以使用下一个命令通过指定新卷的名称、大小以及它所属的卷组来创建逻辑卷

# 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/YourVolumeGroupName/。如果您找不到它们,请使用以下命令加载创建设备节点的模块,并使卷组可用

# 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 hook。如果您正在为新安装在 arch-chroot 中运行 mkinitcpio,则必须在 arch-chroot 中安装 lvm2,以便 mkinitcpio 能够找到 lvm2 hook。如果 lvm2 仅存在于 arch-chroot 之外,mkinitcpio 将输出 Error: Hook 'lvm2' cannot be found

添加 mkinitcpio hooks

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

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

udev 默认存在。编辑文件,在 blockfilesystems 之间插入 lvm2,如下所示

/etc/mkinitcpio.conf
HOOKS=(base udev ... block lvm2 filesystems)

对于基于 systemd 的 initramfs

/etc/mkinitcpio.conf
HOOKS=(base systemd ... block lvm2 filesystems)

之后,您可以按照正常的安装说明继续执行 重新创建 initramfs 镜像 步骤。

内核启动选项

如果根文件系统位于逻辑卷中,则 root= 内核参数 必须指向映射的设备,例如 /dev/vg-name/lv-name