我在处理内存映射文件。每个文件都使用截断分配(请参阅man 2截断)。然后是内存映射,应用程序根据需要将条目写入文件的各个部分。这部分很简单。
我对如何从磁盘中删除条目有问题,因为它们不再需要。这是为了节省磁盘空间,而不是任何GDPR“必须删除”。条目不一定会随着时间的推移而过期,但是缺少使用。因此,虽然文件是按照创建条目的顺序生成的,但它们不能按照相同的顺序被删除。
我认为有三种选择:
Linux中是否有一种删除稀疏文件部分的方法,还是这种机制对应用程序不透明?
发布于 2020-03-20 15:41:18
在Linux下,您可以使用fallocate()‘S FALLOC_FL_PUNCH_HOLE标志(结合FALLOC_FL_KEEP_SIZE)在文件中穿孔:
fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, offset, length);在支持此操作的文件系统上,如果偏移量和长度组合覆盖整个块,则这将增加文件的稀疏性;其他任何操作都将仅为零。在不支持此操作的文件系统上,将返回一个错误。
https://unix.stackexchange.com/questions/573942
复制相似问题