哪些文件系统支持 C 属性?

哪些文件系统支持 C 属性?

在 BTRFS 文件系统上,您可以使用 file 属性禁用文件的 CoW C,如下所示:

chattr +C filename

我预计这也适用于 ZFS,因为它也是一个 CoW 文件系统,但无法设置该属性(也许 ZFS 没有 CoW 就无法运行)。

那么哪些文件系统完全支持C文件属性呢? XFS 或 BCacheFS 等其他文件系统是否也遵循该标志,或者 BTRFS 是唯一这样做的文件系统吗?


上下文:我创建了一个安装虚拟机的程序,当它检测到主机文件系统是 BTRFS 时,它会为包含虚拟磁盘映像的文件夹禁用 CoW(因为否则会引入性能问题)。我将相同的代码应用于 ZFS、XFS 和 BCacheFS,但必须删除 ZFS,因为它无法设置属性。现在我怀疑是否也需要排除 XFS 和 BCacheFS。

答案1

chattrC属性对应于FS_NOCOW_FL内核 UAPI 中的标志(定义linux/fs.h)。所以支持此属性的唯一文件系统是那些处理该标志:目前是 BTRFS 和 F2FS。

还要注意,对于检索和设置属性,文件系统支持可能有所不同。没有立即检查 BTRFS 的方法,您需要阅读fs/btrfs/ioctl.c— 它支持设置和检索C属性。对于 F2FS 来说是更容易看到: 该C属性无法设置,只能使用识别固定文件(无法进行垃圾收集的文件 — F2FS 是日志结构文件系统)。

相关内容