引言
inode 是一個Linux 非常重要的知識點,瞭解它有利於我們對Linux系統的進一步瞭解。
今天無意中看到了阮一峰老師對inode做的一個部落格筆記,我這裡簡單的記錄下學到的東西。
概念
儲存單位:
-
扇區 (Sector),存世512位元組(相當於0.5kb)
-
塊(block),8個Sector 組成一個 block
檔案儲存分為兩個部分:
-
資料儲存
-
檔案元資訊
檔案元資訊就是inode
inode內容
inode檔案元資訊包含以下內容:
-
檔案的位元組數
-
檔案擁有者的User ID
-
檔案的Group ID
-
檔案的讀、寫、執行許可權
-
檔案的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指檔案內容上一次變動的時間,atime指檔案上一次開啟的時間。
-
連結數,即有多少檔名指向這個inode
-
檔案資料block的位置
檢視inode資訊
stat 1.txt
檢視硬碟的inode總數和已經使用數量
df -i
inode號碼
每個檔案都會有inode號碼,相當於mysql 資料庫裡的表id,用來查詢資料的。每個檔名都會對應一個inode號碼,我們開啟一個檔案的時候實際經歷了以下步驟:
-
通過檔名去找對應的inode號碼
-
通過inode號碼獲取inode資訊
-
通過inode資訊查詢資料所在的block,讀取資料
檢視檔案/目錄的inode號碼
ls -i 1.txt
特殊作用
由於inode號碼與檔名分離,這種機制導致了一些Unix/Linux系統特有的現象。
1. 有時,檔名包含特殊字元,無法正常刪除。這時,直接刪除inode節點,就能起到刪除檔案的作用。
2. 移動檔案或重新命名檔案,只是改變檔名,不影響inode號碼。
3. 開啟一個檔案以後,系統就以inode號碼來識別這個檔案,不再考慮檔名。因此,通常來說,系統無法從inode號碼得知檔名。
第3點使得軟體更新變得簡單,可以在不關閉軟體的情況下進行更新,不需要重啟。因為系統通過inode號碼,識別執行中的檔案,不通過檔名。更新的時候,新版檔案以同樣的檔名,生成一個新的inode,不會影響到執行中的檔案。等到下一次執行這個軟體的時候,檔名就自動指向新版檔案,舊版檔案的inode則被回收。
篇尾
堅持每天學一點,知識是需要日積月累的,加油~ 分享給大家~
本作品採用《CC 協議》,轉載必須註明作者和本文連結