深入理解Linux磁碟文件系統之inode詳解

2019年11月02日20:05:05 科技 1115

inode是什麼?

inode中文譯名為"索引節點"

文件儲存在硬碟上,硬碟的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512位元組(相當於0.5KB)。

操作系統讀取硬碟的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。

文件數據都儲存在"塊"中,那麼很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。

inode的內容

inode包含文件的元信息,具體來說有以下內容:

* 文件的位元組數

* 文件擁有者的User ID

* 文件的Group ID

* 文件的讀、寫、執行許可權

*文件的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指文件內容上一次變動的時間,atime指文件上一次打開的時間。

* 鏈接數,即有多少文件名指向這個inode

* 文件數據block的位置

示例1:

stat命令,查看某個文件的inode信息

[root@localhost mytest]# stat a.txt 

深入理解Linux磁碟文件系統之inode詳解 - 天天要聞

mtime : modify time,修改文件內容的時間

即指文件內容上一次變動的時間。如:echo aa >> a.sh 或vim a.sh 修改內容

atime : access time 訪問文件內容的時間

即指文件上一次查看文件的時間,如: cat a.sh

ctime指inode上一次文件屬性變動的時間,change time 。 比如: chmod +x a.sh

inode的大小

inode也會消耗硬碟空間,所以硬碟格式化的時候,操作系統自動將硬碟分成兩個區域。一個是數據區,存放文件數據;另一個是inode區(inode table),存放inode所包含的信息。

每個inode節點的大小,一般是128位元組或256位元組。inode節點的總數,在格式化時就給定,假定在一塊1GB的硬碟中,每個inode節點的大小為128位元組,每1KB就設置一個inode,那麼inode table的大小就會達到128MB,占整塊硬碟的12.8%。

inode號碼

每個inode都有一個號碼,操作系統用inode號碼來識別不同的文件。

Unix/Linux系統內部不使用文件名,而使用inode號碼來識別文件。對於系統來說,文件名只是inode號碼便於識別的別稱或者綽號。表面上,用戶通過文件名,打開文件。實際上,系統內部這個過程分成三步:首先,系統找到這個文件名對應的inode號碼;其次,通過inode號碼,獲取inode信息;最後,根據inode信息,找到文件數據所在的block,讀出數據。

示例2

使用ls -i命令,可以看到文件名對應的inode號碼

[root@localhost mytest]# ls -i


[root@localhost mytest]# ll -i

深入理解Linux磁碟文件系統之inode詳解 - 天天要聞

示例3

查看每個硬碟分區的inode總數和已經使用的數量,可以使用df命令


[root@localhost mytest]# df -i

深入理解Linux磁碟文件系統之inode詳解 - 天天要聞

目錄文件

Unix/Linux系統中,目錄(directory)也是一種文件。打開目錄,實際上就是打開目錄文件。

目錄文件的結構非常簡單,就是一系列目錄項的列表。每個目錄項,由兩部分組成:所包含文件的文件名,以及該文件名對應的inode號碼。


[root@localhost mytest]# ls -id /etc/

深入理解Linux磁碟文件系統之inode詳解 - 天天要聞

示例4

ls -i命令列出整個目錄文件,即文件名和inode號碼:

[root@localhost mytest]# ls -id /etc/

深入理解Linux磁碟文件系統之inode詳解 - 天天要聞

實戰

解決磁碟有空間但創建不了文件

場景

在一台配置較低的Linux伺服器(內存、硬碟比較小)的/data分區內創建文件時,系統提示磁碟空間不足,用df -h命令查看了一下磁碟使用情況,發現/data分區只使用了80%,還有1.9G的剩餘空間,但是無法創建新的文件。當時使用的是root用戶。伺服器沒有被黑。

[root@localhost mytest]# df -h

文件系統 容量 已用 可用 已用% 掛載點

/dev/sda3 10G 8.0G 1.9G 80% /

常識: 只要許可權夠,磁碟上有空間一定可以創建文件。 這個是錯的。

排查過程

第一步:

用df -i

查看了一下/data所在的分區的索引節點(inode),發現已經用滿(IUsed=100%),導致系統無法創建新目錄和文件。

問題原因:

/data/cache目錄中存在數量非常多的小位元組緩存文件,佔用的Block不多,但是佔用了大量的inode。

[root@localhost mytest] # df -i 

文件系統 Inode 已用(I) 可用(I) 已用(I)% 掛載點

/dev/sda3 5242880 5242880 0 100% /

解決方案

第一種方案:

刪除/data/cache目錄中的部分文件,釋放出/data分區的一部分inode。

第二種方案 :

在/data備份好一些文件,然後刪除這些文件,釋放一些inode,然後創建一個文件夾/data/cache2。在cache2下掛載一個新分區: sda4 ,下次寫數據需要寫到新分區cache2目錄下。

inode分區完後,是不可以再增加的, inode總數是在格式化時定下來。

[root@localhost mytest] # mkfs.ext4 -I 500000000000 /dev/sda1 #可以指定大小

參數:

[-i bytes-per-inode] [-I inode-size]

深入理解Linux磁碟文件系統之inode詳解 - 天天要聞

擴展

inode的特殊作用

由於inode號碼與文件名分離,這種機制導致了一些Unix/Linux系統特有的現象。

1. 有時,文件名包含特殊字元,無法正常刪除。這時,直接刪除inode節點,就能起到刪除文件的作用。

2. 移動文件或重命名文件,只是改變文件名,不影響inode號碼。

3. 打開一個文件以後,系統就以inode號碼來識別這個文件,不再考慮文件名。

因此,通常來說,系統無法從inode號碼得知文件名。

科技分類資訊推薦

混動轎車終局首選,「智能電混四驅轎車」領克10 EM-P全球首秀 - 天天要聞

混動轎車終局首選,「智能電混四驅轎車」領克10 EM-P全球首秀

在新能源市場「價格戰」白熱化的當下,領克只卷價值,卷技術,卷產品。在此背景下,領克首款中大型豪華運動轎車——領克10 EM-P迎來首秀亮相。新車定位「智能電混四驅轎車」,標配四驅和激光雷達,首次將高端配置一同下放至20萬級主流汽車市場。這種「頂配變標配」的平權
百年MG加速新能源布局:2年13款新車矩陣,全面ALL IN電動化賽道 - 天天要聞

百年MG加速新能源布局:2年13款新車矩陣,全面ALL IN電動化賽道

6月30日,擁有百年底蘊的MG品牌,正式宣布全面 All in 新能源。背靠上汽集團雄厚的技術實力,規劃未來 2 年推出 13 款全新新能源車型,產品矩陣覆蓋純電、插混、增程三種動力形式,轎車、SUV、跑車、獵裝車四大車身類型,這場轉型不僅是動力革新,更是百年
科技賦能綠色發展 中國為全球探新路 - 天天要聞

科技賦能綠色發展 中國為全球探新路

新華社貴陽7月6日電 題:科技賦能綠色發展 中國為全球探新路 新華社記者周宣妮 「很期待看到中國無人駕駛汽車如何從貴州工廠走向歐洲乃至世界,未來也許像我一樣不會開車的人也能在AI輔助下安全駕駛。」來自塞普勒斯的巴黎政治大學學生費奧多爾·德米特連科在貴州試乘無人駕駛巴士時如此感慨。 2日至7日,在貴州的青山綠水...
小米YU7今日交付,雷軍向首批車主交車,並親手開車門 - 天天要聞

小米YU7今日交付,雷軍向首批車主交車,並親手開車門

7月6日,小米YU7正式開啟全國交付,覆蓋全國58個城市。雷軍發文表示:今天下午,小米YU7正式交付首批車主。希望這台車,陪伴每一個熱愛生活的你和你們,解鎖更多美好體驗。感謝大家的支持與信任!有多位網友發布視頻和照片,今日雷軍在北京小米科技園親手給首批YU7車主交付新車,並為他們開車門。6月26日19:00,小米首款SU...
19.58萬元起售,小鵬G7正式上市 - 天天要聞

19.58萬元起售,小鵬G7正式上市

2025年7月3日,小鵬G7正式上市,這次一共3個版本602長續航Max、702超長續航Max、702超長續航Ultra,售價分別為19.58萬元、20.58萬元和22.58萬元。定位中型純電SUV,主打家庭定位的5座車型,這次小鵬G7還給出了哪些亮眼的科技新
國家速滑館人形機器人實訓基地正式啟用 首批賽隊已入駐 - 天天要聞

國家速滑館人形機器人實訓基地正式啟用 首批賽隊已入駐

新華社北京7月6日電(記者陽娜)記者6日從北京市經濟和信息化局獲悉,國家速滑館人形機器人實訓基地近日正式啟用,首批8支隊伍進駐實訓基地,備戰2025世界人形機器人運動會。 5日,一場激烈的3V3機器人足球比賽在國家速滑館人形機器人實訓基地上演,由北京信息科技大學光熾隊對陣中國農業大學山海隊,這是實訓基地的第一場...
現在賺錢越來越難了?恰恰相反,做到這 3 點,不賺錢很難 - 天天要聞

現在賺錢越來越難了?恰恰相反,做到這 3 點,不賺錢很難

前幾天在小區便利店遇到鄰居陳姐,她一邊掃碼付包子錢一邊嘆氣:「現在錢太難賺了,我在超市幹了十年,工資才漲了兩千塊,連孩子補課費都快交不起了。」 回家路上刷到動態,做電商的 95 後小吳剛曬完訂單截圖,上個月凈利潤 18 萬,配文寫著:「其實
硬核出擊!Jeep與《侏羅紀世界》聯名款新車正式上市 - 天天要聞

硬核出擊!Jeep與《侏羅紀世界》聯名款新車正式上市

當硬核越野精神邂逅全球頂級IP,沉睡6500萬年的野性基因再度覺醒。2025年7月2日,Jeep圍繞電影《侏羅紀世界:重生》開啟跨界聯名合作,並發布兩款終極探索座駕——Jeep牧馬人侏羅紀世界探索版與Jeep角鬥士侏羅紀世界探索版。