Linux 文件系統基礎——塊、i節點

     linux文件系統是Linux系統的心臟部分,提供了層次結構的目錄和文件。文件系統將磁盤空間劃分爲每1024個字節一組,稱爲塊(也有用512字節爲一塊的,如:SCOXENIX)。編號從0到整個磁盤的最大塊數。

     全部塊可劃分爲四個部分,塊0稱爲引導塊,文件系統不用該塊;塊1稱爲專用塊,專用塊含有許多信息,其中有磁盤大小和全部塊的其他兩部分的大小。從塊2開始是i節點表,i節點表中含有i節點,表的塊數是可變的,後面將做討論。i節點表之後是空閒存儲塊(數據存儲塊),可用於存放文件內容。

     文件的邏輯結構和物理結構是十分不同的,邏輯結構是用戶敲入cat命令後所看到的文件,用戶可得到表示文件內容的字符流。物理結構是文件實際上如何存放在磁盤上的存儲格式。用戶認爲自己的文件是邊疆的字符流,但實際上文件可能並不是以邊疆的方式存放在磁盤上的,長於一塊的文件通常將分散地存放在盤上。然而當用戶存取文件時,linux文件系統將以正確的順序取出各塊,給用戶提供文件的邏輯結構。

     當然,在linux系統的某處一定會有一個表,告訴文件系統如何將物理結構轉換爲邏輯結構。這就涉及到i節點了。i節點是一個64字節長的表,含有有關一個文件的信息,其中有文件大小、文件所有者、文件存取許可方式,以及文件爲普通文件、目錄文件還是特別文件等。在i節點中最重要的一項是磁盤地址表。

     該表中有13個塊號。前10個塊號是文件前10塊的存放地址。這10個塊號能給出一個至多10塊長的文件的邏輯結構,文件將以塊號在磁盤地址表中出現的順序依次取得相應的塊。當文件長於10塊時又怎樣呢?磁盤地址表中的第11項給出一個塊號,這個塊號指出的塊中含有256個塊號,至此,這種方法滿足了至多長於266塊的文件(272384字節)。如果文件大於266塊,磁盤地址表的第12項給出一個塊號,這個塊號指出的塊中含有256個塊號,這256個塊號的每一個塊號又指出一塊,塊中含256個塊號,這些塊號才用於取文件的內容。磁盤地址中和第13項索引尋址方式與第12項類似,只是多一級間接索引。

     這樣,在linux系統中,文件的最大長度是16842762塊,即17246988288字節,有幸是Linux系統對文件的最大長度(一般爲1到2M字節)加了更實際的限制,使用戶不會無意中建立一個用完整個磁盤區所有塊的文件。

    文件系統將文件名轉換爲i節點的方法實際上相當簡單。一個目錄實際上是一個含有目錄表的文件:對於目錄中的每個文件,在目錄表中有一個入口項,入口項中含有文件名和與文件相應的i節點號。當用戶敲入catxxx時,文件系統就在當前目錄表中查找名爲xxx的入口項,得到與文件xxx相應的i節點號,然後開始取含有文件xxx的內容的塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章