在 LVM 上安装 Arch Linux
您应该在 分区 和 格式化 步骤之间创建 LVM 卷。文件系统将创建在逻辑卷 (LV) 中,而不是直接格式化分区作为根文件系统。
快速概览
- 安装所需软件包。(参考 LVM#安装)
- 创建将用于存放物理卷 (PV) 的 分区。
- 创建您的 PV。如果您只有一个磁盘,最好在一个大分区中创建单个 PV。如果您有多个磁盘,可以在每个磁盘上创建分区,并在每个分区上创建 PV。
- 创建您的卷组 (VG),并将所有 PV 添加到其中。
- 在 VG 中创建逻辑卷 (LV)。
- 继续 安装指南#格式化分区。
- 当您在安装指南中到达 安装指南#Initramfs 部分时,请将
lvm2hook 添加到/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 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
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 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,否则您的系统可能无法启动。启用
udev和lvm2以用于基于 busybox 的默认 initramfssystemd和lvm2以用于基于 systemd 的 initramfs
udev 默认存在。编辑文件,在 block 和 filesystems 之间插入 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。