歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 深度解析Unix中inode塊與超級塊

深度解析Unix中inode塊與超級塊

日期:2017/2/28 16:46:28   编辑:Linux教程

  雖然Unix操作系統要比Windwos系統要穩定。但是Unix操作系統有時候也會有鬧脾氣罷工的時候。這主要是因為Unix操作系統中inode塊與超級塊在作怪。那麼這兩個塊在Unix操作系統中到底占據了什麼位置呢?

  一、inode塊,Unix文件的核心。

  首先需要明白的是,在Unix操作系統中的任何資源都被當作文件來管理。如目錄、光驅、終端設備等等,都被當作是一種文件。從這方面來說,Unix操作系統中的所有的目錄、硬件設備跟普通文件一樣,具有共同的屬性。而這些屬性的話,就是保存在inode塊中。

  Inode塊中保存了一個文件系統中的全部Inode節點。也就是說,當系統創建了一個文件(或者添加了一個新設備)時,系統就會從這個塊中給這個文件分配一個Inode結點。在這個結點中存儲了這個文件的大部分屬性,如創建、修改時間等等。但是需要注意的是,有兩個屬性不包含在這個inode結點中,分別為文件名與結點號。這主要是因為inode節點按順序排列,所以系統內核就可以采用簡單的算法,就可以得出inode節點號。通過系統提供的ls命令顯示文件或者目錄信息的時候,就需要用到這個結點中的信息。Ls命令為了確定一個文件的Inode節點需要查找它所在的目錄,然後讀取它的Inode 結點,並根據inode節點得到文件的屬性。正常情況下,這個節點號不會出現什麼問題。但是如果由於意外斷電或者其他原因的話,有可能會發生一些故障。如可能一個inode結點在系統中已經被創建,但是其沒有被正常使用,或者可能塊號超出了范圍。這些故障會給操作系統留下安全隱患。為此當出現意外關機或者其他意外事件時,最好系統工程師能夠利用fsck系統命令來修復inode結點中的錯誤。

  另外需要注意的是,在inode結點中還存儲著一個重要的信息,就是保存了一個包含13-15位指針元素的數組,這些指針是磁盤塊區的地址。這些指針非常的重要。操作系統就是依靠這些指針在硬盤上定位相關的文件,並讀取它。如上所述,因為一些意外的操作也會使得這個指針地址出現錯誤。有時候這會非常的嚴重。如一些文件無法讀取等等。如果這些文件不幸的是系統的一些配置文件,那麼就會導致系統的崩潰。如果這些指針地址出現錯誤,則文件名仍然會顯示在操作系統中。但是如果用戶試著去打開這些文件時,系統卻會告知無法打開這些文件。如果遇到這種情況該這麼辦呢?此時系統工程師就需要手工運行fsck命令。如果這個文件損壞的不是很嚴重,那麼操作系統內內核會為其再建立一個鏈接。但是如果原文件損壞的比較厲害了,無法再重新讀取。則系統會建立用戶刪除這個文件(從硬盤中刪除)。

  由於一些文件的屬性(如建立修改時間等等)都保存在Inode結點中,為此一些命令在獲取這些屬性的時候,是不需要打開文件的。如現在系統工程師在編寫一個文件備份程序,就需要用到inode節點中的修改時間截這個屬性。此時可以利用相關的命令直接從inode結點中去獲取,而不需要打開對應的文件去得知這個信息。為此在Unix操作系統中文件備份程序的執行效率會比較高,實現起來也相對簡單一點。

  從上面的這些分析中可以看到,inode結點是Unix操作系統中文件的核心,也是操作系統與硬盤中存儲的數據打交道的一個中介者。如果這個結點信息出現錯誤的話,那麼硬盤中存儲的數據塊就好像是無主的流浪者,無法被用戶所采用。另外我們平時刪除文件,其實只是刪除了這個聯系。所以通過一線恢復工具仍然可以恢復被刪除了的文件。如果需要真正刪除文件的話,就需要格式化硬盤(低格)或者復制大文件把其覆蓋掉。只有如此硬盤中存儲的數據塊才會被真正的刪除掉。最後需要說明的是,按照正常的關機程序來關閉Unix操作系統,是保護inode結點信息的最好措施。突然斷電或者其他意外事故,是inode結點的最大殺手。

Copyright © Linux教程網 All Rights Reserved