跳转至内容

在 LVM 上安装 Arch Linux

来自 ArchWiki

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

快速概览

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

安装

你可以一直按照安装指南操作,直到到达 安装指南#分区磁盘。此时你将偏离指南,以 LVM 为目标进行所有分区操作。

创建分区

首先,在配置 LVM 之前,根据需要对磁盘进行分区

创建分区

  • 如果你使用 GUID 分区表 (GPT),请将分区类型 GUID 设置为 E6D6D379-F507-44C2-A23C-238F2A3DF928(在 fdisk 中为 Linux LVM 分区类型,在 gdisk 中为 8e00)。
  • 如果你使用主引导记录 (MBR) 分区表,请将分区类型 ID 设置为 8e(在 fdisk 中为 Linux LVM 分区类型)。

创建物理卷

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

# lvmdiskscan
警告 请确保目标设备正确,否则下面的命令将导致数据丢失!

在设备上创建物理卷

# pvcreate DEVICE

此命令在每个设备上创建头信息,以便其能被 LVM 使用。正如 LVM#LVM building blocks 中定义的,DEVICE 可以是任何块设备,例如磁盘 /dev/sda、分区 /dev/sda2 或回环设备 (loop back device)。例如

# 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

该命令首先将三个分区设置为物理卷(如果必要),然后用这三个卷创建卷组。如果命令在任何设备上检测到现有文件系统,它会发出警告。

创建逻辑卷

提示
  • 如果你希望使用快照、逻辑卷缓存、精简配置 (thin provisioned) 逻辑卷或 RAID,请参阅 LVM#Logical volumes
  • 如果逻辑卷将使用 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 钩子。如果你在为新安装系统而在 arch-chroot 环境中运行 mkinitcpio,则必须在 arch-chroot 内部安装 lvm2,这样 mkinitcpio 才能找到 lvm2 钩子。如果 lvm2 仅存在于 arch-chroot 外部,mkinitcpio 将输出 Error: Hook 'lvm2' cannot be found

添加 mkinitcpio 钩子

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

  • 对于默认的基于 systemd 的 initramfs:systemdlvm2
  • 对于基于 busybox 的 initramfs:udevlvm2

systemd 默认已存在。编辑该文件并在 blockfilesystems 之间插入 lvm2,如下所示:

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

对于基于 busybox 的 initramfs:

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

之后,你可以继续按照常规安装指令执行重新创建 initramfs 镜像步骤。

内核启动选项

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

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.