猞猁的選擇:升級Ubuntu 9.10選擇Ext3還是Ext4
原創
【51CTO獨家翻譯】Ext3是一種日志式文件系統,是對ext2系統的擴展,它兼容ext2。日志式文件系統的優越性在于:由于文件系統都有快取層參與運作,如不使用時必須將文件系統卸下,以便將快取層的資料寫回磁盤中。因此每當系統要關機時,必須將其所有的文件系統全部shutdown后才能進行關機。如果在文件系統尚未shutdown前就關機 (如停電) 時,下次重開機后會造成文件系統的資料不一致,故這時必須做文件系統的重整工作,將不一致與錯誤的地方修復。然而,此一重整的工作是相當耗時的,特別是容量大的文件系統,而且也不能百分之百保證所有的資料都不會流失。為了克服此問題,使用所謂‘日志式文件系統 (Journal File System) ’。此類文件系統最大的特色是,它會將整個磁盤的寫入動作完整記錄在磁盤的某個區域上,以便有需要時可以回溯追蹤。由于資料的寫入動作包含許多的細節,像是改變文件標頭資料、搜尋磁盤可寫入空間、一個個寫入資料區段等等,每一個細節進行到一半若被中斷,就會造成文件系統的不一致,因而需要重整。然而,在日志式文件系統中,由于詳細紀錄了每個細節,故當在某個過程中被中斷時,系統可以根據這些記錄直接回溯并重整被中斷的部分,而不必花時間去檢查其他的部分,故重整的工作速度相當快,幾乎不需要花時間。
Ext4是Karmic Koala的默認文件系統。Ext4是一種針對ext3系統的擴展日志式文件系統,是專門為 Linux 開發的原始的擴展文件系統(ext 或 extfs)的第四版。
相對于Ext3,特點如下:
兼容性
Ext3升級到ext4能提供系統更高的性能,消除存儲限制,和獲取新的功能,并且不需要重新格式化分區,ext4會在新的數據上用新的文件結構,舊的文件保留原狀。以ext3 文件系統的方式mount到ext4上會不用新的磁盤格式,而且還能再用ext3來重新掛載,這樣僅僅失去了ext4的優勢。
大文件系統/文件大小
現在ext3支持最大16TB的文件系統。單個文件最大2TB。Ext4增加了48位塊地址,最大支持1EB文件系統,和單個16TB的文件。
1EB = 1024PB = 2^50;
1PB = 1024TB = 2^40;
1TB = 1024GB = 2^30。
子目錄可伸縮性
EXT3每個目錄最大包含32000個子目錄。減去.和..也就是31998
ext4打破了這個限制可以無限制數量的子目錄
Extents
傳統的Unix派生文件系統,使用間接塊映射方案,以跟蹤每塊用于塊相應的數據文件,這對大文件來說是低效率的。現代文件系統使用不同的方法稱為“extends” 。extends基本上指一串連續的物理快。通常叫做數據在下面的N個塊中。一個100MB的文件可以分配到一extends中。而不需要創建一個間接映射表為256000個blocks,(每個block 4kb)大文件被分割為很多范圍。Extends改進了性能并且減少了碎片。因為extends鼓勵在磁盤上連續布局。
Multiblock 分配
ext4使用了一個多塊分配來在一次調用中分配很多塊。替換掉每次分配一個塊,減少系統開銷。在延時分配和extends上十分有用。
延遲分配
延遲分配是一個性能特性(它不修改磁盤格式)。現代文件系統例如XFS,ZFS,btrfs or Reiser 4 并且它盡可能多的延時塊的分配。相對于傳統文件系統(例如Ext3 reiser3 etc)所做的立刻分配塊提供了更好的性能。
日志校驗和
日志是磁盤中最常用的一部分,組成日志的這部分也是最容易出現硬件故障的。并且從一個受損的日志上恢復數據會導致巨大的數據損壞。Ext4 校驗和提供了改進,它允許將EXt3的雙向提交日志格式轉換為單向的,加速文件系統操作,在某些情況下達到20%---因此可靠性和性能同時被改進。
在線碎片整理
當延遲分配,extents 和 multiblock 分配 幫助減少碎片的時候,使用中的文件系統依然會產生碎片。為了解決這個問題,Ext4 將會支持在線碎片整理,并且有一個e4defrag工具可以整理個別文件在整個文件系統中。
索引節點-關聯
擁有大索引節點,納秒時間戳,快速擴展屬性,索引節點保留的特點。Ext3 支持 可設置的索引節點大小(通過 mkfs -l參數)但是默認索引節點大小是128字節。Ext4將默認為256字節。這需要適應一些額外的字段(比如納秒時間戳或者索引節點版本)并且剩余索引節點空間會被用于存放擴展屬性為那些足夠小的對象來適合空間。這樣使訪問那些屬性更快,提高那些使用擴展屬性的應用程序性能3-7倍。在目錄創建的時候保留若干索引節點在里面,預期它們在未來使用。這樣改進性能,因為新文件被創建在目錄中他們可以使用保留索引節點。文件創建和刪除因此更高效。納秒時間戳意味著索引節點字段例如修改時間可以用納秒分辨率替代Ext3中的秒。
持續預分配
這個特性在ext3最新的內核版本中已經可用了,由glic仿真來實現文件系統不支持的功能,允許應用程序預分配磁盤空間:應用程序告訴文件系統來預分配空間,文件系統預分配需要的塊和數據結構。
默認啟用 barrier
磁盤上配有內部緩存,以便重新調整批量數據的寫操作順序,優化寫入性能,因此文件系統必須在日志數據寫入磁盤之后才能寫 commit 記錄,若 commit 記錄寫入在先,而日志有可能損壞,那么就會影響數據完整性。Ext4 默認啟用 barrier,只有當 barrier 之前的數據全部寫入磁盤,才能寫 barrier 之后的數據。(可通過 "mount -o barrier=0" 命令禁用該特性。)
關于Ext4文件系統更多詳細信息可以參看:下一代Linux文件系統前瞻:是BTRFS還是ext4
#p#也許你注意到了,現在已經可以在Ubuntu Jaunty(9.04)上使用Ext4系統。Ext4文件系統對于Ext3文件系統來說是一次巨大的升級。它向下兼容Ext3,因此它非常的穩定。但是近期這個文件系統出現了幾個問題,因此使用的時候需要小心翼翼。
堅持使用Ext3的理由:
1.Ext3是*buntus的的默認文件系統
2.Ext3十分穩定,不必擔心由于系統崩潰造成的文件丟失
3.Ext3是Ubuntu工作站的推薦系統
Ext4的一些問題:
1.有時在Ext4系統中會產生更多的配置文件崩潰報告
2.問題大部分出現在kernel 2.6.30中,因此它不會對Ubuntu Jaunty造成影響,但是會影響Ubuntu Karmic及后續產品
3.其它的一些問題可以參看:http://www.ubuntu.com/getubuntu/releasenotes/904
因此,雖然Ext4是非常出色的文件系統,但是它仍然存在一些缺陷有待解決。但是總體而言,這個系統對于桌面用戶來說還是非常穩定的。如果你采用定期備份的方法,就不會有什么后顧之憂。另外文件丟失的問題也不能完全歸罪與Ext4文件系統,這個問題很大程度上來源于不規范的I/O磁盤設備。關于文件丟失的詳細說明可以參看這里:當心: Ext4 可能造成數據丟失
【編輯推薦】