linux ext4,ext3的特點和區別
Linux kernel 自 2.6.28 開始正式支援新的檔案系統 Ext4。 Ext4 是 Ext3 的改進版,修改了 Ext3 中部分重要的資料結構,而不僅僅像 Ext3 對 Ext2 那樣,只是增加了一個日誌功能而已。Ext4 可以提供更佳的效能和可靠性,還有更為豐富的功能:
1. 與 Ext3 相容。 執行若干條命令,就能從 Ext3 線上遷移到 Ext4,而無須重新格式化磁碟或重新安裝系統。原有 Ext3 資料結構照樣保留,Ext4 作用於新資料,當然,整個檔案系統因此也就獲得了 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 允許關閉日誌,以便某些有特殊需求的使用者可以藉此提升效能。
10. 線上碎片整理。 儘管延遲分配、多塊分配和 extents 能有效減少檔案系統碎片,但碎片還是不可避免會產生。Ext4 支援線上碎片整理,並將提供 e4defrag 工具進行個別檔案或整個檔案系統的碎片整理。
11. inode 相關特性。 Ext4 支援更大的 inode,較之 Ext3 預設的 inode 大小 128 位元組,Ext4 為了在 inode 中容納更多的擴充套件屬性(如納秒時間戳或 inode 版本),預設 inode 大小為 256 位元組。Ext4 還支援快速擴充套件屬性(fast extended attributes)和 inode 保留(inodes reservation)。
12. 持久預分配(Persistent preallocation)。 P2P 軟體為了保證下載檔案有足夠的空間存放,常常會預先建立一個與所下載檔案大小相同的空檔案,以免未來的數小時或數天之內磁碟空間不足導致下載失敗。 Ext4 在檔案系統層面實現了持久預分配並提供相應的 API(libc 中的 posix_fallocate()),比應用軟體自己實現更有效率。
13. 預設啟用 barrier。 磁 盤上配有內部快取,以便重新調整批量資料的寫操作順序,優化寫入效能,因此檔案系統必須在日誌資料寫入磁碟之後才能寫 commit 記錄,若 commit 記錄寫入在先,而日誌有可能損壞,那麼就會影響資料完整性。Ext4 預設啟用 barrier,只有當 barrier 之前的資料全部寫入磁碟,才能寫 barrier 之後的資料。(可通過 "mount -o barrier=0" 命令禁用該特性。)
相關文章
- Linux中ext3和ext4有什麼區別?如何選擇?Linux
- char,nchar,varchar,nvarchar的區別和特點
- Linux系統中ext3和ext4有什麼不同?Linux
- Linux中ext3是什麼?有哪些特點?Linux
- 軟體危機和軟體缺陷的特點和區別
- CISC和RISC是什麼?它們的特點和區別?
- CSS中px和em屬性的特點與區別CSS
- Linux 中管理 EXT2、 EXT3 和 EXT4 健康狀況的 4 個工具Linux
- EXT2和EXT3的詳細區別(轉)
- Linux File Systems: Ext2 vs Ext3 vs Ext4Linux
- Linux下誤刪除後的恢復操作(ext3/ext4)Linux
- Docker有哪些特點?與Linux有什麼區別?DockerLinux
- 面試—塊級、行內、內聯元素的特點,常見的元素的特點屬性(href、src的區別,alt和title的區別)面試
- Angular5 - Vue.js -ReactJS 的區別和特點AngularVue.jsReact
- 伺服器動態ip和靜態ip的區別和特點伺服器
- ext3,ext4,xfs和btrfs檔案系統效能對比
- Linux中檔案系統ext2和ext3有什麼區別?Linux
- R語言的特點是什麼?和Python有何區別?R語言Python
- &和&&的一點區別
- 【知識分享】伺服器動態ip和靜態ip的區別和特點伺服器
- var、let、const變數宣告的區別及特點變數
- Devops區別於程式設計師和系統管理員的特點? - Redditdev程式設計師
- 思科-Seven【NAT應用篇】!動態與靜態路由的區別和特點~~~路由
- Linux中“>”和“>>”的區別Linux
- 【Privilege】SYSOPER和SYSDBA特權的區別與聯絡
- Oracle 和 mysql的9點區別OracleMySql
- HashTable和HashMap的六點區別HashMap
- 碼元和碼點的區別
- 認識Linux下Ext2與Ext3檔案系統的區別(轉)Linux
- 人臉識別資料集和特點
- extundelete工具恢復rm -rf 刪除的目錄(ext4、ext3)delete
- g++ 和 gcc 的相同點和區別GC
- ext3 ext4 格式下 rm 誤刪恢復工具 extundeletedelete
- Linux的優缺點,Linux與windows的區別LinuxWindows
- 即時通訊和即時通訊的區別是什麼,都有什麼特點?
- 特網雲 CPU和GPU有什麼區別GPU
- linux的sleep()和usleep()的使用和區別Linux
- ConcurrentHashMap和HashMap的一點區別HashMap