给定 ext4 文件系统上的任何文件,都可以(使用filefrag -v
)获取该文件在底层块设备上的实际偏移量+长度列表。
当文件系统以读写方式安装时,打开设备并向它们写入是否安全?它会导致 fs 损坏吗?
我这么问是因为我将实现一个替代loop
驱动程序,它将完全绕过文件系统层,因此具有更好的性能。
如果我没记错的话,交换文件就是这样实现的。如果说的有什么不对的地方请指正。
答案是否依赖于文件系统?如果文件突然被删除,并且这些偏移量被某些元数据重用,会发生什么?
最后,有没有办法锁定文件,防止其被e4defrag
或类似的东西重新定位?防止文件被删除(位于内核空间)的最佳方法是什么?是否有一些内核内部结构可以用来获取文件范围列表?
如果仅写入文件的块,则不会损坏 ext4 文件系统。但是,代码中的某些错误可能会损坏文件系统,这肯定存在更大的风险,而对于仅使用文件映射的常规循环设备来说,这种情况不会发生。
问题是直接写入块设备是否真的会对性能产生影响?
您可以通过将文件标记为不可变来防止文件被删除
chattr +i FILENAME
。