Linux:设备错误,剩余空间为 50%,不可用

Linux:设备错误,剩余空间为 50%,不可用

在花了一天时间埋头苦干之后,我希望得到一些帮助。

我在 Fedora 14 上运行 Squid-Proxy。即使我尝试,touch /tmp/foo也会收到“设备上没有剩余空间”错误。我已经运行了fsck。如果我删除一个 1MB 的文件,我可以再次存储 1MB 的数据,但不能超过这个数。值得注意的是,我有足够的可用空间:

df输出:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             16311208   7614872   7867768  50% /
tmpfs                  1028548         0   1028548   0% /dev/shm
/dev/sda1               198337     55345    132752  30% /boot
/dev/sdb1             25803036  19407324   5084996  80% /mnt/squid-cache

有人知道我可以尝试什么来“回收”可用空间吗?

答案1

我猜测您用完了 inode 而不是磁盘块 - 也就是说,您对文件系统可以容纳的文件数量有限制,而不是对总数据量有限制。

您可以用来df -i检查这一点。

答案2

Linux 为超级用户保留了一定比例的块。通常设置为 5%。50% 非常高。您tune2fs -m可以更改该比例。

答案3

如果您使用 btrfs,则可能会发生这种情况,在这种情况下,这些补救措施将不起作用。

在走了很多错误的路之后,我终于在开始搜索后找到了正确的方向

btrfs 没有

并得到

btrfs 设备上没有剩余空间

作为第一个完成。这导致了BTRFS 问题 wiki。这显然是一个常见的问题。

但即便如此,解决问题也并非易事。我能够通过启动恢复模式、选择安装文件系统,然后降级为 root 来运行正确的实用程序。

维基百科上说运行 btrfs balance,但这并不适用于所有文件系统,最终我找到了自己的方法这里(这也是第二个搜索结果。)

如果你的文件系统真的满了,那么甚至 balance 也不会运行。或者它只会在 -dusage 值较小的情况下运行。

在这种情况下,配方位于帖子的底部。我发现它令人困惑,一开始就拒绝将其作为解决方案,因为发帖人删除了快照,我认为这是必不可少的,而且由于我没有拍摄快照,所以我认为它不适用。但事实确实如此。快照步骤对某些人来说可能很重要,但对我来说并不重要。

总体而言,补救措施如下:

  1. 创建一个大文件
  2. 使其成为循环设备
  3. 将设备连接到无法平衡的 fs
  4. 运行平衡
  5. 分离设备
  6. 删除该文件以恢复该空间

引用的帖子给出了命令行步骤。

相关内容