歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 對話UNIX:關於inode

對話UNIX:關於inode

日期:2017/2/25 10:39:09   编辑:Linux教程
  您是否曾經對一些 UNIX? 命令(如 df)中的 Iused 和 %Iused 的含義感到困惑,或者當人們討論 inode 的時候不知所雲?UNIX 和 Linux? 系統都使用了 inode ,當然 IBM? AIX? 也不例外。本文將向您介紹什麼是 inode 、為什麼對於 UNIX 來說 inode 非常重要、 inode 的結構,以及操作 inode 的命令。
  inode 是 UNIX 操作系統中的一種數據結構,它包含了與文件系統中各個文件相關的一些重要信息。在 UNIX 中創建文件系統時,同時將會創建大量的 inode 。通常,文件系統磁盤空間中大約百分之一空間分配給了 inode 表。
  有時,人們使用了一些不同的術語,如 inode 和索引編號 (inumber)。這兩個術語非常相似,並且相互關聯,但它們所指的並不是同樣的概念。 inode 指的是數據結構;而索引編號實際上是 inode 的標識編號,因此也稱其為 inode 編號 或者索引編號。索引編號只是文件相關信息中一項重要的內容。下一個部分將介紹 inode 中的其他一些屬性。
  inode 表包含一份清單,其中列出了對應文件系統的所有 inode 編號。當用戶搜索或者訪問一個文件時,UNIX 系統通過 inode 表查找正確的 inode 編號。在找到 inode 編號之後,相關的命令才可以訪問該 inode ,並對其進行適當的更改。
  例如,使用 vi 來編輯一個文件。當您鍵入 vi <filename 時,在 inode 表中找到 inode 編號之後,才允許您打開該 inode 。在 vi 的編輯會話期間,更改了該 inode 中的某些屬性,當您完成操作並鍵入 :wq 時,將關閉並釋放該 inode 。通過這種方式,如果兩個用戶試圖對同一個文件進行編輯, inode 已經在第一個編輯會話期間分配給了另一個用戶 ID (UID),因此第二個編輯任務就必須等待,直到該 inode 釋放為止。
  inode 的結構
  對於經驗豐富的 UNIX 開發人員或者管理員來說, inode 的結構相對比較簡單,但是可能還有一些您尚不了解的、令人驚訝的有關 inode 的內幕。下面的定義僅給出了 inode 中所包含的、UNIX 用戶經常使用的一些重要信息:
  inode 編號 用來識別文件類型,以及用於 stat C 函數的模式信息 文件的鏈接數目 屬主的 UID 屬主的組 ID (GID) 文件的大小 文件所使用的磁盤塊的實際數目 最近一次修改的時間 最近一次訪問的時間 最近一次更改的時間 從根本上講, inode 中包含有關文件的所有信息(除了文件的實際名稱以及實際數據內容之外)。可以在 AIX 的 Header 文件 /usr/include/jf/ino.h 中、或者 Web 頁面 http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.files/doc/aixfiles/inode.h.htm 中可以找到完整的 inode 結構。
  以上所列舉的信息對於文件來說非常重要,並且在 UNIX 中頻繁使用。如果沒有這些信息,那麼文件將被認為遭到破壞和不可用。
  與其他的操作系統相比,UNIX 系統中的目錄和文件可能看起來有所不同,但事實並非如此。在 UNIX 中,目錄本身就是文件,只是在它們的 inode 中使用了一些附加的設置。目錄 本質上就是一個包含了其他文件的文件。另外,其模式信息中設置了一些相應的標志,以告知系統該文件實際上是一個目錄。
  使用 inode
  了解如何在 UNIX 中使用 inode 可以節約大量的時間,並提高工作效率。在尚未了解 inode 之前,您可以使用下面的命令,以減少可能碰到的問題。
  df 命令
  如前所述,當您在 UNIX 中創建一個文件系統時,將為 inode 表分配大約百分之一的總磁盤空間。每次在文件系統中創建一個文件時,都會為該文件分配一個 inode 。通常,與一個文件系統相關聯的 inode 的數目足夠多,但耗盡 inode 的可能性始終存在。要監視是否發生了這種情況,您可以觀察 df 的輸出。
  使用 df 命令,您可以查看所有已掛載的文件系統或者特定的文件系統。在該命令的輸出中,您可以查看各個文件系統中已使用的 inode 的數目,以及文件系統中總體使用情況百分比,如清單 1 中所示。
  清單 1. 使用 df 來監視 inode 的使用
  # df -k
Copyright © Linux教程網 All Rights Reserved