Linux 索引節點 inode

2021-09-10 21:23:12 字數 2308 閱讀 8689

理解 inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做」扇區」(sector)。每個扇區儲存 512 位元組(相當於 0.5kb)。作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個」塊」(block)。這種由多個扇區組成的」塊」,是檔案訪問的最小單位。」塊」的大小,最常見的是 4kb,即連續八個 sector 組成乙個 block。檔案資料都儲存在」塊」中,那麼很顯然,我們還必須找到乙個地方儲存檔案的元資訊,比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做 inode,中文譯名為索引節點。

linux中目錄的資料塊中的每一項中都包含了檔名和其對應的inode。inode記錄了檔案的屬性以及該檔案實際儲存位置,即資料塊號(block number),每乙個block(常見大小4kb),通過inode可以實現檔案的查詢定位。inode是linux中的,unix中是vnode。基本上,inode包含的資訊至少有如下這些:

(1)檔案的型別

(2)檔案訪問許可權;

(3)檔案的所有者與組;

(4)檔案的大小;

(5)鏈結數,即指向該inode的檔名總數;

(6)檔案的狀態改變時間(ctime)、最近訪問時間(atime)和最近修改時間(mtime);

(7)檔案特殊屬性,suid、sgid和sbit;

(8)檔案內容的真正指向(pointer)。

可以用stat命令,檢視某個檔案的inode資訊。

inode的數量與大小在磁碟格式化的時候就已經固定了,inode的特點有:

(1)每乙個inode的大小均固定為128b。可以通過命令dumpe2fs來顯示ext2/ext3/ext4檔案系統資訊。

$ dumpe2fs -h /dev/sda1 | grep "inode size"

dumpe2fs 1.41.12 (17-may-2010)

inode size: 128

(2)每個檔案都只占用乙個inode。因此,檔案系統能夠建立的檔案數量與inode數量有關。系統讀取檔案時需要先找到inode,並分析inode所記錄的許可權與使用者是否符合,若符合才能夠開始實際讀取block的內容。

作業系統讀取磁碟檔案的流程是這樣的:

(1)根據給定的檔案的所在目錄,獲取該目錄的資料實體,根據資料實體中的資料項,找到對應檔案的inode;

(2)根據檔案inode,找到inodetable;

(3)根據inodetable中的對應關係,找到對應的block;

(4)讀取檔案。

系統讀取磁碟檔案流程示意圖如下:

舉例來說,如果想要讀取/etc/passwd檔案,讀取流程如下:

(1)獲取根目錄/的inode。透過掛載點的資訊找到根目錄的inode號為2;

ll -di /

2 dr-xr-xr-x 19 root root 4096 feb 14 09:32 /

(2)根據根目錄的inode,找到根目錄的資料實體block,可以理解為乙個檔案到inode號的對映表,找到目錄etc的inode號;

ll -di /etc

786433 drwxr-xr-x 98 root root 12288 feb 13 17:18 /etc

(3)根據目錄etc的inode號,讀取目錄etc的資料實體block,並找到檔案passwd的inode號;

ll -i /etc/passwd

787795 -rw-r--r-- 1 root root 1552 jan 4 14:56 /etc/passwd

(4)根據/etc/passwd檔案的inode號,即可獲取/etc/passwd檔案的資料實體block,完成檔案的讀取。

(1)對於有些無法刪除的檔案可以通過刪除inode節點來刪除;

(2)移動或者重新命名檔案,只是改變了目錄下的檔名到inode的對映,並不需要實際對硬碟操作;

(3)刪除檔案的時候,只需要刪除inode,不需要實際清空那塊硬碟,只需要在下次寫入的時候覆蓋即可(這也是為什麼刪除了資料可以進行資料恢復的原因之一);

(4)開啟乙個檔案後,只需要通過inode來識別檔案。

[1] 鳥哥.鳥哥的私房菜基礎學習篇第三版[m].北京:人民郵電出版社,2010:183-184

[2] **linux中inode-分析linux如何通過inode讀取磁碟

linux 索引節點 inode 詳解

1 inode簡介 理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個 塊 block 這種由多個扇區組成...

索引節點inode詳解

inode index node 索引節點。linux系統中,分割槽要進行格式化,建立檔案系統。在每個linux儲存裝置或儲存裝置的分割槽 可以是硬碟,軟盤,u盤等 被格式化為ext3檔案系統後,一般分為兩個部分 第一部分是inode,第二部分是block。而inode是用來儲存這些檔案屬性資訊的 ...

Linux索引節點 Inode 用滿導致空間不足

1 問題 在建立新目錄和檔案是提示 no space left on device 按照以前的情況,很有可能是伺服器空間又被塞滿了,通過命令檢視,發現還有剩餘。再用df i檢視了一下 分割槽的索引節點 inode 發現已經用滿 已用 100 導致系統無法建立新目錄和檔案。2 問題原因分析 inode...