挂载在 /disk 的 xfs 文件系统支持 2038 年之前的时间戳 (0x7fffffff)

wil*_*ilx 6 kernel xfs 20.10

我在内核日志中注意到了这一点(20.10):

xfs filesystem being mounted at XYZ supports timestamps until 2038 (0x7fffffff)
Run Code Online (Sandbox Code Playgroud)

这是 XFS 文件系统的 V4。所以我想,我应该买一张新磁盘,然后用 20.10 到 V5 版本的 XFS 进行格式化,这样问题就可以解决。

我已经这样做了,但内核仍然抱怨:

[ 1361.140829] XFS (nvme0n1p2): Mounting V5 Filesystem
[ 1361.143400] XFS (nvme0n1p2): Ending clean mount
[ 1361.144543] xfs filesystem being mounted at XYZ supports timestamps until 2038 (0x7fffffff)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我认为这会在 XFS V5 中得到修复,但事实并非如此。

我说得对吗?在任何已发布的 Ubuntu 版本中都没有修复这个问题?

CR.*_*CR. 10

内核 5.10 中引入了 XFS 功能“bigtime”,支持直到 2486 的日期。Ubuntu 21.04 使用内核 5.11,因此如果您使用该版本或更高版本的 Ubuntu,则应该进行设置。最新的 LTS Ubuntu 20.04 仍然使用太旧的内核。当然,这会随着时间而改变。

要使用此功能,您必须拥有 v5.10 或更高版本的内核以及类似的新版本的 mkfs.xfs。

创建文件系统时执行以下操作(mkfs.xfs 5.15 及更高版本现在默认设置此设置):

mkfs.xfs -m bigtime=1 device
Run Code Online (Sandbox Code Playgroud)

要转换现有文件系统(必须卸载),请执行以下操作:

xfs_admin -O bigtime=1 device
Run Code Online (Sandbox Code Playgroud)

Arch Linux XFS wiki对此进行了解释。另外,根据手册页,请确保xfs_repair -n在转换现有文件系统之前在文件系统上运行。这会检查以确保没有错误。如果发现错误,则不要转换文件系统。

由于转换现有文件系统很容易,我将等到接近 2038 年才转换我的旧文件系统。这留下了很多时间来解决任何错误。到那时我可能已经在新硬件上重新创建了所有文件系统。