在修改/写入文件时在文件上使用fallocate --dig-holes安全吗?例如,在KVM来宾打开的QCOW2映像上?
发布于 2017-06-10 09:11:15
我一般会说不。如果该文件是安装到VM的映像,则可以尝试TRIM (例如fstrim -a)。严格地说,这不是一个等价的(TRIM也可以释放一些被删除的文件,而不是零),但这可能是你想要的。
在某些特定的情况下,它可能是安全的,但我不会依赖它。例如,当某些数据在没有预先分配的情况下按顺序流到文件中时,听起来可能是安全的。但是,由于这不是文档所暗示的,而且它只依赖于实现,所以我强烈建议不要这样做。
什么会出错?想象一下,app/VM将覆盖一些零块,同时运行fallocate -d。这场比赛看上去可能是:
这听起来像是在1到3之间有一个很小的时间框架,也许是真的,但是fallocate可能想要一次释放多个后续的块。(不确定,我还没有检查实现,但即使相反,将来也不能依赖它。)这会增加1到3之间的延迟,使比赛条件更有可能发生。
https://serverfault.com/questions/827805
复制相似问题