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