歷史
Btrfs宣稱專注在“容錯、修復與易於管理”。
Btrfs已在2010年7月推出的openSUSE11.3中得到了套用.
Btrfs也已在2010年10月推出的ubuntu10.10中得到了套用.
2011年6月8日,在Fedora工程指導委員會會議上,委員會決定Fedora 16將以Btrfs作為默認檔案系統.
2011年8月9日, Fedora撤回了決定,Btrfs不再作為Fedora 16默認檔案系統,原因是時間不充足,無法達到改變默認檔案系統所要滿足的基本要求。
2011年10月5日,Fedora 16測試版發布,BTRFS 將做為其默認檔案系統。
2011年11月8日,Fedora 16正式版發布,默認檔案系統依然採用ext4,並未採用預計的Btrfs檔案系統。
(概述內容來源: )
特性
首先是擴展性 (scalability) 相關的特性,btrfs 最重要的設計目標是應對大型機器對檔案系統的擴展性要求。 Extent,B-Tree 和動態 inode 創建等特性保證了 btrfs 在大型機器上仍有卓越的表現,其整體性能而不會隨著系統容量的增加而降低。
其次是數據一致性 (data integrity) 相關的特性。系統面臨不可預料的硬體故障,Btrfs 採用 COW 事務技術來保證檔案系統的一致性。 btrfs 還支持 checksum,避免了 silent corrupt 的出現。而傳統檔案系統則無法做到這一點。
第三是和多設備管理相關的特性。 Btrfs 支持創建快照 (snapshot),和克隆 (clone) 。 btrfs 還能夠方便的管理多個物理設備,使得傳統的卷管理軟體變得多餘。
最後是其他難以歸類的特性。這些特性都是比較先進的技術,能夠顯著提高檔案系統的時間 / 空間性能,包括延遲分配,小檔案的存儲最佳化,目錄索引等。
相關特性
B-Tree
btrfs 檔案系統中所有的 metadata 都由 B-Tree 管理。使用 B-Tree 的主要好處在於查找,插入和刪除操作都很高效。可以說 B-Tree 是 btrfs 的核心。
一味地誇耀 B-Tree 很好很高效也許並不能讓人信服,但假如稍微花費一點兒時間看看 ext2/3 中元數據管理的實現方式,便可以反襯出 B-Tree 的優點。
妨礙 ext2/3 擴展性的一個問題來自其目錄的組織方式。目錄是一種特殊的檔案,在 ext2/3 中其內容是一張線性表格。
這種結構在檔案個數有限的情況下是比較直觀的設計,但隨著目錄下檔案數的增加,查找檔案的時間將線性增長。 2003 年,ext3 設計者開發了目錄索引技術,解決了這個問題。目錄索引使用的數據結構就是 B-Tree 。如果同一目錄下的檔案數超過 2K,inode 中的 i_data 域指向一個特殊的 block 。在該 block 中存儲著目錄索引 B-Tree 。 B-Tree 的查找效率高於線性表,
但為同一個元數據設計兩種數據結構總是不太優雅。在檔案系統中還有很多其他的元數據,用統一的 BTree 管理是非常簡單而優美的設計。
Btrfs 內部所有的元數據都採用 BTree 管理,擁有良好的可擴展性。 btrfs 內部不同的元數據由不同的 Tree 管理。在 superblock 中,有指針指向這些 BTree 的根。
FS Tree 管理檔案相關的元數據,如 inode,dir 等; Chunk tree 管理設備,每一個磁碟設備都在 Chunk Tree 中有一個 item ; Extent Tree 管理磁碟空間分配,btrfs 每分配一段磁碟空間,便將該磁碟空間的信息插入到 Extent tree 。查詢 Extent Tree 將得到空閒的磁碟空間信息; Tree of tree root 保存很多 BTree 的根節點。比如用戶每建立一個快照,btrfs 便會創建一個 FS Tree 。為了管理所有的樹,btrfs 採用 Tree of tree root 來保存所有樹的根節點; checksum Tree 保存數據塊的校驗和。
基於 Extent 的檔案存儲
現代很多檔案系統都採用了 extent 替代 block 來管理磁碟。 Extent 就是一些連續的 block,一個 extent 由起始的 block 加上長度進行定義。
Extent 能有效地減少元數據開銷。為了進一步理解這個問題,我們還是看看 ext2 中的反面例子。
ext2/3 以 block 為基本單位,將磁碟劃分為多個 block 。為了管理磁碟空間,檔案系統需要知道哪些 block 是空閒的。 Ext 使用 bitmap 來達到這個目的。 Bitmap 中的每一個 bit 對應磁碟上的一個 block,當相應 block 被分配後,bitmap 中的相應 bit 被設定為 1 。這是很經典也很清晰的一個設計,但不幸的是當磁碟容量變大時,bitmap 自身所占用的空間也將變大。這就導致了擴展性問題,隨著存儲設備容量的增加,bitmap 這個元數據所占用的空間也隨之增加。而人們希望無論磁碟容量如何增加,元數據不應該隨之線形增加,這樣的設計才具有可擴展性。
最佳化支持
SSD 是固態存儲 Solid State Disk 的簡稱。在過去的幾十年中,CPU/RAM 等器件的發展始終遵循著摩爾定律,但硬碟 HDD 的讀寫速率卻始終沒有飛躍式的發展。磁碟 IO 始終是系統性能的瓶頸。
SSD 採用 flash memory 技術,內部沒有磁碟磁頭等機械裝置,讀寫速率大幅度提升。 flash memory 有一些不同於 HDD 的特性。 flash 在寫數據之前必須先執行擦除操作;其次,flash 對擦除操作的次數有一定的限制,在目前的技術水平下,對同一個數據單元最多能進行約 10 萬次擦除操作,因此,為了延長 flash 的壽命,應該將寫操作平均到整個 flash 上。
SSD 在硬體內部的微代碼中實現了 wear leveling 等分布寫操作的技術,因此系統無須再使用特殊的 MTD 驅動和 FTL 層。雖然 SSD 在硬體層面做了很多努力,但畢竟還是有限。檔案系統針對 SSD 的特性做最佳化不僅能提高 SSD 的使用壽命,而且能提高讀寫性能。 Btrfs 是少數專門對 SSD 進行最佳化的檔案系統。 btrfs 用戶可以使用 mount 參數打開對 SSD 的特殊最佳化處理。
Btrfs 的 COW 技術從根本上避免了對同一個物理單元的反覆寫操作。如果用戶打開了 SSD 最佳化選項,btrfs 將在底層的塊空間分配策略上進行最佳化:將多次磁碟空間分配請求聚合成一個大小為 2M 的連續的塊。大塊連續地址的 IO 能夠讓固化在 SSD 內部的微代碼更好的進行讀寫最佳化,從而提高 IO 性能 。
平台支持
Arch Linux
openSUSE 11.3
SLES 11 SP1
Ubuntu 10.10
Sabayon Linux
Red Hat Enterprise Linux 6
Fedora 15
MeeGo
Debian
Slackware 13.37
SLES 11 SP2
Oracle Linux 5 和 6
NETGEAR ReadyNAS OS 6.0
商業套用
NETGEAR的ReadyNAS OS 6.0成為第一個將btrfs套用於商業環境的作業系統。NETGEAR聲稱經過其工程師的調試,btrfs已經可以套用於商業環境。ReadyNAS OS 6.0實現了無限制快照,防病毒,即時卷擴展和即時卷保護。已經發布的產品包括:RN102,RN104,RN312,RN314,RN316,RN516.