Linux中ext3和ext4有什麼區別?如何選擇?
在Linux系統中,日誌檔案系統分為很多種型別,其中比較典型的是:ext3、ext4、xfs等,那麼Linux中EXT3與EXT4的區別有哪些?以下是詳細的內容介紹。
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的檔案系統,以及16TB的檔案。
3、無限數量的子目錄
ext3目前只支援32000個子目錄,而ext4支援無限數量的子目錄。
4、extents
ext3採用間接塊對映,當操作大檔案時,效率極其低下。比如一個100MB大小的檔案,在ext3中要建立25600個資料塊的對映表。而ext4引入了現代檔案系統中流行的extents概念,每個extents為一組連續的資料塊,上述檔案則表示為該檔案資料儲存在接下來的25600個資料塊中,提高了不少效率。
5、多塊分配
當寫入資料到ext3檔案系統中時,ext3的資料塊分配器每次只能分配一個4KB的塊,寫一個100MB檔案就要呼叫25600次資料塊分配器,而ext4的多塊分配器multiblock allocator支援一次呼叫分配多個資料塊。
6、延遲分配
ext3的資料塊分配策略是儘快分配,而ext4和其它現代檔案作業系統的策略是儘可能地延遲分配,直到檔案在cache中寫完才開始分配資料塊並寫入磁碟,這樣就能最佳化整個檔案的資料塊分配,與前兩種特性搭配起來可以顯著提升效能。
7、快速fsck
以前執行fsck第一步就會很慢,因為它要檢查所有的inode,現在ext4給每個組的inode表中都新增了一份未使用的inode的列表,今後fsck ext4檔案系統就可以跳過它們而只去檢查那些在用的inode了。
8、日誌校驗
日誌是最常用的部分,也極易導致磁碟硬體故障,而從損壞的日誌中恢復資料會導致更多的資料損壞。ext4的日誌校驗功能可以很方便地判斷日誌資料是否損壞,而且它將ext3的兩階段日誌機制合併成一個階段,在增加安全性的同時提高了效能。
9、無日誌模式
日誌總歸有一些開銷,ext允許關閉日誌,以便某些有特殊需求的使用者可以藉此提升效能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2927758/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux系統中ext3和ext4有什麼不同?Linux
- linux ext4,ext3的特點和區別Linux
- Linux中檔案系統ext2和ext3有什麼區別?Linux
- CentOS和Ubuntu有什麼區別?選擇Linux哪個版本好?CentOSUbuntuLinux
- Linux和Windows系統有什麼不同?如何選擇?LinuxWindows
- 如何正確選擇iOS簽名,它們有什麼區別iOS
- 在Linux中,umask 和 ulimit有什麼區別?LinuxMIT
- Linux中apt和apt-get命令有什麼區別?如何使用?Linuxapt-get
- Linux中fork和exec是什麼?有何區別?Linux
- c++中&和&&有什麼區別C++
- Linux中ext3是什麼?有哪些特點?Linux
- Linux和Unix有什麼區別?兩者有什麼關係Linux
- 住宅代理與資料中心代理有什麼區別,怎麼選擇?
- linux和ubuntu區別是什麼?有什麼關係?LinuxUbuntu
- python中isinstance()和type()有什麼區別?如何使用?Python
- *和body有什麼區別
- Linux中什麼是打包?與歸檔有什麼區別?Linux
- Linux中su和sudo命令有什麼區別?Linux學習教程Linux
- Debian和Ubuntu有什麼不同嗎?該如何選擇?Ubuntu
- Linux下如何選擇檔案系統:EXT4、Btrfs 和 XFSLinux
- Objective-C 和 C++ 的區別有哪些?為什麼蘋果會選擇前者?ObjectC++蘋果
- WPF中的StaticResource和DynamicResource有什麼區別
- php中const和define有什麼區別PHP
- java泛型中<?>和<T>有什麼區別?Java泛型
- C++中vector*和vector有什麼區別C++
- C# 中的 == 和 equals()有什麼區別?C#
- SQLAlchemy中filter()和filter_by()有什麼區別SQLFilter
- Keil中translate,build和rebuild有什麼區別Rebuild
- Linux和Windows有什麼區別啊?Linux怎麼樣?LinuxWindows
- Linux中Vi和Vim區別是什麼?Linux
- Linux中打包和壓縮是什麼?兩者有何區別?Linux
- Linux中raid和lvm有什麼區別?Linux學習教程LinuxAILVM
- Cache 和 Buffer 有什麼區別?
- mongodb和mysql有什麼區別MongoDBMySql
- shim和polyfill有什麼區別
- float和double有什麼區別?
- int 和 Integer 有什麼區別
- cookie和session 有什麼區別?CookieSession