OpenWRT 中出现“设备上没有剩余空间”错误,但实际上还有空间

OpenWRT 中出现“设备上没有剩余空间”错误,但实际上还有空间

我在 OpenWRT 上运行应用程序时遇到了问题,我将文件写入 RAM 中的 /tmp。尽管df报告使用率约为 0%:

root@OpenWrt:/tmp# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                     576       212       364  37% /
/dev/root                 2560      2560         0 100% /rom
tmpfs                    14680        48     14632   0% /tmp
tmpfs                      512         0       512   0% /dev
/dev/mtdblock3             576       212       364  37% /overlay
overlayfs:/overlay         576       212       364  37% /

在我写入 3,640 个 0 字节文件后,出现错误“设备上没有剩余空间”。

有人能解释一下为什么会发生这种情况吗?在现实世界中,我不会通常情况下有这样的情况,因为我会删除这些文件,但无论如何我都需要处理这种情况。

答案1

0 字节文件仍使用空间;每个文件至少使用一个 inode。根据 tmpfs 文档,tmpfs 的默认 inode 数量 (nr_inodes) 是物理 RAM 页数的一半(通常为 4K)。我怀疑您的设备上有大约 8MB 的内存?

如果您愿意,可以以 root 身份执行以下命令来增加可用的 inode 数量:

mount -o remount -o nr_inodes=7200 /tmp

通常,文件系统中使用的 inode 数量非常小,因此无法用“df”来计算。

相关内容