1、 inode、data block與super blocknode
1. inode用於記錄文件的屬性與權限等信息;一個文件佔用一個inode,同時inode還記錄了該文件的data block的位置。inode的大小有12八、256字節兩種規格。算法
2. data block:用於存儲文件的實際內容。塊大小爲1K、2K、4K字節三種規格。ide
3. super block: 記錄文件系統的總體信息,包括了inode與data block的總量、已使用量、剩餘的旦、卷標、文件系統格式等相關的信息。能夠使用tune2fs -l Partition_Name來查看。spa
注意:以ext2文件系統爲例,對於128字節的inode,除了存儲文件的權限屬性等信息外,只能存12個4字節的文件指向的數據塊號碼。那對於一個大文件來呢,須要幾十上百萬個數據塊來存放文件內容。這個怎麼弄?其中inode除了12個直接的數據指向之外,還有一個間接、一個雙間接、一個三間接的記錄區。所謂間接的意思就是inode的直接指向會指向一個數據block,這個block不存數據,而是存放的文件的數據塊的號碼。對於1K大小的數據塊,能夠存儲256個指向。而256個數據區塊,能夠存儲的文件大小爲256KB;雙間接能夠存儲64MB數據,三間接能夠存儲16G大小的文件; 對於2K和4K大小以及其餘文件系統,算法不相同。但都借用了數據區塊來存放數據區塊號。操作系統
2、 文件是如何存取的it
每一個文件系統在其內部劃分了多個block group,而每一個block group內又包括瞭如下幾個內容:io
1. super block: inode與數據區塊的總量,剩餘的數量,inode與數據區塊的大小,保留等信息。第一個塊組確定有超級塊,後續的塊組,有的有,有的沒有。table
2. 文件系統描述: 描述區塊羣組的開始與結束的區塊,以及說明每一個區段(超級區塊、對照表、inode對照表、數據區塊)分別介於哪個區塊之間,這部分也能用dumpe2fs來查看。class
3. block bitmap:用於記錄哪些block是空的,哪些是已經使用的。循環
4. inode bitmap: 用於記錄哪些inode是空的,哪些是已經使用的。
5. inode table: 用於存儲文件屬性以及該文件數據區塊號碼
6. data block: 用於存儲文件的實際內容。
存取文件時,先檢查用戶對目錄是否有寫和執行權限;接着系統經過inode bitmap查詢哪些inode表是空的,將新文件的屬性寫入空的inode表;根據block bitmap查找哪些data block是空的,是空的則能夠將文件內容寫入到這些block中;更新inode bitmap以及block bitmap,並更新超級塊的信息。
3、 系統如何經過路徑讀取文件內容
舉例說明,查找/etc/passwd文件
1. 先查找/的inode號碼,/的inode裏有記錄/對應的data block;
2. 在/的data block中找到etc目錄對應的inode
3. 讀取etc目錄對應的inode表中,找到etc目錄的數據塊
4. 在etc目錄的數據塊中,找到passwd文件的inode號碼
5. 讀取passwd文件的inode中數據塊指向,並將內容讀取出來。
總結: 從根目錄開始,先找inode,經過inode找到對應的數據區塊;在數據區塊中,分兩種狀況:1. 該文件是目錄,則數據區塊記錄了其下屬子目錄及文件的文件名以及對應的inode; 2. 該文件是非目錄文件,則數據區域記錄了文件的內容。 經過inode--->block--->inode--->block依次循環來讀取文件。在這個過程當中,須要檢查用戶對目錄及文件的權限。
4、 硬鏈拉與軟連接
1. 硬連接是指向同一個inode的多個文件路徑; 目錄不支持硬連接,不能跨文件系統,建立硬連接會增長inode計數。
2. 軟連接指向的是文件實際的訪問路徑,能夠跨文件系統,支持對目錄建立軟連接,刪除軟連接不會影響原文件。
5、 MBR
存儲設備的第一個扇區,也就是最前面的512字節,叫作入引導記錄
1. 主引導記錄的結構
主引導記錄只有512字節,放不了太多東西,它的主要做用是告訴計算機到硬盤的哪個位置去找操做系統。
主引導記錄由如下3個部分組成:
A. 第1-446字節:調用操做系統的機器碼
B. 第447-510字節:分區表 (Partition table)
C. 第511-512字節:主引導記錄簽名(0X55和0XAA)
2. 分區表
硬盤分區有不少好處,考慮到每一個區能夠安裝不一樣的操做系統,主引導記錄呢須知道 將控制權轉交給哪一個區。
分區表的長度只有64字節,裏面又分紅4項,每項16字節。因此一個硬盤 最多隻能分4個一級分區,又叫做主分區。每組的記錄區主要記錄了該區段的起始與結束的柱面號碼。
每一個主分區的16個字節由如下6部分組成:
A. 第1個字節,若是爲0X80,就表示該主分區是激活分區,控制權要轉交給這個分區。4個主分區裏面只能有一個分區是激活的。
B. 第2-4字節:主分區第一個扇區的物理位置(柱面、磁頭、扇區號等)
C. 第5字節:主分區類型
D. 第6-8字節:主分區最後一個扇區的物理位置
E. 第9-12字節:該主分區第一個扇區的邏輯地址
F. 第13-16字節:主分區的扇區總數。
最後的4字節(主分區的扇區總數)決定了這個主分區的長度,也就是說,一個主分區的扇區總數最多不超過2的32次方。
若是每一個扇區爲512字節,則意味着單個分區最大不超過2TB。再考慮到扇區的邏輯地址也是32位,因此單個硬盤可利用的最大空間也不超過2TB。若是想再使用更大的硬盤,只有兩個方法:一是提升每一個扇區的字節數,二是增長扇區總數。
6、 文件名存儲在哪裏,文件的屬性存儲在哪裏
1. 目錄也是文件;
2. 文件的文件名存儲在目錄的數據塊中;
3. 文件的屬性,權限等信息存儲在inode中;