解析Linux?xfs文件系統(tǒng)stat命令Birth字段為空的原因
在Linux平臺找出某個(gè)目錄下創(chuàng)建時(shí)間最早的文件,測試驗(yàn)證腳本結(jié)果是否準(zhǔn)確的過程中發(fā)現(xiàn)一個(gè)很有意思的現(xiàn)象,stat命令在一些平臺下Birth字段有值,而在一些平臺則為空值,如下所示:
RHEL 8.7下, XFS文件系統(tǒng)
[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
RHEL 7.9 XFS文件系統(tǒng)
[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?~]$
stat命令的Birth字段表示文件的創(chuàng)建時(shí)間,該屬性是ext4的新功能(當(dāng)然也適用于xfs文件系統(tǒng)),也稱為crtime或btime,但是當(dāng)前兩個(gè)測試環(huán)境的文件系統(tǒng)為xfs,之前也在xfs文件系統(tǒng)中測試過,發(fā)現(xiàn)xfs不支持creation time. 但是從xfs v5開始,xfs已經(jīng)支持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.
但是上面這個(gè)差異現(xiàn)象,還是讓我有點(diǎn)好奇,因?yàn)閮蓚€(gè)測試環(huán)境對應(yīng)的xfs版本都是v5,如下所示。
KerryDB這臺機(jī)器的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這臺機(jī)器的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>
那么到底是什么原因?qū)е?。Google搜索了相關(guān)資料,原來,如果stat命令查看xfs文件系統(tǒng)的文件時(shí),如果要Birth字段不顯示空置,必須滿足幾個(gè)條件,一個(gè)是xfs的版本為v5,另外,對操作系統(tǒng)內(nèi)核版本也有要求(如下所示)
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這臺服務(wù)器內(nèi)核信息如下所示
$?uname?-r 3.10.0-1160.80.1.el7.x86_64
mysqlu02這臺服務(wù)器的內(nèi)核信息如下所示:
$?uname?-r 4.18.0-425.3.1.el8.x86_64
如上所示,stat命令Birth字段為空置的操作系統(tǒng)內(nèi)核版本為3.10.0,不滿足條件kernerl >=4.11 所以stat命令顯示空值。
參考資料
到此這篇關(guān)于Linux xfs文件系統(tǒng)stat命令Birth字段為空的原因探究的文章就介紹到這了,更多相關(guān)Linux xfs文件系統(tǒng)stat命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析linux下如何用腳本自動(dòng)發(fā)送文本mail郵件
這篇文章主要是介紹如何linux下通過腳本自動(dòng)發(fā)送文本mail郵件,特分享下,方便需要的朋友2013-05-05shell函數(shù)內(nèi)調(diào)用另一個(gè)函數(shù)(不帶返回值和帶返回值)
本文主要介紹了shell函數(shù)內(nèi)調(diào)用另一個(gè)函數(shù)(不帶返回值和帶返回值),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Linux bc命令實(shí)現(xiàn)數(shù)學(xué)計(jì)算器
這篇文章主要介紹了Linux bc命令實(shí)現(xiàn)數(shù)學(xué)計(jì)算器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03expect實(shí)現(xiàn)批量修改linux密碼腳本分享
這篇文章主要介紹了expect實(shí)現(xiàn)批量修改Linux密碼腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12linux下監(jiān)控網(wǎng)絡(luò)流量的腳本
在我們的日常工作當(dāng)中,監(jiān)控網(wǎng)絡(luò)要么使用iptarf,ifstat這些命令實(shí)現(xiàn)的,但是需要裝額外的RPM包。特別是iptarf裝起來麻煩2013-01-01