思科推出適用於 Linux 內核的 PuzzleFS 文件系統

Cisco 提出了一種新的檔案系統 PuzzleFS,作為 Linux 核心的模組實現,以 Rust 編寫。 該檔案系統旨在用於託管隔離的容器,並繼續發展 Atomfs 檔案系統中提出的想法。 該實作仍處於原型階段,支援使用 rust-next Linux 核心分支進行構建,並在 Apache 2.0 和 MIT 許可證下開放。

該專案旨在繞過使用 OCI(開放容器倡議)格式的容器映像時出現的限制。 PuzzleFS解決了重複資料的高效儲存、直接掛載能力、可重複的鏡像建置和記憶體安全等問題。

為了對不同容器中重複的資料進行重複資料刪除,可以使用FastCDC(快速內容定義分塊)演算法,該演算法的工作原理是將資料劃分為任意大小的片段,並使用已處理片段的雜湊值維護索引。 重複片段儲存一次並為檔案系統的所有層聯合索引,即重複資料刪除可以覆蓋不同的掛載點(可以在現有的FS層的基礎上啟動新的FS層,並在重複資料刪除時使用其中包含的資料碎片)。

容器鏡像的重複組裝是透過定義容器鏡像格式的規範表示來實現的。 直接掛載可讓您使用容器清單中內容的雜湊值作為標識符,從全域共用儲存掛載 OCI 容器映像,而無需先解壓縮它。 為了在使用共用儲存時驗證資料完整性,可以使用 fs-verity 機制,該機制在存取檔案時檢查二進位索引中指定的雜湊值與實際內容的對應關係。

選擇 Rust 語言是因為它將產生的程式碼的高效能與安全使用記憶體的功能相結合,從而降低了因記憶體區域釋放後存取記憶體區域和溢位緩衝區邊界等問題而導致的漏洞風險。 使用 Rust 作為核心模組還可以在核心和用戶空間元件之間共享程式碼以創建單一安全的實作。

此專案的其他目標包括:非常快速地建構和安裝圖像、使用可選中間階段進行圖像規範化的能力、使用多層結構時完整 mtree 樣式檔案樹傳遞的可選性、casync 樣式拼版變更和易於實施的架構。

來源: opennet.ru

添加評論