1. 程式人生 > >ext2、ext3與ext4的區別

ext2、ext3與ext4的區別

ext2與ext3

Linux ext2/ext3檔案系統使用索引節點來記錄檔案資訊,作用像windows的檔案分配表。索引節點是一個結構,它包含了一個檔案的長度、建立及修改時間、許可權、所屬關係、磁碟中的位置等資訊。一個檔案系統維護了一個索引節點的陣列,每個檔案或目錄都與索引節點陣列中的唯一一個元素對應。系統給每個索引節點分配了一個號碼,也就是該節點在陣列中的索引號,稱為索引節點號。 linux檔案系統將檔案索引節點號和檔名同時儲存在目錄中。所以,目錄只是將檔案的名稱和它的索引節點號結合在一起的一張表,目錄中每一對檔名稱和索引節點號稱為一個連線。 對於一個檔案來說有唯一的索引節點號與之對應,對於一個索引節點號,卻可以有多個檔名與之對應。因此,在磁碟上的同一個檔案可以通過不同的路徑去訪問它。
Linux之前預設情況下使用的檔案系統為Ext2,ext2檔案系統的確高效穩定。但是,隨著Linux系統在關鍵業務中的應用,Linux檔案系統的弱點也漸漸顯露出來了:其中系統預設使用的ext2檔案系統是非日誌檔案系統。這在關鍵行業的應用是一個致命的弱點。本文向各位介紹Linux下使用ext3日誌檔案系統應用。
Ext3檔案系統是直接從Ext2檔案系統發展而來,目前ext3檔案系統已經非常穩定可靠。它完全相容ext2檔案系統。使用者可以平滑地過渡到一個日誌功能健全的檔案系統中來。這實際上了也是ext3日誌檔案系統初始設計的初衷。

Ext3日誌檔案系統的特點
1、高可用性
系統使用了ext3檔案系統後,即使在非正常關機後,系統也不需要檢查檔案系統。宕機發生後,恢復ext3檔案系統的時間只要數十秒鐘。
2、資料的完整性:
ext3檔案系統能夠極大地提高檔案系統的完整性,避免了意外宕機對檔案系統的破壞。在保證資料完整性方面,ext3檔案系統有2種模式可供選擇。其中之一就是“同時保持檔案系統及資料的一致性”模式。採用這種方式,你永遠不再會看到由於非正常關機而儲存在磁碟上的垃圾檔案。
3、檔案系統的速度:
儘管使用ext3檔案系統時,有時在儲存資料時可能要多次寫資料,但是,從總體上看來,ext3比ext2的效能還要好一些。這是因為ext3的日誌功能對磁碟的驅動器讀寫頭進行了優化。所以,檔案系統的讀寫效能較之Ext2檔案系統並來說,效能並沒有降低。
4、資料轉換
  由ext2檔案系統轉換成ext3檔案系統非常容易,只要簡單地鍵入兩條命令即可完成整個轉換過程,使用者不用花時間備份、恢復、格式化分割槽等。用一個ext3檔案系統提供的小工具tune2fs,它可以將ext2檔案系統輕鬆轉換為ext3日誌檔案系統。另外,ext3檔案系統可以不經任何更改,而直接載入成為ext2檔案系統。
5、多種日誌模式
  Ext3有多種日誌模式,一種工作模式是對所有的檔案資料及metadata(定義檔案系統中資料的資料,即資料的資料)進行日誌記錄(data=journal模式);另一種工作模式則是隻對metadata記錄日誌,而不對資料進行日誌記錄,也即所謂data=ordered或者data=writeback模式。系統管理人員可以根據系統的實際工作要求,在系統的工作速度與檔案資料的一致性之間作出選擇。


實際使用Ext3檔案系統
建立新的ext3檔案系統,例如要把磁碟上的hda8分割槽格式化ext3檔案系統,並將日誌記錄在/dev/hda1分割槽,那麼操作過程如下:
[[email protected] root]# mke2fs -j /dev/hda8
mke2fs 1.24a (02-Sep-2001)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
.. .. ..
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
在建立新的檔案系統時,可以看到,ext3檔案系統執行自動檢測的時間為180天或每第31次被mount時,實際上這個引數可以根據需要隨意調節。

以下將新的檔案系統mount到主分割槽/data目錄下:
[[email protected] root]# mount -t ext3 /dev/hda8 /data
說明:以上將已格式化為ext3檔案系統的/dev/hda8分割槽載入到/data目錄下。
ext3 基於ext2 的程式碼,它的磁碟格式和 ext2 的相同;這意味著,一個乾淨卸裝的 ext3 檔案系統可以作為 ext2 檔案系統重新掛裝。Ext3檔案系統仍然能被載入成ext2檔案系統來使用,你可以把一個檔案系統在ext3和ext2自由切換。這時在ext2檔案系統上的ext3日誌檔案仍然存在,只是ext2不能認出日誌而已。

以轉換檔案系統為例,將ext2檔案系統轉換為ext3檔案系統,命令如下:
[[email protected] root]# tune2fs -j /dev/hda9
tune2fs 1.24a (02-Sep-2001)
Creating journal inode: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
這樣,原來的ext2檔案系統就轉換成了ext3檔案系統。注意將ext2檔案系統轉換為ext3檔案系統時,不必要將分割槽缷載下來轉換。
轉換完成後,不要忘記將/etc/fstab檔案中所對應分割槽的檔案系統由原來的ext2更改為ext3。

ext3日誌的存放位置
可以將日誌放置在另外一個儲存裝置上,例如存放到分割槽/dev/hda8。例如要在/dev/hda8上建立一個ext3檔案系統,並將日誌存放在外部裝置/dev/hda2上,則執行以下命令:
[root @stationxx root]#mke2fs -J device=/dev/hda8 /dev/hda2
ext3檔案系統修復
新的e2fsprogs中的e2fsck支援ext3檔案系統。當一個ext3檔案系統被破壞時,先解除安裝該裝置,在用e2fsck修復:
[root @stationxx root] # umount /dev/hda8
[root @stationxx root] #e2fsck -fy /dev/hda8

ext3的優點
為什麼你需要從ext2遷移到ext3呢?以下有四個主要原因:可用性、資料完整性、速度、易於遷移。
1、可用性
在非正常當機後(停電、系統崩潰),只有在通過e2fsck進行一致性校驗後,ext2檔案系統才能被裝載使用。執行e2fsck的時間主要取決於 ext2檔案系統的大小。校驗稍大一些的檔案系統(幾十GB)需要很長時間。如果檔案系統上的檔案數量多,校驗的時間則更長。校驗幾百個GB的檔案系統可能需要一個小時或更長。這極大地限制了可用性。相比之下,除非發生硬體故障,即使非正常關機,ext3也不需要檔案系統校驗。這是因為資料是以檔案系統始終保持一致方式寫入磁碟的。在非正常關機後,恢復ext3檔案系統的時間不依賴於檔案系統的大小或檔案數量,而依賴於維護一致性所需“日誌”的大小。使用預設日誌設定,恢復時間僅需一秒(依賴於硬體速度)。
2、資料完整性
使用ext3檔案系統,在非正常關機時,資料完整效能得到可靠的保障。你可以選擇資料保護的型別和級別。你可以選擇保證檔案系統一致,但是允許檔案系統上的資料在非正常關機時受損;這是可以在某些狀況下提高一些速度(但非所有狀況)。你也可以選擇保持資料的可靠性與檔案系統一致;這意味著在當機後,你不會在新近寫入的檔案中看到任何資料垃圾。這個保持資料的可靠性與檔案系統一致的安全的選擇是預設設定。
3、速度
儘管ext3寫入資料的次數多於ext2,但是ext3常常快於ext2(高資料流)。這是因為ext3的日誌功能優化硬碟磁頭的轉動。你可以從3種日誌模式中選擇1種來優化速度,有選擇地犧牲一些資料完整性。
4、易於遷移
你可以不重新格式化硬碟,並且很方便的從ext2遷移至ext3而享受可靠的日誌檔案系統的好處。對,不需要做長時間的、枯燥的、有可能失誤的“備份-重新格式化-恢復”操作,就可以體驗ext3的優點。有兩種遷移的方法:
· 如果你升級你的系統,Red Hat Linux安裝程式會協助遷移。需要你做的工作 就是為每一個檔案系統按一下選擇按鈕。
· 使用tune2fs程式可以為現存的ext2檔案系統增加日誌功能。如果檔案系統在轉換的過程已經被裝載了(mount),那麼在root目錄下會出現檔案”.journal”;如果檔案系統沒有被裝載,那麼檔案系統中不會出現該檔案。轉換檔案系統,只需要執行tune2fs –j /dev/hda1(或者你要轉換的檔案系統所在的任何裝置名稱),同時把檔案/etc/fstab中的ext2修改為ext3。如果你要轉換自己的根檔案系統,你必須使用initrd引導啟動。參照mkinitrd的手冊描述執行程式,同時確認自己的LILO或GRUB配置中裝載了initrd(如果沒有成功,系統仍然能啟動,但是根檔案系統會以ext2形式裝載,而不是ext3,你可以使用命令cat /proc/mounts 來確認這一點。)詳情可參看tune2fs命令的man page線上手冊(執行man tune2fs)。

總而言之,ext3日誌檔案系統是目前linux系統由ext2檔案系統過度到日誌檔案系統最為簡單的一種選擇,實現方式也最為簡潔。由於是直接從ext2檔案系統發展而來,系統由ext2檔案系統過渡到ext3日誌檔案系統升級過程平滑,可以最大限度地保證系統資料的安全性。目前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(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" 命令禁用該特性。)

相關推薦

ext2ext3ext4區別

ext2與ext3 Linux ext2/ext3檔案系統使用索引節點來記錄檔案資訊,作用像windows的檔案分配表。索引節點是一個結構,它包含了一個檔案的長度、建立及修改時間、許可權、所屬關係、磁碟中的位置等資訊。一個檔案系統維護了一個索引節點的陣列,每個檔案或目錄都與索

Ext2Ext3Ext4區別

這三個都是檔案的系統格式 1>Linux kernel自2.6.28開始正式支援新的檔案系統Ext4; 2>Ext3對Ext2只是增加了一個日誌功能而已,Ext4是Ext3的改進版,修改了Ext3中部分重要的資料結構,提供更加的效能和可靠性,更豐富的功能,更大的檔案系統和更大的檔

Linux分割槽型別EXT2EXT3EXT4詳解

一、EXT2與EXT3    Linux之前預設情況下使用的檔案系統為Ext2,ext2檔案系統的確高效穩定。但是,隨著Linux系統在關鍵業務中的應用,Linux檔案系統的弱點也漸漸顯露出來了:其中系統預設使用的ext2檔案系統是非日誌檔案系統。這在關鍵行業的應用是一

@轉EXT2->EXT3->EXT4

性能 常用 attr 6.2 bar alt time dex xfs Linux文件系統第一篇—從Ext2到Ext3再到Ext4 1 概述 Linux繼承了UNIX一切皆文件的設計哲學,用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設備使用數據塊的概念,用戶使

布局模型 之 層模型(position的relativeabsolutefixed區別?)

absolute fixed relative css的布局模型分為流動模型(Flow)、浮動模型(Float)、層模型(Layer)。 浮動模型(Float)和層模型(Layer)有什麽顯著區別? 浮動模型(Float):浮動是讓某元素脫離文檔流的限制,在浮動框之前和之後的非定位元素

sql之truncate deletedrop區別

重置 模式 表數 class term 相同 run 限制 及其 相同點:truncate 和不帶 where 子句的 delete,以及 drop 都會刪除表內的數據不同點:1. truncate 和 delete 只刪除數據不刪除表的結構(定義)drop 語句將刪除表的

SQL truncate deletedrop區別[z]

全部 事務提交 表數據 語句 ons 刪除一行 使用 參與 備份 [z]https://www.cnblogs.com/8765h/archive/2011/11/25/2374167.html 相同點: 1.truncate和不帶where子句的delete、以及drop

IQueryableIEnumberable IListList區別

接口 ble 基於 持久 功能 泛型接口 div 泛型類 查詢 基本概念:IEnumerable:使用的是LINQ to Object方式,它會將AsEnumerable()時對應的所有記錄都先加載到內存,然後在此基礎上再執行後來的QueryIQeurable(

GitGitlabGithub區別

Git 是一種版本控制系統,是一個命令,是一種工具 Github,Gitlab等產品都是第三方基於git這項技術開發的 Github 是一個基於git實現的線上程式碼倉庫,包含一個網站介面,向網際網路開放 Gitlab 是一個基於git實現的線上程式碼倉庫軟體,你可以用git

12closeshutdown區別

 close終止了資料傳送的兩個方向。  shutdown可以有選擇的終止某個方向的資料傳送或者終止資料傳送的兩個方向。  shutdown how=1就可以保證對等方接收到一個EOF字元,而不管其他程序是否已經打開了套接字。而close不能保證,直到套

C#之基礎篇①(VS快捷鍵WriteLine()Write()區別ReadKey()ReadLine()區別double,float,decimal區別

     今天我們來分享一下VS視訊中第一講內容,這篇內容主要分享的是VS工具的使用以及簡單的資訊顯示、變數宣告。 一、導圖類: 二、程式碼類 2.1、顯示資訊 Console.WriteLine("************

感知器logisticsvm 區別聯絡

從感知器談起 對於典型的二分類問題,線性分類器的目的就是找一個超平面把正負兩類分開。對於這個超平面,我們可以用下面的式子來表示, ωTx+b=0 感知器是最簡單的一種線性分類器。用f(x)表示分類函式,感知器可以如下來表示。 f(x)=sign(ωTx+

apachejettytomcat區別

一、Apache與Tomcat Apache是Web伺服器(靜態解析,如HTML),Tomcat是Java應用伺服器(動態解析,如JSP)。 Tomcat是一個Servlet(JSP)容器,是Apache的擴充套件,可以獨立於Apache執行。 Apache是普通Web伺服器,只支援ht

html——attrvalattrpropattrcss區別

一、attr與val val只能獲取到元素的value值,如: alert($(this).val()+"unselected");this是checkbox;

藍芽紅外線wifi 區別以及不同頻段無線電磁波的穿牆和繞過障礙物能力(轉)

電磁波按波長由大到小的順序為:無線電波、紅外線、可見光、紫外線、X射線、γ射線 以下是幾種常見的電磁波交流電:波長可達數千公里 (如果需要,還可以製造出波長更長的.總之理論上 無上限)  無線電波:長波(波長在幾公里至幾十公里);中波(波長約在3公里至約50米);短波(波

嵌入式檔案系統ext2ext3vfatntfsiso9660jffsromfs和nfs等介紹

轉載來自:http://blog.chinaunix.net/uid-20769502-id-135683.html Linux支援多種檔案系統,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,為了對各類檔案系統 進行統一管理,L

javaweb面試總結(四分散式事務CAP原理和BASE思想JDBC事務和JTA事務的區別2PCTCC區別

CAP原理和BASE思想: http://www.jdon.com/37625分散式事務如何處理?解決方案有很多種!比如事務補償機制:即在事務鏈中的任何一個正向事務操作,都必須存在一個完全符合回滾規則的可逆事務。或者利用訊息系統實現最終一致性;----------------

Spring MVC中WebMvcConfigurerAdapterWebMvcConfigurationSupportWebMvcConfigurer區別

最近參考書籍《Spring Boot實戰——Java EE開發的顛覆者》使用Spring Boot(2.0)搭建Spring MVC(5.0)專案進行配置時候,發現WebMvcConfigurerAdapter已過時檢視原始碼發現WebMvcConfigurerAdapter

HashMapHashTableConcurrentHashMap區別

執行緒不安全的HashMap  在多執行緒環境下,使用HashMap進行put操作會引起死迴圈,導致CPU利用率接近100%,所以在併發情況下不能使用HashMap。例如,執行如下程式碼會引起死迴圈。f

StringStringBufferStringBuilder區別

(1)區別String內容不可變,StringBuffer和StringBuilder內容可變;StringBuilder非執行緒安全(單執行緒使用),String與StringBuffer執行緒安全(多執行緒使用);如果程式不是多執行緒的,那麼使用StringBuilder