ext3還是使用15個inode來查詢資料塊,前12個為直接資料塊,直接指向儲存資料的資料塊,接下來分別為一級間接塊,二級間接塊,**間接塊,如下圖:
其中point本來也是資料塊,現在拿來做資料塊的索引用,其中ext3的標頭檔案定義為:__u32 i_block[ext3_n_blocks];/* pointers to blocks */,所以可以計算ext3檔案系統的極限:
最大分割槽:
因為定義的是無符號32位數,所以可能定位的block範圍為2^32,也就是4g,如果乙個block大小為4kb,所以為4g * 4kb = 16tb
最大檔案:
前面直接指向12個資料塊,一級間接塊最大為block size / 4,block size就是資料塊的大小,因為乙個索引是4個位元組,所以除以4,這樣計算下來,最大的檔案可以使用的總塊數為:12 + (block size/4) + (block size/4)^2 + (block size/4)^3,如果block size大小為4k,則為(12 + 2^10 + 2^20 + 2^30) * 2^12 約等於4t。
為了突破ext3這個大小限制,ext4使用了48位的資料塊索引空間,同時使用了如下結構代替inode索引的方式:
struct ext3_extent ;
這樣查詢資料塊的時候就不是每個塊建立乙個索引,而且使用連續的資料塊,也就是分別指示起始位置,以及連續的塊數,這樣在大檔案的時候,磁碟io效率以及查詢資料塊效率上都有很大的提高,所以ext4的檔案系統也比ext3出色。因為使用了48位的索引空間,所以在4kb塊大小的情況下,檔案系統的極限是2^48 * 4kb = 1eb,不過,目前由於工具的限制,只能使用16tb的分割槽。
ext3與ext4的主要區別
linux kernel自2.6.28開始正式支援新的檔案系統 ext4。 ext4是ext3的改進版,修改了ext3中部分重要的資料結構,而不僅僅像ext3對ext2那樣,只是增加了乙個日誌功能而已。ext4 可以提供更佳的效能和可靠性,還有更為豐富的功能:
2.更大的檔案系統和更大的檔案。較之ext3目前所支援的最大16tb檔案系統和最大2tb檔案,ext4分別支援1eb(1,048,576tb,1eb=1024pb,1pb=1024tb)的檔案系統,以及16tb 的檔案。
3.無限數量的子目錄。ext3目前只支援32,000個子目錄,而ext4支援無限數量的子目錄。
4.extents。ext3採用間接塊對映,當操作大檔案時,效率極其低下。比如乙個 100mb 大小的檔案,在ext3中要建立25,600個資料塊(每個資料塊大小為 4kb)的對映表。而ext4引入了現代檔案系統中流行的extents概念,每個 extent 為一組連續的資料塊,上述檔案則表示為「該檔案資料儲存在接下來的25,600個資料塊中」,提高了不少效率。
5.多塊分配。當 寫入資料到 ext3 檔案系統中時,ext3 的資料塊分配器每次只能分配乙個 4kb 的塊,寫乙個 100mb 檔案就要呼叫 25,600 次資料塊分配器,而 ext4 的多塊分配器「multiblock allocator」(mballoc) 支援一次呼叫分配多個資料塊。
6.延遲分配。ext3的資料塊分配策略是盡快分配,而 ext4 和其它現代檔案作業系統的策略是盡可能地延遲分配,直到檔案在 cache 中寫完才開始分配資料塊並寫入磁碟,這樣就能優化整個檔案的資料塊分配,與前兩種特性搭配起來可以顯著提公升效能。
7.快速 fsck。以前執行 fsck 第一步就會很慢,因為它要檢查所有的 inode,現在 ext4 給每個組的 inode 表中都新增了乙份未使用 inode 的列表,今後 fsck ext4 檔案系統就可以跳過它們而只去檢查那些在用的 inode 了。
8.日誌校驗。日誌是最常用的部分,也極易導致磁碟硬體故障,而從損壞的日誌中恢復資料會導致更多的資料損壞。ext4的日誌校驗功能可以很方便地判斷日誌資料是否損壞,而且它將 ext3 的兩階段日誌機制合併成乙個階段,在增加安全性的同時提高了效能。
9.「無日誌」(no journaling)模式。日誌總歸有一些開銷,ext4允許關閉日誌,以便某些有特殊需求的使用者可以藉此提公升效能。
11.inode 相關特性。ext4支援更大的inode,較之ext3預設的inode大小128位元組,ext4為了在 inode 中容納更多的擴充套件屬性(如納秒時間戳或inode版本),預設inode大小為256位元組。ext4 還支援快速擴充套件屬性(fast extended attributes)和inode保留(inodes reservation)。
Linux下Ext2與Ext3檔案系統的區別
ext2 是 gnu linux 系統中標準的檔案系統,其特點為訪問檔案的效能極好,對於中小型的檔案更顯示出優勢,這主要得利於其簇快取層的優良設計。其單一檔案大小與檔案系統本身的容量上限與檔案系統本身的簇大小有關,在一般常見的 x86 電腦系統中,簇最大為 4kb,則單一檔案大小上限為 2048gb...
Ext2與Ext3檔案系統的區別
ext2 是 gnu linux 系統中標準的檔案系統,其特點為訪問檔案的效能極好,對於中小型的檔案更顯示出優勢,這主要得利於其簇快取層的優良設計。其單一檔案大小與檔案系統本身的 容量上限與檔案系統本身的簇大小有關,在一般常見的 x86 電腦系統中,簇最大為 4kb,則單一檔案大小上限為 2048g...
Ext2與Ext3檔案系統的區別
ext2 是 gnu linux 系統中標準的檔案系統,其特點為訪問檔案的效能極好,對於中小型的檔案更顯示出優勢,這主要得利於其簇快取層的優良設計。其單一檔案大小與檔案系統本身的容量上限與檔案系統本身的簇大小有關,在一般常見的 x86 電腦系統中,簇最大為 4kb,則單一檔案大小上限為 2048gb...