Linux xfs文件系统stat命令Birth字段为空的原因探究

在Linux平台找出某个目录下创建时间最早的文件,测试验证脚本结果是否准确的过程中发现一个很有意思的现象,stat命令在一些平台下Birth字段有值,而在一些平台则为空值,如下所示:

RHEL 8.7下, XFS文件系统

[mysql@mysqlu02 ~]$ more /etc/redhat-release 
Red Hat Enterprise Linux release 8.7 (Ootpa)
[mysql@mysqlu02 ~]$ touch test.txt
[mysql@mysqlu02 ~]$ stat test.txt
  File: test.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd05h/64773d    Inode: 144         Links: 1
Access: (0644/-rw-r--r--)  Uid: (  801/   mysql)   Gid: (  800/   mysql)
Access: 2023-05-06 17:09:44.428050549 +0800
Modify: 2023-05-06 17:09:44.428050549 +0800
Change: 2023-05-06 17:09:44.428050549 +0800
 Birth: 2023-05-06 17:09:44.428050549 +0800
Linux xfs文件系统stat命令Birth字段为空的原因探究

RHEL 7.9 XFS文件系统

[oracle@KerryDB ~]$ more /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.9 (Maipo)
[oracle@KerryDB ~]$ touch test.txt
[oracle@KerryDB ~]$ stat test.txt
  File: ‘test.txt’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd03h/64771d    Inode: 4238838     Links: 1
Access: (0644/-rw-r--r--)  Uid: (  700/  oracle)   Gid: (  600/oinstall)
Access: 2023-05-06 17:03:42.964517675 +0800
Modify: 2023-05-06 17:03:42.964517675 +0800
Change: 2023-05-06 17:03:42.964517675 +0800
 Birth: -
[oracle@KerryDB ~]$
Linux xfs文件系统stat命令Birth字段为空的原因探究

stat命令的Birth字段表示文件的创建时间,该属性是ext4的新功能(当然也适用于xfs文件系统),也称为crtime或btime,但是当前两个测试环境的文件系统为xfs,之前也在xfs文件系统中测试过,发现xfs不支持creation time. 但是从xfs v5开始,xfs已经支持creation time,文档[1]中已有阐述,如下所示:

/* version 5 filesystem (inode version 3) fields start here */
     __le32                    di_crc;
     __be64                    di_changecount;
     __be64                    di_lsn;
     __be64                    di_flags2;
     __be32                    di_cowextsize;
     __u8                      di_pad2[12];
     xfs_timestamp_t           di_crtime;
     __be64                    di_ino;
     uuid_t                    di_uuid;

};

*di_crtime*::
Specifies the time when this inode was created.

但是上面这个差异现象,还是让我有点好奇,因为两个测试环境对应的xfs版本都是v5,如下所示。

KerryDB这台机器的xfs版本信息:

Oracle用户:

$ uname -r
3.10.0-1160.80.1.el7.x86_64

$
 dmesg | grep -iE 'xfs.*\s+mounting' | head -1
[    4.041026] XFS (dm-0): Mounting V5 Filesystem

root用户:

# xfs_db -r /dev/mapper/vg00-home
xfs_db> version
versionnum [0xb4b5+0x18a] = V5,NLINK,DIRV2,ATTR,ALIGN,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE
xfs_db>

mysqlu02这台机器的xfs版本信息:

mysql用户:

$ dmesg | grep -iE 'xfs.*\s+mounting' | head -1
[    7.654324] XFS (dm-0): Mounting V5 Filesystem

root用户:

# xfs_db -r /dev/mapper/vg00-home
xfs_db> version
versionnum [0xb4b5+0x18a] = V5,NLINK,DIRV2,ATTR,ALIGN,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE,FINOBT,SPARSE_INODES,REFLINK
xfs_db>

那么到底是什么原因导致。Google搜索了相关资料,原来,如果stat命令查看xfs文件系统的文件时,如果要Birth字段不显示空置,必须满足几个条件,一个是xfs的版本为v5,另外,对操作系统内核版本也有要求(如下所示)

stat “now prints file creation time when supported by the file system, on GNU Linux systems with glibc >= 2.28 and kernel >= 4.11.”

KerryDB这台服务器内核信息如下所示

$ uname -r
3.10.0-1160.80.1.el7.x86_64

mysqlu02这台服务器的内核信息如下所示:

$ uname -r
4.18.0-425.3.1.el8.x86_64

如上所示,stat命令Birth字段为空置的操作系统内核版本为3.10.0,不满足条件kernerl >=4.11 所以stat命令显示空值。

参考资料

[1]

1: https://git.kernel.org/pub/scm/fs/xfs/xfs-documentation.git/tree/design/XFS_Filesystem_Structure/ondisk_inode.asciidoc


原文链接:https://www.cnblogs.com/kerrycode/p/17389560.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux xfs文件系统stat命令Birth字段为空的原因探究 - Python技术站

(0)
上一篇 2023年5月11日
下一篇 2023年5月11日

相关文章

  • Linux xhost命令

    Linux xhost命令详解 xhost命令用于授权远程主机或指定的用户使用当前X会话,以便他们可以在当前X会话中启动GUI应用程序。 命令语法 xhost [+-] [hostname] 选项说明 +: 添加主机名或用户到允许访问列表 -: 从访问列表中删除主机名或用户 使用示例 示例一:允许所有主机访问当前X会话 xhost + 执行该命令后,所有主机…

    Linux 2023年3月28日
    00
  • ubuntu 安装linux 下vmVMware tools 步骤及问题解决方法

    下面是详细讲解“Ubuntu安装Linux下VMware Tools步骤及问题解决方法”的完整攻略: 安装步骤 步骤1:安装VMware Tools 在Ubuntu虚拟机上,打开终端,执行以下命令安装VMware Tools: sudo apt-get update sudo apt-get install open-vm-tools-desktop 步骤2…

    Linux 2023年5月24日
    00
  • Linux下数据库备份恢复过程

    1. 远程进入Linux服务器. 2. 一般登录的是root用户, 第一步切换到Oracle用户, 命令: su – oracle 3. 查看服务器上面数据库的监听的状况 lsnrctl 之后输入命令 status 说明至少有两个数据库实例正在运行 4. 查看Oracle用户的环境变量 命令 more ~/.bash_profile 结果   里面没有 OR…

    Linux 2023年4月11日
    00
  • VMware虚拟机安装CentOS-5.0 linux图文教程

    VMware虚拟机安装CentOS-5.0 linux图文教程 如果你想在自己的电脑上体验linux系统,但又不想直接在电脑上进行安装和配置,可以考虑使用VMware虚拟机来安装CentOS-5.0 linux系统。下面将详细讲解如何进行安装和配置。 步骤一:下载VMware和CentOS-5.0 首先需要下载并安装VMware虚拟机软件和CentOS-5.…

    Linux 2023年5月24日
    00
  • 如何在Linux系统上使用管道和重定向?

    使用管道和重定向是Linux系统中非常重要的技能,特别是在终端界面操作时,可以大幅提高效率。下面是在Linux系统上使用管道和重定向的详细攻略。 管道 管道指的是将一个命令的输出结果作为另一个命令的输入参数,通过使用管道符号“|”实现。 管道符号“|”的使用方法如下: command1 | command2 其中,command1表示第一个命令,comman…

    Linux 2023年4月19日
    00
  • Linux下编译安装python3.7

    1、安装开发工具包   sudo yum -y groupinstall “Development tools”   2、安装依赖包   sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdb…

    Linux 2023年4月11日
    00
  • 详解CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    详解CentOS6.4下PXE+Kickstart无人值守安装操作系统 PXE+Kickstart实现无人值守安装操作系统是快捷、高效的操作系统安装方式,适用于大规模、批量安装服务器操作系统。 PXE服务端的搭建 安装TFTP服务端 在CentOS 6.4中,可以使用yum进行TFTP服务端的安装。 yum install tftp-server 安装完成后…

    Linux 2023年5月14日
    00
  • linux用户下的.profile文件丢失

    登录用户时出现以下问题: #su – wqq-bash-4.1$ -bash-4.1$ 查看时发现环境变量文件丢失造成的 解决方法: # ls -la /etc/skel/  total 36drwxr-xr-x.   4 root root  4096 Jun 22  2016 .drwxr-xr-x. 126 root root 12288 Sep 13…

    Linux 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部