Linux 无修改时间 (nomtime)

Linux 无修改时间 (nomtime)

有没有办法禁用文件系统的 mtime?

有一个与文件系统无关的 noatime 选项,但没有“nomtime”。此外,在 ext4 和/或 btrfs 的文件系统特定文档中,我找不到这个选项。

这个存在吗?

答案1

内核中没有这个选项。

包括/linux/statfs.h

#define ST_NOATIME  0x0400  /* do not update access times */
#define ST_NODIRATIME   0x0800  /* do not update directory access times */
#define ST_RELATIME 0x1000  /* update atime relative to mtime/ctime */

我想不出任何功能此选项的用途除了测试目的(您的用例)之外。

您的选择是:

  • 修补内核以添加此选项
  • 修补客户端软件以不响应修改时间。

答案2

我发现这里有一个S_NOCMTIME标志include/linux/fs.h

#define S_NOCMTIME    128     /* Do not update file c/mtime */

看起来它能完成需要做的事情。虽然它显然没有向用户公开,但有使用它的示例(只需 grep 即可),因此应该能够为相应的文件系统破解一个小补丁。

实际用例是,在将小块数据写入固定大小的循环缓冲区时避免 inode 更新(例如,避免在基于 NAND 的存储上进行不必要的擦除循环)。

相关内容