百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

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

mhr18 2024-09-20 20:55 43 浏览 0 评论

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

RHEL 8.7下, XFS文件系统

  1. [mysql@mysqlu02~]$more/etc/RedHat-release
  2. RedHatEnterpriseLinuxrelease8.7(Ootpa)
  3. [mysql@mysqlu02~]$touchtest.txt
  4. [mysql@mysqlu02~]$stattest.txt
  5. File:test.txt
  6. Size:0blocks:0IOBlock:4096regularemptyfile
  7. Device:fd05h/64773dInode:144Links:1
  8. Access:(0644/-rw-r--r--)Uid:(801/mysql)Gid:(800/mysql)
  9. Access:2023-05-0617:09:44.428050549+0800
  10. Modify:2023-05-0617:09:44.428050549+0800
  11. Change:2023-05-0617:09:44.428050549+0800
  12. Birth:2023-05-0617:09:44.428050549+0800

RHEL 7.9 XFS文件系统

  1. [oracle@KerryDB~]$more/etc/redhat-release
  2. RedHatEnterpriseLinuxServerrelease7.9(Maipo)
  3. [oracle@KerryDB~]$touchtest.txt
  4. [oracle@KerryDB~]$stattest.txt
  5. File:‘test.txt'
  6. Size:0Blocks:0IOBlock:4096regularemptyfile
  7. Device:fd03h/64771dInode:4238838Links:1
  8. Access:(0644/-rw-r--r--)Uid:(700/oracle)Gid:(600/oinstall)
  9. Access:2023-05-0617:03:42.964517675+0800
  10. Modify:2023-05-0617:03:42.964517675+0800
  11. Change:2023-05-0617:03:42.964517675+0800
  12. Birth:-
  13. [oracle@KerryDB~]$

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

  1. /*version5filesystem(inodeversion3)fieldsstarthere*/
  2. __le32di_crc;
  3. __be64di_changecount;
  4. __be64di_lsn;
  5. __be64di_flags2;
  6. __be32di_cowextsize;
  7. __u8di_pad2[12];
  8. xfs_timestamp_tdi_crtime;
  9. __be64di_ino;
  10. uuid_tdi_uuid;
  11. };
  12. *di_crtime*::
  13. Specifiesthetimewhenthisinodewascreated.

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

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

Oracle用户:

  1. $uname-r
  2. 3.10.0-1160.80.1.el7.x86_64
  3. $dmesg|grep-iE'xfs.*\s+mounting'|head-1
  4. [4.041026]XFS(dm-0):MountingV5Filesystem

root用户:

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

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

mysql用户:

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

root用户:

  1. #xfs_db-r/dev/mapper/vg00-home
  2. xfs_db>version
  3. versionnum[0xb4b5+0x18a]=V5,NLINK,DIRV2,ATTR,ALIGN,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT,PROJID32BIT,CRC,FTYPE,FINOBT,SPARSE_INODES,REFLINK
  4. 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这台服务器内核信息如下所示

  1. $uname-r
  2. 3.10.0-1160.80.1.el7.x86_64

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

  1. $uname-r
  2. 4.18.0-425.3.1.el8.x86_64

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

参考资料

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

到此这篇关于Linux xfs文件系统stat命令Birth字段为空的原因探究的文章就介绍到这了,更多相关Linux xfs文件系统stat命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

相关推荐

mysql一 基本操作(mysql基础操作命令)

先讲数据库--mysql、redis、MongoDB爬虫今天的内容:mysql一基本操作注意事项:1.安装:自己安装,有问题可以问老师、可以自己找办法解决2.上课:先讲知识点再回答问题3....

香港DM德馬景泰藍文科集團20250702期《生命的收獲》LIN JING DE

香港DM德馬景泰藍文科集團20250702期《生命的收獲》DMSIXSEVEN/LINJINGDE/1973主編供圖:香港DM德馬數字甲骨文集團Hongkong-basedDMDelm...

01.Java发展历史(java发展简史)

1.Java发展历史Java由SunMicrosystems公司(现为Oracle公司)的JamesGosling及其团队在1991年开发,最初命名为"Oak",后改名为"...

月薪最高12000!看看这些宝山岗位有没有你心仪的~

招聘目录信息1猎上网络科技(上海)有限公司职位分析师职位分析师助理2上海祥腾金属材料有限公司商务车驾驶员3上海赋拓物联网技术有限公司软件测试工程师4上海集优标五高强度紧固件有限公司...

69岁的Java之父终于退休了,他竟然也经历过职场PUA

有些程序员不到35岁就要担心被优化,但有的程序员干到了69岁的高龄,才准备退休。就前几天,Java之父詹姆斯·高斯林,自个儿在领英上宣布以后要美美享受退休生活了。这一下子,就炸出了不少...

ocm认证年薪多少?(ocm认证好考吗)

从业数据库方面的工程师待遇都很好,年薪30万都是比较平常的事。OCM认证的价值可以归纳成以下几点:1、可以全面掌握Oracle知识,专业知识完善;2、证书对于公司招投标有巨大作用,甚至可以不上班就拿钱...

自学java开发攻略,想做程序员的必备攻略?

背景现阶段,随着互联网的快速发展,程序员这个行业越来月吃香,不仅仅是因为科技先进,说出去很牛逼,让别人产生崇拜,主要原因是程序员行业薪资待遇好,相比国内其他行业,程序员的薪资待遇是羡慕了很多人呢!于是...

SpringBoot WebFlux整合R2DBC实现数据库反应式编程

环境:Springboot2.4.12R2DBC简介SpringdataR2DBC是更大的Springdata系列的一部分,它使得实现基于R2DBC的存储库变得容易。R2DBC代表反应式关系数...

AI编码工具未能代替码农:大模型的局限性揭秘

随着ChatGPT和GithubCopilot等AI编码工具的兴起,StackOverflow近日因流量减少宣布裁员近三分之一。这引发了一个争议的问题:ChatGPT这类AI编码工具,真的要颠覆整...

大模型无法替代码农!GPT-4解决GitHub编程问题成功率为0

编辑:编辑部【新智元导读】ChatGPT之类的AI编码工具来势汹汹,StackOverflow又裁员了!不过,普林斯顿和芝大竟发现,面对真实世界GitHub问题,GPT-4的解决率竟是0%。Stac...

机器人动作领域突破!UniVLA模型实现跨模态AI机器人动作统一

还记得《星际穿越》中那台能在无重力、尘暴甚至巨浪中切换形态、随时理解库珀指令的TARS多功能机器人吗?在银幕里,我们羡慕TARS能听懂人话、看懂环境、马上给出最合适的动作;而在现实世界的实验室里,“让...

FEA-Bench:首个仓库级新功能实现基准,让大模型更懂软件开发

当前,大语言模型在代码生成领域已展现出惊人的能力,但能否胜任真实软件开发中的“新增功能实现”任务,仍是一个关键未解的问题。对此,微软亚洲研究院与北京大学联合发布了首个专注于仓库级新功能实现的基准测试...

基于Java的软件版本信息管理系统-2025计算机毕业设计

基于Java的软件版本信息管理系统-2025计算机毕业设计前言随着移动互联网的快速发展,APP已成为人们日常生活中不可或缺的一部分。为了高效地管理这些APP的信息,如版本更新、用户反馈、下载量统计等,...

马斯克在干嘛?抱着它现身推特 简介改为“推特老板”

  马斯克收购推特的交易真是“没完没了”。据彭博社报道,当地时间26日,美国亿万富翁埃隆·马斯克抱着水槽走进了推特公司的旧金山总部,他还将自己在推特账号的公开自我介绍改为“推特老板”(ChiefTw...

福布斯公布7月全球十大富豪:马斯克成6月最大“输家”,身家缩水160亿美元

7月日,福布斯今日公布了2025年7月全球十大富豪榜,其中第二名迎来新面孔。软件巨头甲骨文(Oracle)联合创始人兼董事长拉里埃里森(LarryEllison)凭借公司股价飙升成功上位。由...

取消回复欢迎 发表评论: