深入理解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號碼得知文件名。

科技分類資訊推薦

新能源車保險,為啥又貴又難買?車企「兩面派」,保險公司只認錢 - 天天要聞

新能源車保險,為啥又貴又難買?車企「兩面派」,保險公司只認錢

最近兩年時間,國內新能源汽車的保有量和滲透率都呈現了明顯增長的態勢,很多新能源汽車,賣得又貴又好,國內市場也成為全球範圍內,新能源汽車普及最為快速的市場,甚至沒有之一。新能源汽車智能化程度高、費用低、性能表現優秀,成為了很多小夥伴購買新能源汽車的原因,尤其是省
22款車降價,比亞迪真綳不住了?可能在下盤大棋,兩個苗頭已出現 - 天天要聞

22款車降價,比亞迪真綳不住了?可能在下盤大棋,兩個苗頭已出現

最近一段時間,關於比亞迪的各種信息,可以說甚囂塵上,其中首當其衝的,就是比亞迪22款新車大補貼,海鷗等車型的補貼後價格來到了5萬級別,最高降價幅度超過了5萬元,可以說這是2025年規模最大的一次降價,非常符合比亞迪「火力覆蓋」的特性,當然也有一些車企已經跟進,
新增哨兵功能+沙地模式:坦克500 Hi4-Z第二次OTA開啟推送 - 天天要聞

新增哨兵功能+沙地模式:坦克500 Hi4-Z第二次OTA開啟推送

快科技6月15日消息,坦克500 Hi4-Z的第二次OTA更新已經開啟推送,此次更新為車輛帶來了兩項重要的新功能。第一,哨兵模式和優化後的沙地模式。哨兵模式能夠實現全車360度環視監控,全天候為車輛「站崗」。當有人員靠近停留或車輛檢測到震動時,該模式將被觸發。如果識別到低風險事件,中控屏會彈出告警動畫,以此警示可疑人...
曾經爆火的黃燜雞米飯,他經營了9年,這次的遭遇有點懵 - 天天要聞

曾經爆火的黃燜雞米飯,他經營了9年,這次的遭遇有點懵

錢老闆的黃燜雞米飯店開在杭州餘杭一個寫字樓外圍說是經營9年了2月中旬有人來做推廣結果遇到了問題錢老闆:3月1號之前入駐免配送費的,2月28號正式開始開通京東外賣,他們說會自動到賬到我銀行卡上,不用操作提現。記者:實際上呢?錢老闆:實際上自己
拼好飯為什麼這麼便宜?它是什麼商業模式 - 天天要聞

拼好飯為什麼這麼便宜?它是什麼商業模式

為什麼能這麼便宜?實體店5元的蜜雪冰城,在拼好飯上面只賣你1.9元。有人一直擔心,越便宜廉價的東西,越會出問題。它違背現實,不可能這麼便宜。但事實上,就是這麼便宜。它低價的原因,除了迎合顧客,搶佔市場外。更多的是,低價實惠是未來趨勢。平台優
白敬亭亮相粵港澳車展 官宣問界品牌摯友及問界M8車主 - 天天要聞

白敬亭亮相粵港澳車展 官宣問界品牌摯友及問界M8車主

5月31日,問界攜全系車型登陸2025粵港澳大灣區車展,同時舉辦「問界M9大五座零重力座椅版交付儀式暨品牌摯友發佈會」,重磅官宣演員白敬亭成為問界品牌摯友及問界M8車主。這是白敬亭第一次參加車展,更是多年來第一次參加汽車品牌活動,直接助推問界展台成為本屆粵港澳
三車齊發,東風品牌實力派登陸粵港澳大灣區車展 - 天天要聞

三車齊發,東風品牌實力派登陸粵港澳大灣區車展

5月31日,2025(第二十九屆)粵港澳大灣區車展暨第二屆中國新能源汽車科技展在深圳國際會展中心(寶安)拉開帷幕,東風乘用車攜東風風神、東風奕派、東風納米三大自主新能源品牌,以「科技東風 智繪灣區」為主題組團亮相N6號館東風品牌展台,不僅帶來了15款展車,還帶