我遇到了非常常见的“根分区已满”的情况。我的硬盘已分配 100%。我的主分区 (ext4) 有足够的空间可以用于我的完整根分区 (rootfs)。
对于这种需要在缩小 ext4 分区(我的主分区)后扩展根分区(rootfs)的场景,是否有一个令人惊叹的分步教程?
答案1
很大程度上取决于您想要如何调整它的大小以及您的分区是如何组织的。增大分区(将其末端向磁盘下方移动)很容易,而缩小文件系统(尤其是通过将其分区起始位置移近其末端)则很困难。如果你想就地完成几乎不可能。你必须:
- 备份要收缩的分区到另一个驱动器(或者 - 如果你足够勇敢 - 至少到一个你根本不会碰的分区)
- 运行分区sw(fdisk/gdisk/parted/...):
- 删除您需要增长的分区后面的分区
- 移动上一个分区的末尾 - 您的程序可以一步完成此操作,或者您必须记下它的起始位置,将其删除并以完全相同的起始位置重新创建它。另请注意,某些程序可能倾向于格式化新创建的分区,在这种情况下,您最终将进行全新的重新安装。
- 在剩下的较小空间中创建下一个分区
- 在增长的分区上增长文件系统。
- 在新的较小分区上创建新的文件系统并从备份中复制数据。
也就是说,我会提出其他建议(除了重新安装之外,这不必是那混乱,前提是您正确保存了系统配置):
- 检查空间问题是否不是由溢出
/tmp
或/var
目录引起的,并可能进行一些清理; - 检查您是否有一些不再使用的死包 - 这些只是可能的安全风险;
- 之后,检查 rootfs 的某些重要部分是否可以移动到单独的分区 - 可能的候选者是:
/tmp
,/var
,/opt
,/usr/local
。如果情况确实如此,请创建一个单独的文件系统,在 中创建一个目录/
,将文件系统安装到那里,将有问题的子目录移动到那里,然后将它们绑定安装到以前的位置(例如mount --bind /new_partition/var /var
)。请记住将所有需要的安装添加到/etc/fstab
.如果您只移动一个子树,您可以直接将其安装到原来的位置,而不会弄乱绑定安装。
编辑:
您还可以将根分区的内容移动到另一个更大的分区 - 唯一需要更改的是对根分区(作为设备)的引用:
/etc/fstab
(或用于安装文件系统的任何其他文件)引导加载程序配置
a) 从哪个分区加载内核和 initrd(除非您有一个
/boot
不打算触及的单独文件系统)b)
root=
告诉 kerenl wha 挂载为的内核选项/
(不确定 initrd 是否会出现这种情况,但必须在某个地方进行更改)。
所有这些操作都不应该在您打算更改的系统上完成(尤其是移动
/tmp
和/或移动/var
到不同的文件系统 - 守护程序可能会将其文件保留在那里,并且可能会损坏正在运行的系统) - Live CD 或其他最小的文件系统安装应该可以解决问题。