1. 程式人生 > >Unix檔案系統的層次結構

Unix檔案系統的層次結構

UNIX檔案系統是UNIX系統的心臟部分,提供了層次結構的目錄和檔案。檔案系統將磁碟空間劃分為每1024個位元組一組,稱為塊(block)(也有用512位元組為一塊的,如:SCO XENIX)。編號從0到整個磁碟的最大塊數。 一個磁碟分成一個或多個分割槽,每個分割槽可以包含一個檔案系統 一個分割槽分為三部分: + 超級塊, 檔案系統中第一塊被稱為超級塊。這個塊存放檔案系統本身的結構資訊,比如每個區域的大小,未被使用的磁碟塊的資訊。 + i節點, 超級塊的下一個部分就是i節點表,檔案系統中的每個檔案在該表中都對應一個i節點。i節點是固定長度的記錄項,它包含有關檔案的大部分資訊。Linux檔案系統使用 索引節點i 來記錄檔案資訊,索引節點是一個結構,用固定長度,它包含了一個檔案的長度、建立及修改時間、許可權、所屬關係、磁碟中的位置等資訊。 + 資料區, 檔案的內容儲存在這個區域上,磁碟上所有塊的大小都一樣,如果檔案包含了超過一個塊的內容,則檔案內容會存放在多個磁碟塊中,並把磁碟塊的分配情況記錄在檔案的i節點中的磁碟序列表中。 仔細觀察一個柱面組的i節點和資料塊部分,可以看到下圖所示情況


一個檔案系統維護了一個索引節點的陣列 即為目錄項,目錄項中的每一項包括檔案索引節點i的節點號和檔名,所以目錄只是將檔案的名稱和它的索引節點號結合在一起的一張表。 對於一個檔案來說有唯一的索引節點與之對應,而一個索引節點卻可以有多個檔名與之對應,因此磁碟上的同一個檔案可以通過不同的路徑去訪問它。 在上圖中有兩個目錄項指向同一i節點。每個i節點有一個連結計數器,其值是指向該i節點的目錄項數。只有當連結計數器減少為0時,才可刪除該檔案。這也就是為什麼解除對一個檔案的連結操作並不總是意味著,釋放該檔案佔用的磁碟塊的原因。而且刪除一個目錄項的函式被稱為unlink而不是delete的原因。 每個檔案系統都對它們的i節點進行編號,因此目錄項中的i節點指向同一檔案系統的i節點,不能使一個目錄項指向另一個檔案系統的i節點,因此硬連線不能跨越檔案系統。 當在不更換檔案系統情況下為一個檔案更名時,該檔案的實際內容並未移動,只需構造一個指向現有i節點的新目錄項,並解除與舊目錄項的連結。這就是mv命令的通常操作方式。 介紹完檔案系統之後,下邊瞭解一下符號連結(軟連結)和硬連結的區別 可以用ln命令對一個已經存在的檔案建立一個新的連線,而不復制檔案的內容。連線有軟連線和硬連線之分,軟連線又叫符號連線。 符號連結是指向一個檔案的間接指標,硬連結直接指向檔案的i節點。  硬連線                               軟連線       硬連結指向檔案的i節點                它的資料是它所連線的檔案的路徑名,是指向一個檔案的間接指標   目錄不能有硬連線,但超級使用者可以     目錄也適用  不能跨越檔案系統                     可以跨越檔案系統  檔案在磁碟中只有一個拷貝             也是隻有一份拷貝  索引節點的引用為0時才可以刪除檔案    可以刪除原有檔案保留連線檔案,沒有防誤刪功能    可以防止誤刪除