我目前在一台装有 96 GB 小型 SSD 的机器上安装了 Ubuntu 16.04 Server。该空间已不足以容纳服务器上的所有用户,因此我想添加一个 1 TB 的 HDD,并将文件夹/home
明确移动到此 1 TB 驱动器上的新分区。
最初,我计划按照说明进行操作这里。然而,仔细检查系统后,我发现 LVM 已启用:
Filesystem Size Used Avail Use% Mounted on
udev 63G 0 63G 0% /dev
tmpfs 13G 9.5M 13G 1% /run
/dev/mapper/ubuntu--vg-root 98G 76G 18G 82% /
tmpfs 63G 0 63G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 63G 0 63G 0% /sys/fs/cgroup
/dev/sda2 473M 111M 338M 25% /boot
/dev/sda1 512M 136K 512M 1% /boot/efi
tmpfs 13G 0 13G 0% /run/user/1001
根据我目前所读到的内容,我需要将新驱动器添加到ubuntu-vg
卷组(如步骤 2-3 中所述这个答案)但我不确定接下来该怎么做——我应该继续步骤 4-5? 或者是否有其他方法可以明确地将数据移动/home
到 1 TB HDD 而保留/
在 SSD 上?
答案1
有很多方法可以做你想做的事,但我推荐的方法是:
- 对新磁盘进行分区。它可以是一个大的 LVM 分区,也可以留出一个或多个非 LVM 分区用于其他用途。我有时会创建多个 LVM 分区(又称物理卷或 PV),以便将来在需要时可以从 LVM 配置中删除一个或多个分区。请注意,我确实不是建议将 PV 数据结构直接放在没有分区的磁盘上,如您引用的 LVM 答案所示。虽然这是合法的,但它可能会导致混淆,因为硬盘通常是分区的。
- 使用以下命令准备 PV 以供 LVM 使用
pvcreate
,如下所示sudo pvcreate /dev/sdb1
。 - 使用 将新的 PV 添加到您现有的卷组 (VG)
vgextend
,如下所示sudo vgextend ubuntu--vg /dev/sdb1
。 - 键入
sudo pvdisplay
以显示有关 PV 的统计信息,包括其大小。 - 使用 创建一个新的逻辑卷 (LV)
lvcreate
,如sudo lvcreate -L 900G -n home ubuntu--vg /dev/sdb1
。请注意,我已指定一种语法,使您能够设置大小 (通过-L
) 和将在其上创建 LV 的 PV (/dev/sdb1
)。 - 再次输入
sudo pvdisplay
以验证您是否已创建大小合适的 LV。如果没有,您可以使用调整其大小lvresize
或使用删除它lvremove
并重试。 - 在您的 LV 上创建一个文件系统,如下所示
sudo mkfs -t ext4 /dev/mapper/ubuntu--vg-home
。 - 将新的 LV 挂载到方便的地方,例如
sudo mount /dev/mapper/ubuntu--vg-home /mnt
。 - 使用、、或任何您喜欢的工具复制您的
/home
目录。tar
cp
rsync
- 编辑
/etc/fstab
以将新的 LV 挂载于/home
。 - 将当前目录重命名
/home
为其他名称(例如/home-orig
),并创建一个新的空/home
目录作为挂载点。 - 重新启动并希望它能正常工作。
- 如果一切看起来不错,请删除旧
/home-orig
目录。
步骤 8-11 与您引用的 wiki 页面,所以我对这些步骤的细节进行了简单介绍。
请注意,尽管我自己已经多次做过这种事情,但我展示的示例命令是基于我对相关手册页的阅读,所以我可能遗漏了一些细节。我建议您查看手册页,如果出现错误,请在找出问题所在后进行调整。此外,我发现 Ubuntu 的默认 LVM 命名令人困惑,所以我可能误解了那个细节,您可能需要进行调整。
完成此操作后,SSD 上的 PV 中将有未使用的空间。您可以将根 ( /
) LV 扩展到此空间,扩展/home
LV 以跨越两个磁盘,创建另一个 LV 用于某些特殊用途等。
此过程的变体可能是将当前/home
LV 保留在原处,在新磁盘上创建新 LV,然后开始使用新 LV 作为溢出空间。您注意到您的计算机是一台多用户服务器,因此这可能很尴尬,但这样做可能有原因——例如,如果只有一两个用户占用了大部分磁盘空间,您可以只将他们的主目录移动到新空间,或者将新空间上的目录提供给他们(使用挂载点或符号链接以方便访问),并指示他们将大文件移动到新空间。这种方法的优点是不会对其他用户产生负面影响,因为新的硬盘存储空间可能明显比旧的 SSD 存储空间慢。
答案2
可以将新驱动器添加到 LVM,这样系统就会将其视为一个驱动器,或者您可以将其添加为第二个驱动器。使用第二种方法,新驱动器可以专用于 /home。
首先将驱动器添加到系统,然后使用您喜欢的文件系统对其进行格式化。记下 UUID,然后将所有内容从 /home 移动到新驱动器。/home 必须为空才能在那里安装新驱动器。
接下来编辑 /etc/fstab 文件。添加以下行:
UUID=(前面提到)/home(使用的文件系统)默认值为 0 2
注意:您可以使用设备名称,但 UUID 可确保在设备名称发生变化时安装正确的驱动器。
保存并重新启动。