Linux中國

Stratis 從 ZFS、Btrfs 和 LVM 學到哪些

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

為何不使用已有解決方案

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

Btrfs 發展也很好,沒有授權問題。它已經多年被很多用戶列為「最佳文件系統」,但在穩定性和功能特性方面仍有待提高。

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

Stratis 如何與眾不同

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

相反地,Stratis 採用 Linux 內核的其它一些已有特性:device mapper 子系統以及久經考驗的高性能文件系統 XFS,其中前者被 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 選題:lujun9972 譯者:pinewall 校對:wxy

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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國