当 FS 处于读/写状态时,直接写入文件的范围是否安全?

当 FS 处于读/写状态时,直接写入文件的范围是否安全?

给定 ext4 文件系统上的任何文件,都可以(使用filefrag -v)获取该文件在底层块设备上的实际偏移量+长度列表。

当文件系统以读写方式安装时,打开设备并向它们写入是否安全?它会导致 fs 损坏吗? 我这么问是因为我将实现一个替代loop驱动程序,它将完全绕过文件系统层,因此具有更好的性能。

如果我没记错的话,交换文件就是这样实现的。如果说的有什么不对的地方请指正。
答案是否依赖于文件系统?如果文件突然被删除,并且这些偏移量被某些应用程序重用,会发生什么情况?元数据
最后,有没有办法锁定文件,防止其被e4defrag或类似的东西重新定位?防止文件被删除(位于内核空间)的最佳方法是什么?是否有一些内核内部结构可以用来获取文件范围列表​​?

答案1

如果写入的是仅有的到文件的块,那么它就不会损坏 ext4 文件系统。然而,代码中的某些错误肯定存在更大的风险可以损坏文件系统,这对于仅使用文件映射的常规循环设备来说不会发生。

问题是直接写入块设备是否真的会对性能产生影响?

您可以通过将文件标记为不可变来防止文件被删除chattr +i FILENAME

相关内容