inode號碼是Linux系統中用來區分不同檔案的編號識別。 Linux內部使用inode號來識別文件,而非文件名,對於系統來說,文件名是inode號的別稱,是便於用戶識別文件的,文件名和inode號是一一對應的關係,每個inode號對應一個檔名。
在linux中,i節點指的是inode節點。
linux中,檔案查找不是透過檔案名稱來尋找的。實際上是透過i節點來實現檔案的查找定位的。我們可以形象的將i節點看做是一個指標fip。當檔案儲存到磁碟上去的時候,檔案一定會存放到一個磁碟位置上,可以這樣想像,既然檔案資料是存放在磁碟上的,如果我們知道這個檔案資料的位址,當我們想要讀寫檔案的時候,我們是不是直接用這個地址去找文件就可以了呢?
是的,linux下,i節點其實就是可以這麼認為,把i節點看成一個指向磁碟上該檔案儲存區的位址。通常情況下,我們無法直接使用這個位址,而是需要透過檔案名稱來間接使用。實際上,除了檔案資料儲存區的位址,i節點還包含有大量其他信息,例如檔案大小、檔案資訊等。但是i節點是不保存檔名的。檔案名稱是保存在一個目錄項目中。每一個目錄項中都包含了檔案名稱和i節點。
我們可以透過一個圖來看看目錄項,i節點,檔案資料四者之間的關係。
從上圖可以看到,目錄項目中包含了檔案名稱和i節點。
同時,你會發現上圖中,目錄項目A和目錄項目B的i節點指向同一個儲存區,其中這個儲存區存放的是printf("ha")的資料。
也就是表示helloA.c和helloB.c的內容是一樣的。
i節點號碼
每個inode都有一個號碼(即 inode號),作業系統用 inode號碼來辨識不同的檔案。
————Linux內部使用inode號來識別文件,而非文件名,對於系統來說,文件名是inode號的別名,是便於用戶識別文件的,文件名和inode號是一一對應的關係,每個inode號對應一個檔名。
inode號是系統識別的唯一編碼,而檔案名稱只是為了使用者區分辨認,inode (index node )表中包含檔案系統所有檔案清單一個節點(索引節點)是在一個表項,包含有關文件的資訊(元資料)。
硬碟分割區後的結構:
#當使用者在Linux系統中試圖存取一個檔案時,系統會先根據文件名去查找它對應的inode號碼;透過inode號碼,獲取inode信息;根據inode信息,看該用戶是否具有訪問這個文件的權限;如果有,就指向相對應的數據block,並讀取數據;如果沒有就會返回。
存取檔案的簡單流程:
2.1 inode的數量限制
inode也會消耗硬碟空間,所以格式化的時候,作業系統自動將硬碟分成兩個區域:一個是資料區,存放文件資料;另一個是inode區,存放inode 所包含的資訊。每個inode 的大小,一般是128 位元組或256位元組。
通常情況下不需要關注單一inode的大小,而是需要重點關注inode總數,inode的總數在格式化時就已經定好了
——為什麼需要重點關注inode總數,因為當inode用完時,即便磁碟還有空間也無法建立新檔案了,因為在建立檔案時需要一個inode號與之對應,而沒有inode時自然無法建立新文件。
執行「df-i」指令即可查看每個硬碟分割區對應的的inode總數和已經使用的inode數量。
2.2 inode 的內容
inode包含檔案的元訊息,具體有以下的內容:
檔案的位元組數
檔案的擁有者user ID
檔案的group ID
檔案的讀、寫、執行權限
#連結數,也就是有多少檔案指向這個inode
#檔案的時間戳記
兩種方式查看某個檔案的inode資訊
##方法一:stat [檔案名稱]
範例:stat aa.txt
#
優點:可以查看檔案inode 的詳細資訊
方法二:ls -i [檔案名稱]
只能顯示inode號碼
2.3 Linux系統檔案三個主要的時間屬性
Linux系統檔案三個主要的時間屬性(即inode 裡的時間戳記)
#ctime(change time)
指的是最後一次改變檔案或目錄(屬性)的時間
atime(access time)
指的是最後一次存取檔案或目錄的時間
mtime(modify time)
指的是最後一次修改檔案或目錄(內容)的時間
#由於inode號碼與檔案名稱分離,導致一些Unix/Linux系統有以下的現象:
當文件名包含特殊字符,可能無法正常刪除文件,直接刪除inode,也可以刪除文件
如何刪除inode號刪除檔案:
方法一(刪除前需確認訊息):find ./ -inum [inode號碼] -exec rm -i {} \ ;方法二(直接刪除):find ./ -inum [inode號] -delete
#
以上是linux的i節點號指什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!