我在 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”来计算。