首頁 >運維 >linux運維 >linux的i節點號指什麼意思

linux的i節點號指什麼意思

WBOY
WBOY轉載
2023-05-29 17:19:412046瀏覽

inode號碼是Linux系統中用來區分不同檔案的編號識別。 Linux內部使用inode號來識別文件,而非文件名,對於系統來說,文件名是inode號的別稱,是便於用戶識別文件的,文件名和inode號是一一對應的關係,每個inode號對應一個檔名。

一、linux中的i節點

在linux中,i節點指的是inode節點。

linux中,檔案查找不是透過檔案名稱來尋找的。實際上是透過i節點來實現檔案的查找定位的。我們可以形象的將i節點看做是一個指標fip。當檔案儲存到磁碟上去的時候,檔案一定會存放到一個磁碟位置上,可以這樣想像,既然檔案資料是存放在磁碟上的,如果我們知道這個檔案資料的位址,當我們想要讀寫檔案的時候,我們是不是直接用這個地址去找文件就可以了呢?

是的,linux下,i節點其實就是可以這麼認為,把i節點看成一個指向磁碟上該檔案儲存區的位址。通常情況下,我們無法直接使用這個位址,而是需要透過檔案名稱來間接使用。實際上,除了檔案資料儲存區的位址,i節點還包含有大量其他信息,例如檔案大小、檔案資訊等。但是i節點是不保存檔名的。檔案名稱是保存在一個目錄項目中。每一個目錄項中都包含了檔案名稱和i節點。

我們可以透過一個圖來看看目錄項,i節點,檔案資料四者之間的關係。

linux的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的i節點號指什麼意思

  • #當使用者在Linux系統中試圖存取一個檔案時,系統會先根據文件名去查找它對應的inode號碼;透過inode號碼,獲取inode信息;根據inode信息,看該用戶是否具有訪問這個文件的權限;如果有,就指向相對應的數據block,並讀取數據;如果沒有就會返回。

存取檔案的簡單流程:

linux的i節點號指什麼意思

#二、Linux 檔案儲存

2.1 inode的數量限制

  • inode也會消耗硬碟空間,所以格式化的時候,作業系統自動將硬碟分成兩個區域:一個是資料區,存放文件資料;另一個是inode區,存放inode 所包含的資訊。每個inode 的大小,一般是128 位元組或256位元組。

  • 通常情況下不需要關注單一inode的大小,而是需要重點關注inode總數,inode的總數在格式化時就已經定好了
    ——為什麼需要重點關注inode總數,因為當inode用完時,即便磁碟還有空間也無法建立新檔案了,因為在建立檔案時需要一個inode號與之對應,而沒有inode時自然無法建立新文件。
    執行「df-i」指令即可查看每個硬碟分割區對應的的inode總數和已經使用的inode數量。

linux的i節點號指什麼意思

2.2 inode 的內容

inode包含檔案的元訊息,具體有以下的內容:

  • 檔案的位元組數

  • 檔案的擁有者user ID

  • 檔案的group ID

  • 檔案的讀、寫、執行權限

  • #連結數,也就是有多少檔案指向這個inode

  • #檔案的時間戳記

  • 兩種方式查看某個檔案的inode資訊

##方法一:stat [檔案名稱]

範例:stat aa.txt


#

linux的i節點號指什麼意思

優點:可以查看檔案inode 的詳細資訊

方法二:ls -i [檔案名稱]

linux的i節點號指什麼意思

只能顯示inode號碼

2.3 Linux系統檔案三個主要的時間屬性

Linux系統檔案三個主要的時間屬性(即inode 裡的時間戳記)

  • #ctime(change time)
    指的是最後一次改變檔案或目錄(屬性)的時間

  • atime(access time)
    指的是最後一次存取檔案或目錄的時間

  • mtime(modify time)
    指的是最後一次修改檔案或目錄(內容)的時間

三、inode的特殊作用

#由於inode號碼與檔案名稱分離,導致一些Unix/Linux系統有以下的現象:

  • 當文件名包含特殊字符,可能無法正常刪除文件,直接刪除inode,也可以刪除文件

  • ##移動或重新命名文件時,只改變文件名,不影響inode號碼

  • 開啟一個文件後,系統透過inode號碼來識別該文件,不再考慮文件名

  • 檔案資料被修改儲存後,會產生一個新的inode 號碼(原先的inode 號會被釋放)

如何刪除inode號刪除檔案:

方法一(刪除前需確認訊息):find ./ -inum [inode號碼] -exec rm -i {} \ ;

linux的i節點號指什麼意思

方法二(直接刪除):find ./ -inum [inode號] -delete

linux的i節點號指什麼意思#

以上是linux的i節點號指什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除