将 /usr 移动到 Linux 中的另一个设备

将 /usr 移动到 Linux 中的另一个设备

我将 OpenSuse Linux 升级到 15.3,“/”根目录剩余的磁盘空间太少了,所以我决定将 /usr 移动到新设备。我将所有文件从 /usr 复制到新设备,编辑 /etc/fstab 以更新 fstab 和 bootet 中的文件。

然后,系统将新设备用于/usr

/dev/sda3 .... .... 22% /usr

一切顺利。有一个小缺陷:根/的填充水平与以前相同。 (因为“旧”/usr 仍在设备下(安装新的 /usr 只是伪装旧的 /usr)。所以我启动到单用户模式以摆脱旧的 /usr,同时几个进程也正在 /usr 上以单用户模式工作(我没有关注),我用它卸载了它

ummount -l /usr (lazy)
Moved it to prepare it for later deletion (mv /usr /xusr)

因此 /etc/fstab 中的条目会将 /usr 挂载到 /dev/sda3 上,这样我就可以删除 /xusr

但重新启动后,一切都不起作用了,Linux 将我置于救援模式,只剩下一些命令(最重要的),我什么也做不了,不再有 fstab,没有 root,没有设备,我认为这只是原始的核心。

经过一番思考和尝试后,我将几个设备安装到 /mnt (安装工作正常)并最终找到了原始根设备并将 xusr 移回旧名称 /usr,以便内核可以在启动时找到它。

我的问题:有人如何将 /usr 移动到新位置? (我发现,这可能是不可能的,因为所有重要的系统命令都将在该区域中,并且内核将首先挂载 /usr,然后才能处理 fstab?)

是否可以?

答案1

首先,一个大警告:许多现代发行版,包括 OpenSuSE,现在正在迁移到“合并/usr”布局,您不能再创建/usr单独的文件系统:如果您尝试这样做,您将按照您所经历的方式失败。

基本上,发行版将构建所有要安装到/usr/bin和 的软件包/usr/sbin,而旧的/bin/sbin最终将分别成为/usr/bin和 的符号链接/usr/sbin/lib最终,同样如此。

由于您使用的是昨天发布的 OpenSuSE 15.3(!),它绝对比上面链接的 OpenSuse 的 UsrMerge 公告更新,这可能意味着您的拆分计划/usr 根本行不通。

(我本想添加一个链接到 OpenSuSE 15.3 新功能列表的相应部分,但 OpenSuSE 的服务器现在似乎非常繁忙:我似乎无法打开这些页面。)


您的根文件系统使用什么类型的文件系统? SuSE 是使用 BtrFS 文件系统的先驱,如果您正在使用它,那么肯定会有方法将文件系统扩展到其他分区甚至其他磁盘,无需重新启动即可在线。

基本上,如果/dev/sda3现在是一个可以安全覆盖的已卸载分区,并且您/正在使用 BtrFS,则可以执行以下两个命令:

btrfs device add /dev/sda3 /
btrfs filesystem balance /

现在,您的sda3根文件系统中应该有大约 的额外容量。

相关内容