当确实有空间时,OpenWRT 中出现“设备上没有剩余空间”错误

Dav*_*ave 4 disk-space 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% /
Run Code Online (Sandbox Code Playgroud)

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

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

小智 5

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

如果这是您想要的,可以通过以 root 身份发出来增加可用 inode 的数量:

mount -o remount -o nr_inodes=7200 /tmp
Run Code Online (Sandbox Code Playgroud)

通常,文件系统中使用的 inode 数量是微不足道的,以至于它不会被“df”考虑在内。