首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件关闭后,linux如何错误地定位FALLOC_FL_KEEP_SIZE?

在文件关闭后,linux如何错误地定位FALLOC_FL_KEEP_SIZE?
EN

Stack Overflow用户
提问于 2021-04-28 08:06:57
回答 1查看 314关注 0票数 0

linux调用

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

可用于在不增加文件长度的情况下为文件结束后的文件预分配空间。(对吧?)

问:当fd关闭时,这个磁盘空间会发生什么?是否释放了额外的空间,还是与文件保持关联?

如果它仍然与文件相关联,我如何释放该空间?截断(或open()和ftruncate())是否释放空间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-30 23:43:04

问题:当fd关闭时,这个磁盘空间会发生什么?是否释放了额外的空间,还是与文件保持关联?

什么都没发生。所分配的空间独立于fd。

如果它仍然与文件相关联,我如何释放该空间?截断(或open()和ftruncate())是否释放空间?

truncate()是回收空间的主要方法。另一种方法是删除文件。您还可以尝试在文件的“过度分配”部分上使用FALLOC_FL_PUNCH_HOLE和FALLOC_FL_KEEP_SIZE调用file (),尽管这看起来很麻烦,可能会留下工件。

在遮罩下,用FALLOC_FL_KEEP_SIZE扩展文件将分配文件系统中的块,但将它们标记为未初始化。并不是所有的文件系统都支持这一点。到目前为止,这与没有保持大小标志的调用flag ()是一样的。保持大小标志的不同之处在于,它将使inode (独立于块分配)中的size字段保持不变。所有这些都发生在磁盘上;在shell中,可以使用

代码语言:javascript
复制
ls -s

代码语言:javascript
复制
stat

要观察真正分配的块计数,可以独立于使用哪个进程/fd进行fd()调用。

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

https://stackoverflow.com/questions/67296238

复制
相关文章

相似问题

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