1. 程式人生 > >新一代 Linux 檔案系統 btrfs 簡介

新一代 Linux 檔案系統 btrfs 簡介

btrfs 的特性和使用
Btrfs 被稱為是下一代 Linux 檔案系統。近年來 ext2/3 遇到越來越多的擴充套件性問題,在期待 ext4 的同時,人們發現了 btrfs,據說它採用了很多先進的檔案系統設計,不僅解決了 ext2/3 的擴充套件性問題,還讓人們看到了下一代檔案系統所具有的許多其他特性。這一切都讓人不禁心生好奇,btrfs 究竟提供了哪些特性?它是如何實現的?本文便圍繞這些問題展開探討,首先研究了 btrfs 所提供的新特性,並簡要介紹了 btrfs 內部實現這些特性的原理;然後演示了 btrfs 的常用命令。
Btrfs 簡介
檔案系統似乎是核心中比較穩定的部分,多年來,人們一直使用 ext2/3,ext 檔案系統以其卓越的穩定性成為了事實上的 Linux 標準檔案系統。近年來 ext2/3 暴露出了一些擴充套件性問題,於是便催生了 ext4 。在 2008 年釋出的 Linux2.6.19 核心中集成了 ext4 的 dev 版本。 2.6.28 核心釋出時,ext4 結束了開發版,開始接受使用者的使用。似乎 ext 就將成為 Linux 檔案系統的代名詞。然而當您閱讀很多有關 ext4 的文章時,會發現都不約而同地提到了 btrfs,並認為 ext4 將是一個過渡的檔案系統。 ext4 的作者 Theodore Tso 也盛讚 btrfs 並認為 btrfs 將成為下一代 Linux 標準檔案系統。 Oracle,IBM, Intel 等廠商也對 btrfs 表現出了極大的關注,投入了資金和人力。為什麼 btrfs 如此受人矚目呢。這便是本文首先想探討的問題。
Kevin Bowling[1] 有一篇介紹各種檔案系統的文章,在他看來,ext2/3 等檔案系統屬於“古典時期”。檔案系統的新時代是 2005 年由 Sun 公司的 ZFS 開創的。 ZFS 代表” last word in file system ”,意思是此後再也不需要開發其他的檔案系統了。 ZFS 的確帶來了很多嶄新的觀念,對檔案系統來講是一個劃時代的作品。
如果您比較 btrfs 的特性,將會發現 btrfs 和 ZFS 非常類似。也許我們可以認為 btrfs 就是 Linux 社群對 ZFS 所作出的迴應。從此往後在 Linux 中也終於有了一個可以和 ZFS 相媲美的檔案系統。
回頁首
btrfs 的特性
您可以在 btrfs 的主頁上 [2] 看到 btrfs 的特性列表。我自作主張,將那張列表分成了四大部分。
首先是擴充套件性 (scalability) 相關的特性,btrfs 最重要的設計目標是應對大型機器對檔案系統的擴充套件性要求。 Extent,B-Tree 和動態 inode 建立等特性保證了 btrfs 在大型機器上仍有卓越的表現,其整體效能而不會隨著系統容量的增加而降低。
其次是資料一致性 (data integrity) 相關的特性。系統面臨不可預料的硬體故障,Btrfs 採用 COW 事務技術來保證檔案系統的一致性。 btrfs 還支援 checksum,避免了 silent corrupt 的出現。而傳統檔案系統則無法做到這一點。
第三是和多裝置管理相關的特性。 Btrfs 支援建立快照 (snapshot),和克隆 (clone) 。 btrfs 還能夠方便的管理多個物理裝置,使得傳統的卷管理軟體變得多餘。
最後是其他難以歸類的特性。這些特性都是比較先進的技術,能夠顯著提高檔案系統的時間 / 空間效能,包括延遲分配,小檔案的儲存優化,目錄索引等。
擴充套件性相關的特性
B-Tree
btrfs 檔案系統中所有的 metadata 都由 BTree 管理。使用 BTree 的主要好處在於查詢,插入和刪除操作都很高效。可以說 BTree 是 btrfs 的核心。
一味地誇耀 BTree 很好很高效也許並不能讓人信服,但假如稍微花費一點兒時間看看 ext2/3 中元資料管理的實現方式,便可以反襯出 BTree 的優點。