很長一段時間以來,ext3是很多linux發行版預設的檔案系統,目前ext4已經正式發布,已經有發行版開始使用ext4作為預設的檔案系統了,其實最初的時候ext4是作為ext3的擴充套件,但是為了保證ext3的穩定性等原因,很多人反對直接對ext3進行擴充套件,所以單獨作為了ext4專案。
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的分割槽。
Mark 檔案系統EXT3,EXT4和XFS
檔案系統ext3,ext4和xfs的區別 1.ext3 1 最多只能支援32tb的檔案系統和2tb的檔案,實際只能容納2tb的檔案系統和16gb的檔案 2 ext3目前只支援32000個子目錄 3 ext3檔案系統使用32位空間記錄塊數量和i 節點數量 4 當資料寫入到ext3檔案系統中時,ext3...
檔案系統EXT3,EXT4和XFS的區別
檔案系統ext3,ext4和xfs的區別 1.ext3 1 最多只能支援32tb的檔案系統和2tb的檔案,實際只能容納2tb的檔案系統和16gb的檔案 2 ext3目前只支援32000個子目錄 3 ext3檔案系統使用32位空間記錄塊數量和i 節點數量 4 當資料寫入到ext3檔案系統中時,ext3...
ext3,ext4下誤刪檔案
先新增一塊硬碟 然後分割槽 格式化為ext3 4並掛載 mkfs.ext4 dev sdb1 mkdir data mount dev sdb1 aa extundelete安裝 安裝依賴的軟體包 必須安裝 yum install e2fsprogs y yum install gcc gcc c ...