Btrfs 會是 Linux 的將來麼?竟讓 Facebook 省了三分之一的服務器

Facebook
徐九丨發自 思否編輯部php

Btrfs 文件系統已有十多年曆史,但由於在性能和可靠性方面存在一直質疑,致使其未能普及。不過隨着 ext 4 的更新發布,業內出現了「Btrfs 纔是 Linux 的將來」的論調。緩存

FaceBook 是少數大規模採用 Btrfs 的科技公司,爲何會選擇 Btrfs?應用以後有沒有取得預期的效果?服務器

Btrfs 的背景

Btrfs(B-tree 文件系統,一般念成 Butter FS,Better FS 或 B-tree FS),一種支持寫入時複製(COW)的文件系統,運行在 Linux 操做系統,採用 GPL 受權。分佈式

Btrfs 是 Oracle 2007 年基於 GPL 協議開源的 Linux 文件系統,在 2014 年 8 月發佈穩定版。目標是取代 Linux 目前的 ext3 文件系統,改善 ext3 的限制,特別是單個文件的大小,總文件系統大小或文件檢查和加入 ext3 未支持的功能,像是可寫快照(writable snapshots)、快照的快照(snapshots of snapshots)、內建磁盤陣列(RAID),以及子卷(subvolumes)。性能

對於大部分文件系統來講,在磁盤上建立好文件系統,而後再掛載到系統中去就完事了。但對於 Btrfs 來講,除了在格式化和掛載的時候指定不一樣的參數外,還支持不少其餘的功能。好比:管理多塊硬盤、支持 LVM 和 RAID 等測試

Btrfs也宣稱專一在「容錯、修復及易於管理」,也是 Linux 下你們公認的將會替代 ext4 的下一代文件系統。spa

Btrfs 讓 FaceBook 省了三分之一的服務器?

Chris Mason 是開源文件系統項目 Btrfs 的主要貢獻者,最初在 Oracle 從事 Btrfs 的開發,後來加入 Facebook 的 Linux 內核技術小組繼續從事 Btrfs 文件系統的研發工做。操作系統

幾年前的採訪中,他就曾提到:blog

在 Facebook 內部,有針對性地使用 Btrfs 的一些特性來提升手頭工做的性能,比較關注在系統任務管理、快照之類的事情上。Facebook 全部的基礎設施都使用了 Linux。圍繞分佈式操做系統利用了 Btrfs 的不少特性,好比分佈式任務管理、利用快照功能快速更新以及哈希校驗功能,等等。

近日,Btrfs 開發者 Josef Bacik 在北美開源峯會上再次深度分享了 Facebook 爲何選擇 Btrfs,又取得了哪些成果。ip

Bacik 提到,Facebook 有大量的機器,有大量的代碼須要,包括網頁、移動應用、測試套件以及支持全部這些的底層基礎設施。所以,他們但願全部機器都能儘量的保持一致,能在任什麼時候間向任何機器遷移任何服務。因此 Facebook 的每一項服務都在容器內運行,全部這些容器化服務都使用 Btrfs 做爲它們的 root 文件系統。

其次,Facebook 的工做流規定任何人不能直接向代碼庫遞交代碼,而是必須有一個完整的測試程序會先進行測試。Bulid 系統首先會克隆倉庫,應用補丁,構建系統,執行測試。完成以後,這些內容會被清理掉準備下一個。

但清理階段是相對緩慢的,每次的驗證平均須要 2 或 3 分鐘,有時候須要 10 分鐘,在此期間機器沒法執行下一個測試。所以基礎設施團隊嘗試使用 Btrfs,與其克隆一個庫不如建立一個快照,測試完成以後就刪除快照。刪除快照比刪除一個大的代碼庫要快得多。

這個操做讓 FaceBook 節省了大量的時間,以及近三分之一的服務器數量(包括編譯和測試所需的服務器)。

而且 FaceBook 改用 Btrfs 還有一個強有力的理由:它支持磁盤壓縮。

這裏的重點不只僅是節省存儲空間,還包括延長其使用壽命。Facebook 在閃存上花了不少錢,不過都是便宜、質量通常的閃存。該公司但願這種存儲可以儘量地延長壽命,這意味着要儘可能減小執行的寫入週期數(write cycle)。源代碼每每具備良好的壓縮比,所以壓縮就能夠大大減小寫入的存儲 block 的數量,減緩存儲設備的壽命損耗。

Bacik 還表示,這項工做是由基礎設施團隊完成的,沒有藉助 Facebook 的 Btrfs 開發人員的任何幫助,事實上,他們甚至都不知道有這件事。但他對最後取得的效果也甚感驚訝。

Btrfs 官方文檔:https://btrfs.wiki.kernel.org...

Btrfs 離 Linux 的將來有多遠

多年來,彷佛 ext 已經成爲 Linux 文件系統的代名詞。可是在撰寫這篇稿件蒐集資料時發現,討論 ext 的文章或者帖子裏都會有 Btrfs 的身影出現。由 RedHat 贊助的獨立 Linux 發行版 Fedora,在最新發布的版本 Fedora 33 中也將 Btrfs 設爲了默認的文件系統。

雖然 ext4 只被你們定義爲「過渡期」的產品,就連 ext4 的做者也曾表示過 Btrfs 將成爲下一代 Linux 的標準文件系統。

但 Btrfs 在真正普及以前,仍然須要找到解決自身問題的好辦法。

clipboard.png

相關文章
相關標籤/搜索