深入了解日志文件系統(tǒng)
通俗的說,計(jì)算機(jī)的文件系統(tǒng)就是一個(gè)像磁盤這樣的存儲(chǔ)設(shè)備如何存儲(chǔ)、檢索以及管理文件的方式。文件系統(tǒng)需要記錄的不僅是文件本身每一個(gè)字節(jié),及其在存儲(chǔ)設(shè)備上的位置,還要存儲(chǔ)文件相關(guān)的信息。比如,也要存儲(chǔ)每個(gè)文件的名字、文件存放的層次結(jié)構(gòu)(目錄),還有文件的元數(shù)據(jù),像文件的修改時(shí)間等。
雖然在linux上可以使用許多不同的文件系統(tǒng),但是絕大多數(shù)用戶很少去關(guān)注使用哪一個(gè),它們通常都被忽視了。選擇使用什么樣的文件系統(tǒng)視情況而定,要考慮的相關(guān)因素包括兼容性、性能、還原能力、使用的介質(zhì)、存儲(chǔ)介質(zhì)的大小和數(shù)量、特性,還有安全考慮等。
日志文件系統(tǒng)是一種特殊類型的文件系統(tǒng),它記錄一個(gè)被稱為日志的追蹤文件。日志可以讓系統(tǒng)能夠修復(fù)在異常終止時(shí)出現(xiàn)的不一致情況。它通過追蹤之前提交到主文件系統(tǒng)的更改。在計(jì)算機(jī)非正常關(guān)機(jī)的情況下,任何數(shù)據(jù)丟失都可被重建。因此,這種文件系統(tǒng)不太可能遭受破壞,并且可以使文件系統(tǒng)快速恢復(fù)工作。
為了深入了解日志文件系統(tǒng)的使用,我們整理出一個(gè)首選列表。
現(xiàn)在,讓我們討論一下手邊的日志文件系統(tǒng)。
- ext3 許多流行的Linux發(fā)行版默認(rèn)的文件系統(tǒng)
- XFS 為高性能和大文件設(shè)計(jì)的文件系統(tǒng)
- Btrfs 校檢copy-on-write(寫入時(shí)復(fù)制)文件系統(tǒng)
- ext4 由ext3增加許多顯著特性和擴(kuò)展進(jìn)化而來的文件系統(tǒng)
ext3
ext3,或者叫第三擴(kuò)展文件系統(tǒng),它是一個(gè)通常被用于Linux內(nèi)核的日志文件系統(tǒng)。日志功能意味著不用對(duì)fsck等待過久和擔(dān)心損壞元數(shù)據(jù)。
它是包括Debian在內(nèi)的許多流行的Linux發(fā)行版的默認(rèn)文件系統(tǒng)。ext3 最初發(fā)布時(shí)間是1999年9月。
Ext3 默認(rèn)保留了%5的可用空間,主要的原因是保證超級(jí)用戶(root)甚至在文件系統(tǒng)已滿的情況下能夠登錄。
ext3
0.9.18
價(jià)格 : 免費(fèi)下載
大小 : 13.8KB
協(xié)議 : GNU GPL
開發(fā)者 : Stephen Tweedie
網(wǎng)站 : ftp://ftp.kernel.org/
特性包括:
- 簡單,健壯,可擴(kuò)展
- 內(nèi)核和用戶空間的代碼已廣泛測(cè)試
- 在ext2上增加的特性
- 日志 :提高可靠性,并且異常關(guān)機(jī)后不需要檢查文件系統(tǒng)
- 各種日志模式:日志,有序,寫回
- 文件系統(tǒng)被重新掛載時(shí)自動(dòng)恢復(fù)
- 所有的VFS操作(包括配額)都會(huì)記錄到日志
- 添加數(shù)據(jù)的更新也被記錄日志
- 在線文件系統(tǒng)的擴(kuò)容
- 在大目錄上使用Htree索引
- 擴(kuò)展屬性塊和大量的inode
- 支持在線文件系統(tǒng)的大小調(diào)整
- 哈希索引的目錄
- 文件/設(shè)備都支持日志
- 目錄項(xiàng)中記錄文件類型
- 日志恢復(fù)依賴
- 減少塊組的備份
- 減少超級(jí)塊的備份
- 文件可大于2GiB
- 易于自ext2遷移文件系統(tǒng),而不需要備份,恢復(fù)和格式化分區(qū)
- UNIX權(quán)限, ACL和其它的安全屬性
XFS
XFS 是一個(gè)64位的、高性能的支持文件系統(tǒng)一致性的日志文件系統(tǒng),由Silicon Graphics公司所開發(fā)。是IRIX5.3和以后版本的默認(rèn)文件系統(tǒng),后來又移植到Linux內(nèi)核。
XFS結(jié)合先進(jìn)的日志技術(shù)和完整的64位尋址還有可擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)和算法。
XFS從Linux 2.4開始一直留在官方Linux內(nèi)核內(nèi)核樹。所有現(xiàn)代的Linux發(fā)行版都支持XFS。
XFS
價(jià)格 : 免費(fèi)下載
協(xié)議 : GNU GPL v2
開發(fā)者 : Silicon Graphics Inc.
網(wǎng)站 : http://oss.sgi.com/projects/xfs/
支持 : http://XFS.org, FAQ, 郵件列表
特性包括:
- 快速恢復(fù) - 意外中斷后,重新啟動(dòng)非常快,不受管理文件的數(shù)量影響
- 快速事務(wù) - 提供優(yōu)越的日志同時(shí)盡量減少日志在讀取和寫入數(shù)據(jù)事務(wù)時(shí)對(duì)性能的影響
- 大規(guī)模的可擴(kuò)展性 - 支持最大文件系統(tǒng)為8 EiB - 1(1024PiB - 1)
- 有效分配 - 實(shí)現(xiàn)極其復(fù)雜的空間管理技術(shù)
- 出色的帶寬占用 - 能夠提供非常接近底層的硬件本身I/O性能
- 提供日志文件系統(tǒng)元數(shù)據(jù),在實(shí)際磁盤塊更新前首先寫入一個(gè)連續(xù)的日志來更新文件系統(tǒng)
- 支持文件系統(tǒng)的掛載卷增長,使文件系統(tǒng)的“凍結(jié)”和“解凍”操作支持卷級(jí)快照,并提供了一個(gè)在線的文件碎片整理工具
- 實(shí)現(xiàn)完整的日志擴(kuò)展屬性
- 支持ACL語義和在POSIX 1003.1e標(biāo)準(zhǔn)草案的接口描述
- 兼容NFS
- 使用開源的Samba服務(wù)導(dǎo)出XFS文件系統(tǒng)到Microsoft Windows系統(tǒng)
- 數(shù)據(jù)管理API(DMAPI/XDSM的)允許實(shí)施不修改內(nèi)核的分層存儲(chǔ)管理軟件
- 支持“實(shí)時(shí)子卷”的概念 - 一個(gè)獨(dú)立的區(qū)域只有文件數(shù)據(jù)存儲(chǔ)的磁盤空間
Btrfs
Btrfs(B-樹文件系統(tǒng))是一個(gè)Linux寫入時(shí)復(fù)制(Copy on Write)文件系統(tǒng)。寫入時(shí)復(fù)制(COW)是維護(hù)數(shù)據(jù)集合的副本和使用相同數(shù)據(jù)處理多個(gè)任務(wù)時(shí)管理資源的優(yōu)化技術(shù)(譯者注:用于保留某些數(shù)據(jù)的原始副本的一種技術(shù)。在寫入操作修改數(shù)據(jù)時(shí),會(huì)復(fù)制數(shù)據(jù)的原始副本)。
這個(gè)日志文件系統(tǒng)的目的是給Linux帶來更高效的存儲(chǔ)管理和更好的數(shù)據(jù)完整性功能。
Btrfs很好的實(shí)現(xiàn)了高級(jí)特性,同時(shí)保持了容錯(cuò)性、可擴(kuò)展性和可靠性。這個(gè)文件系統(tǒng)自2007年以來一直在開發(fā),它的基礎(chǔ)代碼現(xiàn)在已經(jīng)到達(dá)了一個(gè)成熟的水平,其磁盤格式應(yīng)該不會(huì)改變。基礎(chǔ)代碼還在密集的開發(fā)中。
Btrfs 首次亮相在Linux2.6.29發(fā)布時(shí)。Btrfs可以處理多達(dá)264個(gè)字節(jié),少了幾百特殊項(xiàng)。
Btrfs
價(jià)格 : 免費(fèi)下載
協(xié)議 : GNU GPL
開發(fā)者 : Oracle Corporation
網(wǎng)站 : http://btrfs.wiki.kernel.org
支持 : Btrfs初學(xué)者指南, 我如何使用Btrfs先進(jìn)的功能, Btrfs文件系統(tǒng)入門
選擇評(píng)論: Josef Bacik
特性包括:
- 可擴(kuò)展,64位文件系統(tǒng)能夠跨越卷提供文件,文件系統(tǒng)最大可達(dá)16EiB
- 集成了卷管理
- 在線文件系統(tǒng)的碎片整理 - 可用在卷掛載或在線時(shí)整理卷碎片
- 脫機(jī)文件系統(tǒng)檢查
- 在線卷增長和收縮
- 在線塊設(shè)備的添加和刪除
- 在線平衡(移動(dòng)對(duì)象在塊設(shè)備之間來平衡負(fù)載)
- 使用B-樹結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù)類型和存儲(chǔ)在磁盤上的信息點(diǎn)
- 在線數(shù)據(jù)擦除發(fā)現(xiàn)錯(cuò)誤和自動(dòng)修復(fù)文件冗余副本
- 延遲分配以便更好的磁盤分配
- 空間高效的打包小文件
- 空間高效的索引目錄
- 子卷(單獨(dú)的內(nèi)部文件系統(tǒng)root)
- 透明壓縮(zlib和LZO)
- 容易使用的可寫快照,只讀快照。在快照目錄下,快照被看做一般的目錄
- 發(fā)送/接收(以二進(jìn)制流保存快照之間的差別)
- 數(shù)據(jù)一致性:
- 內(nèi)置RAID支持(RAID0,RAID1,RAID5,RAID6和RAID10) ??捎糜跀?shù)據(jù)擦除,特別是RAID 1
- 故障隔離和校驗(yàn)和算法 - 從用戶數(shù)據(jù)分開存儲(chǔ)的元數(shù)據(jù)實(shí)現(xiàn)故障隔離
- 校驗(yàn)數(shù)據(jù)和元數(shù)據(jù)(CRC- 32C) ,可以選擇關(guān)閉數(shù)據(jù)校驗(yàn)和
- 即使在一個(gè)單一的設(shè)備,元數(shù)據(jù)被冗余存儲(chǔ)在兩個(gè)位置
- 重建次數(shù)
- 加密
- 文件克?。ㄔ趩蝹€(gè)文件寫入時(shí)復(fù)制,或字節(jié)范圍)
- 原地遷移ext3/4到BTRFS(支持回滾)
- 文件系統(tǒng)seeding
- SSD (閃存)識(shí)別(TRIM /丟棄報(bào)告重用的空閑塊)和優(yōu)化
- 文件條帶化,文件鏡像化,文件條帶化+鏡像化,單雙奇偶校驗(yàn)實(shí)現(xiàn)條帶化
- 每個(gè)子卷分層配額
- 基于擴(kuò)展的文件存儲(chǔ)
- 提供了用戶最低限度的調(diào)整,以防范濫用
ext4
ext4,也叫做第四擴(kuò)展文件系統(tǒng),是一個(gè)由ext3演變而來的Linux日志文件系統(tǒng)。它在Linux內(nèi)核2.6.28很穩(wěn)定。
ext4的增加了許多重要特性 : 一個(gè)單一的連續(xù)塊的描述符,而不是傳統(tǒng)的ext2和ext3所使用的塊映射體系。這是一個(gè)表示大文件的有效方式,更高效的CPU 利用和更少的元數(shù)據(jù)的輸入輸出(I/O)。這也使文件系統(tǒng)檢查更快,更加有利的于文件系統(tǒng)規(guī)模的增長。
ext4
價(jià)格 : 免費(fèi)下載
協(xié)議 : GNU GPL
開發(fā)者 :Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, others
網(wǎng)站 : http://ext4.wiki.kernel.org
特性包括:
- 擴(kuò)展屬性塊和大量的inode
- 基于擴(kuò)展的磁盤格式
- 在線碎片整理
- 在線文件系統(tǒng)的大小預(yù)先調(diào)整
- 哈希索引目錄
- 文件/設(shè)備都記錄日志
- 目錄項(xiàng)中記錄文件類型
- 使用日志恢復(fù)
- 文件分配擴(kuò)展格式
- 支持超過232個(gè)文件系統(tǒng)塊
- 靈活的塊組元數(shù)據(jù)的位置
- 減少塊組的備份
- 減少超級(jí)塊的備份
- 文件可大于2GiB
- 組描述符校驗(yàn)和稀疏inode表
- 超過32000個(gè)子目錄
- inode特性
- 更多的inode
- inode的預(yù)訂
- 納秒級(jí)時(shí)間戳和創(chuàng)建時(shí)間
- 文件可大于2TiB
- 日志校驗(yàn) - 可以校驗(yàn)日志數(shù)據(jù)來判斷日志塊是否發(fā)生故障或損壞
- 可以選擇關(guān)閉日志
- 持久預(yù)分配
- 向后兼容ext2和ext3
- 分配方案:
- 持久預(yù)分配
- 延遲分配
- 多塊分配
- 條塊化感知分配
- 擴(kuò)展屬性
- 配額日志
- 實(shí)現(xiàn) discard/TRIM(譯者注:任務(wù)相關(guān)教學(xué)法)
via: http://www.linuxlinks.com/article/20130927180305497/JournalingFileSystems.html