歡迎光臨
每天分享高質量文章

Stratis 從 ZFS、Btrfs 和 LVM 學到哪些 | Linux 中國

深入瞭解這個強大而不繁瑣的 Linux 儲存管理系統。

致謝
轉載自 | https://opensource.com/article/18/4/stratis-lessons-learned

深入瞭解這個強大而不繁瑣的 Linux 儲存管理系統。

在本系列第一部分[1]中提到,Stratis 是一個捲管理檔案系統volume-managing filesystem(VMF),功能特性類似於 ZFS[2] 和 Btrfs[3]。在設計 Stratis 過程中,我們研究了已有解決方案開發者做出的取捨。

為何不使用已有解決方案

理由千差萬別。先說說 ZFS[2],它最初由 Sun Microsystems 為 Solaris (目前為 Oracle 所有)開發,後移植到 Linux。但 CDDL[4] 協議授權的代碼無法合併到 GPL[5] 協議授權的 Linux 原始碼樹中。CDDL 與 GPLv2 是否真的不兼容有待討論,但這種不確定性足以打消企業級 Linux 供應商採用並支持 ZFS 的積極性。

Btrfs[3] 發展也很好,沒有授權問題。它已經多年被很多用戶列為“最佳檔案系統”,但在穩定性和功能特性方面仍有待提高。

我們希望打破現狀,解決已有方案的種種問題,這種渴望促成了 Stratis。

Stratis 如何與眾不同

ZFS 和 Btrfs 讓我們知道一件事情,即編寫一個內核支持的 VMF 檔案系統需要花費極大的時間和精力,才能消除漏洞、增強穩定性。涉及核心資料時,提供正確性保證是必要的。如果 Stratis 也採用這種方案並從零開始的話,開發工作也需要十數年,這是無法接受的。

相反地,Stratis 採用 Linux 內核的其它一些已有特性:device mapper[6] 子系統以及久經考驗的高性能檔案系統 XFS[7],其中前者被 LVM 用於提供 RAID、精簡配置和其它塊設備特性而廣為人知。Stratis 將已有技術作為(技術架構中的)層來創建儲存池,標的是通過集成為用戶提供一個看似無縫的整體。

Stratis 從 ZFS 學到哪些

對很多用戶而言,ZFS 影響了他們對下一代檔案系統的預期。通過查看人們在互聯網上關於 ZFS 的討論,我們設定了 Stratis 的最初開發標的。ZFS 的設計思路也潛在地為我們指明應該避免哪些東西。例如,當掛載一個在其它主機上創建的儲存池時,ZFS 需要一個“匯入import”步驟。這樣做出於某些原因,但每一種原因都似乎是 Stratis 需要解決的問題,無論是否採用同樣的實現方式。

對於增加新硬碟或將已有硬碟替換為更大容量的硬碟,ZFS 有一些限制,尤其是儲存池做了冗餘配置的時候,這一點讓我們不太滿意。當然,這麼設計也是有其原因的,但我們更願意將其視為可以改進的空間。

最後,一旦掌握了 ZFS 的命令列工具,用戶體驗很好。我們希望讓 Stratis 的命令列工具能夠保持這種體驗;同時,我們也很喜歡 ZFS 命令列工具的發展趨勢,包括使用位置引數positional parameters和控制每個命令需要的鍵盤輸入量。

(LCTT 譯註:位置引數來自腳本,$n 代表第 n 個引數)

Stratis 從 Btrfs 學到哪些

Btrfs 讓我們滿意的一點是,有單一的包含位置子命令的命令列工具。Btrfs 也將冗餘(選擇對應的 Btrfs profiles)視為儲存池的特性之一。而且和 ZFS 相比實現方式更好理解,也允許增加甚至移除硬碟。

(LCTT 譯註:Btrfs profiles 包括 single/DUP 和 各種 RAID 等型別)

最後,通過瞭解 ZFS 和 Btrfs 共有的特性,例如快照的實現、對發送/接收的支持,讓我們更好的抉擇 Stratis 應該包括的特性。

Stratis 從 LVM 學到哪些

在 Stratis 設計階段早期,我們仔細研究了 LVM。LVM 目前是 Linux device mapper (DM) 最主要的使用者;事實上,DM 就是由 LVM 的核心開發團隊維護的。我們研究了將 LVM 真的作為 Stratis 其中一層的可能性,也使用 DM 做了實驗,其中 Stratis 可以作為對等角色peer直接與 LVM 打交道。我們參考了 LVM 的磁盤元資料格式on-disk metadata format(也結合 ZFS 和 XFS 的相應格式),獲取靈感並定義了 Stratis 的磁盤元資料格式。

在提到的專案中,LVM 與 Stratis 內在地有最多的共性,畢竟它們都使用 DM。不過從使用的角度來看,LVM 內在工作更加透明,為專業用戶提供相當多的控制和選項,使其可以精確配置捲組volume group(儲存池)的佈局layout;但 Stratis 不採用這種方式。

多種多樣的解決方案

基於自由和開源軟體工作的明顯好處在於,沒有什麼組件是不可替代的。包括內核在內的每個組成部分都是開源的,可以查看修改原始碼,如果當前的軟體不能滿足用戶需求可以用其它軟體替換。新專案產生不一定意味著舊專案的終結,只要都有足夠的(社區)支持,兩者可以並行存在。

對於尋找一個不存在爭議、簡單易用、強大的本地儲存管理解決方案的人而言,Stratis 是更好滿足其需求的一種嘗試。這意味著一種設計思路所做的抉擇不一定對所有用戶適用。考慮到用戶的其它需求,另一種設計思路可能需要艱難的做出抉擇。所有用戶可以選擇最適合其的工作的工具並從這種自由選擇中受益。


via: https://opensource.com/article/18/4/stratis-lessons-learned

作者:Andy Grover[9] 選題:lujun9972 譯者:pinewall 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

赞(0)

分享創造快樂