首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以删除稀疏文件的部分?

问是否可以删除稀疏文件的部分?
EN

Unix & Linux用户
提问于 2020-03-20 15:34:05
回答 1查看 548关注 0票数 2

我在处理内存映射文件。每个文件都使用截断分配(请参阅man 2截断)。然后是内存映射,应用程序根据需要将条目写入文件的各个部分。这部分很简单。

我对如何从磁盘中删除条目有问题,因为它们不再需要。这是为了节省磁盘空间,而不是任何GDPR“必须删除”。条目不一定会随着时间的推移而过期,但是缺少使用。因此,虽然文件是按照创建条目的顺序生成的,但它们不能按照相同的顺序被删除。

我认为有三种选择:

  1. 研究删除稀疏文件的部分,使其更加稀疏(这个问题!)
  2. 将过期条目保留在磁盘上,直到文件中的每个条目都过期为止。最糟糕的情况是磁盘上的几个额外数据TB。
  3. 想出一种机制来复制“终身”条目(旧的,但仍在使用)。这比听起来要复杂得多,因为它需要处理数百万的交叉引用。

Linux中是否有一种删除稀疏文件部分的方法,还是这种机制对应用程序不透明?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-03-20 15:41:18

在Linux下,您可以使用fallocate()‘S FALLOC_FL_PUNCH_HOLE标志(结合FALLOC_FL_KEEP_SIZE)在文件中穿孔:

代码语言:javascript
复制
fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, offset, length);

在支持此操作的文件系统上,如果偏移量和长度组合覆盖整个块,则这将增加文件的稀疏性;其他任何操作都将仅为零。在不支持此操作的文件系统上,将返回一个错误。

另见Linux下管理稀疏文件的函数是什么?

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/573942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档