为稀疏文件支持的循环设备启用直接 I/O 是否安全?

为稀疏文件支持的循环设备启用直接 I/O 是否安全?

我想要一个稀疏文件,并将其安装为文件系统。如果性能开销可以忽略不计,那就太好了,但前提是这不会带来数据丢失的风险!使用直接 I/O 循环设备挂载稀疏文件是否安全?

一方面,LWN 上的此公告看起来鼓励用户在文件支持的循环设备上启用直接 I/O,这太棒了!

另一方面,ext4 有关直接 I/O 的 wiki 文章状态:

...如果 O_DIRECT 写入需要分配块会发生什么;例如,因为写入正在扩展文件的大小,或者写入系统调用正在写入稀疏文件的“洞”,其中先前尚未分配块。某些 Linux 实现会回退到缓冲 I/O,以便数据通过页面缓存。当前的实现会等待 I/O 被发布(尽管不一定有屏障来保证数据被存储设备写入稳定存储)。然而,Linux 不会等到与块分配相关的元数据被提交到文件系统;因此,如果系统在分配写入完成后崩溃,则无法保证应用程序在系统重新启动后可以访问数据......

相关内容