深入瞭解這個強大而不繁瑣的 Linux 儲存管理系統。
在本系列第一部分[1]中提到,Stratis 是一個捲管理檔案系統(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 需要一個“匯入”步驟。這樣做出於某些原因,但每一種原因都似乎是 Stratis 需要解決的問題,無論是否採用同樣的實現方式。
對於增加新硬碟或將已有硬碟替換為更大容量的硬碟,ZFS 有一些限制,尤其是儲存池做了冗餘配置的時候,這一點讓我們不太滿意。當然,這麼設計也是有其原因的,但我們更願意將其視為可以改進的空間。
最後,一旦掌握了 ZFS 的命令列工具,使用者體驗很好。我們希望讓 Stratis 的命令列工具能夠保持這種體驗;同時,我們也很喜歡 ZFS 命令列工具的發展趨勢,包括使用位置引數和控制每個命令需要的鍵盤輸入量。
(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 可以作為對等角色直接與 LVM 打交道。我們參考了 LVM 的磁碟元資料格式(也結合 ZFS 和 XFS 的相應格式),獲取靈感並定義了 Stratis 的磁碟元資料格式。
在提到的專案中,LVM 與 Stratis 內在地有最多的共性,畢竟它們都使用 DM。不過從使用的角度來看,LVM 內在工作更加透明,為專業使用者提供相當多的控制和選項,使其可以精確配置捲組(儲存池)的佈局;但 Stratis 不採用這種方式。
多種多樣的解決方案
基於自由和開源軟體工作的明顯好處在於,沒有什麼元件是不可替代的。包括核心在內的每個組成部分都是開源的,可以檢視修改原始碼,如果當前的軟體不能滿足使用者需求可以用其它軟體替換。新專案產生不一定意味著舊專案的終結,只要都有足夠的(社群)支援,兩者可以並行存在。
對於尋找一個不存在爭議、簡單易用、強大的本地儲存管理解決方案的人而言,Stratis 是更好滿足其需求的一種嘗試。這意味著一種設計思路所做的抉擇不一定對所有使用者適用。考慮到使用者的其它需求,另一種設計思路可能需要艱難的做出抉擇。所有使用者可以選擇最適合其的工作的工具並從這種自由選擇中受益。
via: https://opensource.com/article/18/4/stratis-lessons-learned
作者:Andy Grover[9] 選題:lujun9972 譯者:pinewall 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出