Linux檔案系統中的inode

2021-10-10 22:30:02 字數 1655 閱讀 6767

磁碟中最小的儲存單位是「扇區」,作業系統中檔案最小的儲存單位是「塊」,乙個「塊」由連續的8個「扇區」組成,乙個檔案可以由多個「塊」組成,而這些「塊」並不一定是連續的。作業系統要讀取乙個檔案時,是如何找到這些「塊」的呢?這就需要一種對映關係,方便系統通過檔名找到對應的「塊」,inode就用來維持這種對映關係的。

inode是index node,也就是「索引節點」,每乙個檔案都有對應的inode,inode儲存的是檔案的元資訊,作業系統就是通過inode來管理檔案的。

inode包含的元資訊如下:

1)檔案的位元組數

2)檔案擁有者的 user id

3)檔案的 group id

4)檔案的讀、寫、執行許可權

5)檔案的時間戳,共有三個:ctime指inode最近變動的時間,mtime指檔案內容最近變動的時間,atime指檔案最近開啟的時間

6)鏈結數,即有多少檔名指向這個inode

7)檔案資料block的位置

注意:inode中不包含檔名。

linux中使用stat命令檢視檔案的inode資訊:

使用 df -i 檢視每個磁碟分割槽的inode總數和已經使用量:

對磁碟「格式化」後,作業系統將磁碟分成兩個區域,乙個是資料區,存放檔案資料,乙個是inode區(inode table),儲存inode資料。

每個inode都有唯一的編號,作業系統就是根據編號來操作不同的檔案。檔名可以說是inode編號的別名,實際上,系統通過檔名開啟檔案時,先找到檔名對應的inode編號,然後獲取inode資訊,根據inode資訊獲取檔案對應的block,最後從block中讀取資料。

使用 ls -i 獲取檔名對應的inode編號:

目錄(directory)也是一種檔案。目錄檔案的內容是一系列的目錄項列表,每個目錄項由兩部分組成:檔名,檔名對應的inode編號。

如果目錄檔案只有讀許可權(r),那就只能獲取檔名,無法獲取檔案的元資訊,元資訊儲存在inode中,要讀取inode中的內容,檔案目錄需要擁有執行許可權(x)。

在linux中,允許多個檔名指向同乙個inode編號,對檔案內容的修改會影響到所有的檔名,inode中的鏈結數,就是指向該檔案的檔名的數量,當鏈結數為0時,系統會**該檔案的inode編號和對應的block區域。

如果刪除乙個檔名,不影響另乙個檔名的訪問,這種情況是「硬鏈結」。

ln src_file target_file
還有一種情況是,檔案a和檔案b的inode編號不一樣,但是檔案a的內容是檔案b的路徑,也就是檔案a指向了檔案b的檔名。讀取檔案a時,會自動導向檔案b。檔案a就稱為檔案b的「軟鏈結」。

ls -s src_file target_file
inode和檔名分離的設計,會出現以下情況:

1)如果檔名包含了特殊字元,導致無法刪除,這時可以直接刪除inode節點,就可以刪除檔案。

2)移動檔案或重新命名時,只是改變檔名,不影響inode編號。

3)系統操作檔案時,只識別該檔案的inode編號,所以,系統無法通過inode來獲取檔名。這樣的好處是,在不用重啟的情況下就可以更新檔案,檔名就指向了乙個新的inode,舊的inode會被**。

linux 檔案系統 Linux 檔案系統結構介紹

ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...

Linux 檔案系統中跳轉

類似於 windows,乙個 類 unix 的作業系統,比如說 linux,以分層目錄結構來組織所有檔案。這就意味著所有檔案組成了一棵樹型目錄 有時候在其它系統中叫做資料夾 這個目錄樹可能包含檔案和其它的目錄。檔案系統中的第一級目錄稱為根目錄。根目錄包含檔案和子目錄,子目錄包含更多的檔案和子目錄,依...

linux中btrfs檔案系統

技術預覽版 btrfs b tree,butter fs better fs gpl,oracle,2007,cow寫實 目的取代linux早先的 ext3 4,xfs 核心特性 多物理卷支援 btrfs可由多個底層物理卷組成 支援raid,聯機實現 新增 移除 修改 支援寫時更新複製及替換指標,而...