昨天,我在 /opt 下复制了一个新软件后,Debian 中弹出一条消息,说我的根分区已满(0 MB 可用)。因此,我将文件夹移回另一个分区以暂时解决该问题。
我使用 Debian 安装 USB 从 /dev/nvme0n1p9 释放了一些空间,现在尝试使用此释放的空间扩展根分区。
我的 HP 笔记本电脑的 BIOS 没有“传统”启动选项,因此我无法使用可启动的 GParted USB 记忆棒来增加根分区的大小。
我搜索了一下,看来扩展根分区很棘手。
我想确认几件事:
- 扩展根分区是否意味着将位于此之后的分区进一步推到磁盘上,或者我可以使用磁盘末尾的未分配空间并将根分区一分为二吗?
- 我可以随意移动这些分区而不产生任何后果吗?
- 就我而言,如果可能的话,您将如何解决这个问题?
- 如果不是,我是否注定要重新安装操作系统?
- 我可以通过在此根分区之外安装新应用程序来绕过此限制吗?
操作系统:GNU/Linux Debian 11(靶心)
谢谢。
- 编辑 - 根分区使用情况的详细信息
根据 @oldfred 的评论,这里是根分区的最大文件夹。
最大的用途是 texlive,但如果可能的话,我不想卸载它。
答案1
- 扩展根分区是否意味着将位于此之后的分区进一步推到磁盘上,或者我可以使用磁盘末尾的未分配空间并将根分区一分为二吗?
是的,就是这个意思。分区从头到尾必须始终是连续的。 LVM 逻辑卷可以使用多个不连续的磁盘块,但将现有系统转换为 LVM 并非易事。
- 我可以随意移动这些分区而不产生任何后果吗?
如果您/etc/fstab
被写入使用分区 UUID 而不是其设备名称,或者如果gparted
不会重新排列表中的条目以匹配它们在磁盘上的顺序,那么可以。
- 就我而言,如果可能的话,您将如何解决这个问题?
(正如你最终所做的那样,正如我写这篇文章时你自己的答案出现的那样。)
首先,将位于您想要扩展的分区“右侧”的所有分区尽可能向右移动。
之后,启动到已安装的操作系统以验证一切是否仍然有效。
然后引导回外部介质以扩展根分区。
- 如果不是,我是否注定要重新安装操作系统?
根本就没有注定。只需要一点点缓慢而仔细的工作即可。
- 我可以通过在此根分区之外安装新应用程序来绕过此限制吗?
这当然是绕过它的一种方法,但对于通过操作系统的包管理器安装的程序来说可能很难实现。对于第三方软件来说,这实际上可能很容易。
另一种可能的方法是在根文件系统上找到目录树的某个分支,该分支占用相当大的空间,但对于早期启动过程不是必需的,并将其移动到另一个文件系统,然后创建一个符号链接,以便它仍然可以使用原始路径名访问。例如,您可以轻松移动/usr/share/doc
到不同的文件系统:
mv /usr/share/doc /new/filesystem/mountpoint/
ln -s /new/filesystem/mountpoint/doc /usr/doc
但是,您拥有的文件系统越多,您所需要的文件系统中没有可用空间的风险就越大。这就是为什么如果分区对于您的要求来说显然太小,那么扩展分区可能是值得的。
答案2
我尝试使用 Ubuntu Live CD 上的 GParted,它按预期工作。
我分两步完成:
- 首先,使用未分配的空间将所有非根分区移动到右侧
- 然后,扩展根分区
我在第一步后重新启动,确保一切仍然正常,并且知道可以逆转第一步。