使用 LVM 移动 /home

使用 LVM 移动 /home

我目前在一台装有 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

有很多方法可以做你想做的事,但我推荐的方法是:

  1. 对新磁盘进行分区。它可以是一个大的 LVM 分区,也可以留出一个或多个非 LVM 分区用于其他用途。我有时会创建多个 LVM 分区(又称物理卷或 PV),以便将来在需要时可以从 LVM 配置中删除一个或多个分区。请注意,我确实不是建议将 PV 数据结构直接放在没有分区的磁盘上,如您引用的 LVM 答案所示。虽然这是合法的,但它可能会导致混淆,因为硬盘通常是分区的。
  2. 使用以下命令准备 PV 以供 LVM 使用pvcreate,如下所示sudo pvcreate /dev/sdb1
  3. 使用 将新的 PV 添加到您现有的卷组 (VG) vgextend,如下所示sudo vgextend ubuntu--vg /dev/sdb1
  4. 键入sudo pvdisplay以显示有关 PV 的统计信息,包括其大小。
  5. 使用 创建一个新的逻辑卷 (LV) lvcreate,如sudo lvcreate -L 900G -n home ubuntu--vg /dev/sdb1。请注意,我已指定一种语法,使您能够设置大小 (通过-L) 和将在其上创建 LV 的 PV ( /dev/sdb1)。
  6. 再次输入sudo pvdisplay以验证您是否已创建大小合适的 LV。如果没有,您可以使用调整其大小lvresize或使用删除它lvremove并重试。
  7. 在您的 LV 上创建一个文件系统,如下所示sudo mkfs -t ext4 /dev/mapper/ubuntu--vg-home
  8. 将新的 LV 挂载到方便的地方,例如sudo mount /dev/mapper/ubuntu--vg-home /mnt
  9. 使用、、或任何您喜欢的工具复制您的/home目录。tarcprsync
  10. 编辑/etc/fstab以将新的 LV 挂载于/home
  11. 将当前目录重命名/home为其他名称(例如/home-orig),并创建一个新的空/home目录作为挂载点。
  12. 重新启动并希望它能正常工作。
  13. 如果一切看起来不错,请删除旧/home-orig目录。

步骤 8-11 与您引用的 wiki 页面,所以我对这些步骤的细节进行了简单介绍。

请注意,尽管我自己已经多次做过这种事情,但我展示的示例命令是基于我对相关手册页的阅读,所以我可能遗漏了一些细节。我建议您查看手册页,如果出现错误,请在找出问题所在后进行调整。此外,我发现 Ubuntu 的默认 LVM 命名令人困惑,所以我可能误解了那个细节,您可能需要进行调整。

完成此操作后,SSD 上的 PV 中将有未使用的空间。您可以将根 ( /) LV 扩展到此空间,扩展/homeLV 以跨越两个磁盘,创建另一个 LV 用于某些特殊用途等。

此过程的变体可能是将当前/homeLV 保留在原处,在新磁盘上创建新 LV,然后开始使用新 LV 作为溢出空间。您注意到您的计算机是一台多用户服务器,因此这可能很尴尬,但这样做可能有原因——例如,如果只有一两个用户占用了大部分磁盘空间,您可以只将他们的主目录移动到新空间,或者将新空间上的目录提供给他们(使用挂载点或符号链接以方便访问),并指示他们将大文件移动到新空间。这种方法的优点是不会对其他用户产生负面影响,因为新的硬盘存储空间可能明显比旧的 SSD 存储空间慢。

答案2

可以将新驱动器添加到 LVM,这样系统就会将其视为一个驱动器,或者您可以将其添加为第二个驱动器。使用第二种方法,新驱动器可以专用于 /home。

首先将驱动器添加到系统,然后使用您喜欢的文件系统对其进行格式化。记下 UUID,然后将所有内容从 /home 移动到新驱动器。/home 必须为空才能在那里安装新驱动器。

接下来编辑 /etc/fstab 文件。添加以下行:

UUID=(前面提到)/home(使用的文件系统)默认值为 0 2

注意:您可以使用设备名称,但 UUID 可确保在设备名称发生变化时安装正确的驱动器。

保存并重新启动。

相关内容