我不小心填满了我的硬盘并且无法恢复。
我已经删除了好几G的文件,但是df
命令仍然显示磁盘已满,甚至简单的echo hello > aFile
结果都会出现错误write error: No space left on disk
。这是相关行的命令输出df
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/mint--vg-root 441G 421G 0 100% /
通过阅读其他类似的问题/答案,我知道Linux 不会删除属于活动进程的文件,即使它们从文件系统中消失。大多数接受的解决方案涉及重新启动保持文件打开的进程或重新启动计算机。我删除文件后重新启动了几次,但仍然遇到同样的问题。使用所有 inode 可能会导致类似的错误但我的 inode 使用率为 18%。
我还知道系统为root用户预留空间并且df
没有准确地报告这一点。就我而言,磁盘大小和已用磁盘大小之间的差异是 20G。我可以以 root 身份写入文件,但我不知道如何利用这一事实。
如果相关的话,我的系统设置为在 Linux Mint 上使用 KDE。我只有一个 LUKS 加密的 ext4 分区。
磁盘空间已满,导致 X 服务器无法启动,因为系统无法写入锁定文件,所以我最终有三个选择:
- 通过 TTY1 登录终端,
sudo startx
它启动了 Cinnamon 图形环境,- 启动 Live CD/USB。
我应该怎么做才能恢复磁盘空间?
答案1
没有tune2fs
.
我还知道系统为 root 用户保留空间 [...]。我可以以 root 身份写入文件,但我不知道如何利用这一事实。
默认的 5% 并不意味着“root 的 5%”,它的意思是“root 的最后 5%,不管剩下的谁使用”。因此,如果 root 设法用完这 5% 中的至少一部分,那么您需要删除足够的文件(root 的或任何人的文件),以实际将可用空间(可供 root 使用)提高到阈值以上;只有这样,非 root 用户才会看到剩余空间并能够使用它。
您删除的内容显然还不够。删除更多。
请注意,如果您删除普通用户的文件,并且root再次占用保留空间,并且您删除了其他一些普通用户的文件,那么root将能够将由此产生的可用空间作为保留空间再次。 root 过去使用过保留空间并且此后没有释放任何内容并不重要。
我写了“5%”,因为这是默认值。该结论适用于任何非零保留空间。