首頁  >  文章  >  運維  >  linux的i節點號碼是什麼意思

linux的i節點號碼是什麼意思

青灯夜游
青灯夜游原創
2023-03-30 11:49:202377瀏覽

在linux中,i節點號是指inode號,用來識別不同的檔案。 Linux內部使用inode號來識別文件,而非文件名,對於系統來說,文件名是inode號的別稱,是便於用戶識別文件的,文件名和inode號是一一對應的關係,每個inode號對應一個檔名。

linux的i節點號碼是什麼意思

本教學操作環境:linux7.3系統、Dell G3電腦。

一、linux中的i節點

在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的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影片教學

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn