我正在为嵌入式设备实现一个简单的日志文件处理程序。我不能使用syslog,因为它已经被保留用于其他用途。设备的SSD大小有限,因此存在使用所有磁盘空间的日志文件的实际风险,这将使设备崩溃。
我能保证在写入后至少有X剩余磁盘空间的最便宜方式是什么?
答案 0 :(得分:0)
在Linux上,找出剩余磁盘空间量的唯一方法是statfs(2)
系统调用。如果这对你来说太慢了,我认为你只需要不那么频繁地调用它,并假设你没有在你填满太多的电话之间记录这么多。
在许多现代文件系统上,通常很难尝试映射特定写入后剩余的可用空间少。您不仅在分配时具有块粒度(或者在文件系统支持尾部打包的情况下没有),但在某些文件系统上,您可能还会受到重复数据删除或延迟分配后突然的写时复制分配的影响。零块和诸如此类的东西。试图过于聪明,在文件系统之间切换时一定会遇到麻烦,因此我建议在可用空间上设置一些合理的低水位标记,并在到达后停止写入更多数据。