将 /usr 从 hdd 移动到 ssd(nvme)后 Ubuntu 无法启动

将 /usr 从 hdd 移动到 ssd(nvme)后 Ubuntu 无法启动

我尝试/usr使用各种方法将其传输到不同的驱动器,但似乎都无法在 Ubuntu (18.04.3 LTS) 上使用。

我正在尝试将 HDD 上的某些系统目录移动到 SSD 驱动器(PCI Express,因此与 NVME 驱动程序连接)。系统安装在 HDD 上,我真的不想重新安装它...

编辑:重要!此问题仅发生在/usrdir 上。我对 dir 也做了完全相同的操作/var,一切正常。

我尝试从 Rescue CD 执行此操作,如下所示:

# mount root (hdd, source)
mkdir /mnt/root
mount /dev/sda2 /mnt/root
# mount faster drive (ssd, destination)
mkdir /mnt/ssd500pci
mount /dev/nvme0n1p1 /mnt/ssd500pci

# move old
mv /mnt/root/usr /mnt/root/usr.old

# copy to new location
rsync -aH --info=progress2 /mnt/root/usr.old/ /mnt/ssd500pci/usr

# create mount point
mkdir -p /mnt/root/usr

然后在 fstab 中我有类似这样的内容:

UUID=abcdef-1 / ext4 defaults,noatime 0 0
UUID=abcdef-2 /boot/efi vfat defaults 0 0

# my ssd
UUID=abcdef-3 /mnt/ssd500pci ext4 defaults,noatime 0 0

# swap
/mnt/ssd500pci/swap.img none swap sw 0 0

# bindings
/mnt/ssd500pci/usr /usr none bind 0 0

重启后,我收到一条对我来说毫无意义的消息:“意外重新安排离线 CPU#7”(见图)。

请注意,当我返回usr.oldusr并删除 fstab 中的绑定)时,一切正常。

Ubuntu 崩溃:离线 CPU#7 意外重新安排

PS:起初我实际上尝试在一个工​​作系统上执行此操作(该系统应该按照这个答案工作:https://serverfault.com/a/597780/62024),结果基本一致。

另请注意,每次尝试时我都会删除/mnt/ssd500pci/usr并尝试再次复制(以确保硬链接或陈旧文件没有问题)。

答案1

我遇到过同样的情况,Ubuntu 20.04 LTS 无法启动,因为我更改了目录,/usr但它是从 SDD 更改为 HDD,而不是你的情况,但我在启动时遇到了同样的问题。

我的情况是/usr/其他分区移动到其他分区,例如/homeHDD 中的分区。不幸的是,我搜索过的许多关于“如何移动目录”的论坛都没有解决我的问题:他们的大多数方法都会导致分区挂载失败或内核致命错误。

其中有一两个好的答案问题和这个问题但正如我所说,他们没有解决我的问题。

符号链接在 Boot 中不起作用,如果目录是符号的,它将会失败。

可能的解释

对于为什么会发生这种情况,我没有确切的答案,但我确实有一些导致操作系统无法启动的推论:

  • 这是“现状”。没有 你就无法启动/usr没有 /usr 的引导会损坏Linux问题
  • /usr包含大多数用户实用程序和应用程序,但它有一些对于“跟随”启动很重要的文件夹,例如/usr/sbin/usr/lib。如果移动/usr它将在内核中发生错误...
  • initrd可能是导致错误的原因之一,也许也应该改变,或者不改变。在这个问题上发表评论

我愿意接受更好的解释和更正,但这是我经过多日的测试和解决这个问题后得出的结论。

可能的解决方案

我找到了两个解决方案,但我选择了第二个:

  1. 您甚至可以尝试本页提供的解决方案没有 /usr 的引导会损坏这解释了“现状”论点。

  2. 创建新分区,安装 Ubuntu 并使用可启动 USB 为每个所需分区选择目录。

是的,您不想重新安装操作系统,但这是我在经过这么多头痛和浪费的时间之后发现的。

  1. 备份您的文件。
  2. 确保您有足够的空间来创建新的分区,然后创建您想要的分区。
  3. 有一个可启动的 Ubuntu USB。
  4. 重新安装您的 Ubuntu。
  5. 安装 Ubuntu 时,你将处于安装类型步骤并选择Something else选项。
  6. 下一步是我们想要的,您可以定义哪些分区将加载/usr/opt/var目录。您还可以在选择时更改分区设置。*
  7. 继续安装。

*我不确定是否可以在不格式化特定分区(例如分区)的情况下安装 Ubuntu /home。我也不知道不格式化特定分区是否会在将来导致问题。就我而言,我格式化了所有我想要的分区。

当然这需要一段时间,但我希望它能够得到解决,并且可以帮助您和其他人。

相关内容