您好,登錄后才能下訂單哦!
一、 inode、data block與super block
1. inode用于記錄文件的屬性與權限等信息;一個文件占用一個inode,同時inode還記錄了該文件的data block的位置。inode的大小有128、256字節兩種規格。
2. data? block:用于存儲文件的實際內容。塊大小為1K、2K、4K字節三種規格。
3. super block: 記錄文件系統的整體信息,包括了inode與data block的總量、已使用量、剩余的旦、卷標、文件系統格式等相關的信息。可以使用tune2fs -l? Partition_Name來查看。
注意:以ext2文件系統為例,對于128字節的inode,除了存儲文件的權限屬性等信息外,只能存12個4字節的文件指向的數據塊號碼。那對于一個大文件來呢,需要幾十上百萬個數據塊來存放文件內容。這個怎么弄?其中inode除了12個直接的數據指向以外,還有一個間接、一個雙間接、一個三間接的記錄區。所謂間接的意思就是inode的直接指向會指向一個數據block,這個block不存數據,而是存放的文件的數據塊的號碼。對于1K大小的數據塊,可以存儲256個指向。而256個數據區塊,可以存儲的文件大小為256KB;雙間接可以存儲64MB數據,三間接可以存儲16G大小的文件;???? 對于2K和4K大小以及其他文件系統,算法不相同。但都借用了數據區塊來存放數據區塊號。
二、 文件是如何存取的
每個文件系統在其內部劃分了多個block group,而每個block group內又包括了以下幾個內容:
1. super block:?? inode與數據區塊的總量,剩余的數量,inode與數據區塊的大小,保留等信息。第一個塊組肯定有超級塊,后續的塊組,有的有,有的沒有。
2. 文件系統描述: 描述區塊群組的開始與結束的區塊,以及說明每個區段(超級區塊、對照表、inode對照表、數據區塊)分別介于哪一個區塊之間,這部分也能用dumpe2fs來查看。
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,并更新超級塊的信息。
三、 系統如何通過路徑讀取文件內容
舉例說明,查找/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依次循環來讀取文件。在這個過程中,需要檢查用戶對目錄及文件的權限。
四、 硬鏈拉與軟鏈接
1. 硬鏈接是指向同一個inode的多個文件路徑; 目錄不支持硬鏈接,不能跨文件系統,創建硬鏈接會增加inode計數。
2. 軟鏈接指向的是文件實際的訪問路徑,可以跨文件系統,支持對目錄創建軟鏈接,刪除軟鏈接不會影響原文件。
五、 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。如果想再使用更大的硬盤,只有兩個方法:一是提高每個扇區的字節數,二是增加扇區總數。
六、 文件名存儲在哪里,文件的屬性存儲在哪里
1. 目錄也是文件;
2. 文件的文件名存儲在目錄的數據塊中;
3. 文件的屬性,權限等信息存儲在inode中;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。