当前位置: 首页>>技术教程>>正文


partitioning – 如何将/usr 移动到新分区?

问题描述

我的 /usr 文件夹需要移动到新分区。如何在不删除内容的情况下做到这一点?

这可以在 Ubuntu 运行时完成,还是我需要为此使用 LiveCD?

最佳方法

使用 Live CD 是最安全的,但您可以这样做:

  • 将所有文件复制到新分区,确保在执行此操作时 /usr 的内容不会更改。

  • 编辑 /etc/fstab 以便在下次重新启动时安装 /usr

  • 重启

  • 删除旧文件

有关每个步骤的详细信息,请参见下文。

请注意,您不能在运行时将新分区挂载到 /usr 上,因为 /usr 中将打开很多文件。

复制文件

我会使用 cp -a-a 是存档选项。从 man page

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

编辑 /etc/fstab

您需要知道新分区的 UUID。您可以通过以下方式查看映射:

$ ls -l /dev/disk/by-uuid/

然后将此行添加到 /etc/fstab

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

将 UUID 更改为您的 UUID,并将 ext4 更改为您正在使用的文件系统类型 – 如果您设置了分区,您应该知道这一点。

删除旧文件

重新启动后,根分区上 /usr 中的旧文件将被挂载在 /usr 上的新分区隐藏。但是我们可以使用一些 mount bind trickery 来获取旧文件,然后删除它们。

$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt

但是一些轻微的输入错误(例如,当您只输入 sudo rm -rf /mnt 时按 Enter 键)可能会导致灾难,所以如果您对自己正在做的事情非常有信心,我只会使用这种方法,真的无法处理任何停机时间,或者没有对机器的物理访问,因此无法从 live CD 或 live USB memory 棒启动。

次佳方法

由于使用的大多数库都在 /usr 中,因此我不建议在运行 Ubuntu 时移动此目录。事实上,当您尝试执行此操作时,您可能会收到错误消息。因此,最好使用 LiveCD。

您可以使用多种可能性来移动/复制文件 cp、rsync 等,以确保创建任何符号链接而不仅仅是复制。 cp 和 rsync 都有这方面的选项。

将文件移动到另一个分区后,您需要在 /etc/fstab 中添加另一个挂载以将新分区挂载到 /usr。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12565.html,未经允许,请勿转载。