Flatpak 的創建者、Red Hat 員工 Alexander Larsson 發布了一個用於實現 Composefs 檔案系統的核心的初步修補程式。 Linux所提出的檔案系統與 Squashfs 類似,也適用於以唯讀模式掛載鏡像。差別在於 Composefs 能夠有效率地將多個已掛載磁碟映像的內容儲存在一起,並支援讀取資料認證。 Composefs 的應用場景包括掛載容器鏡像以及將其用於類似 Git 的 OSTree 代碼倉庫。
Composefs 使用基於內容的尋址儲存模型,這表示主要識別碼不是檔案名,而是檔案內容的雜湊值。此模型提供重複資料刪除功能,並允許您僅儲存在不同已安裝分割區中找到的相同檔案的一個副本。例如,容器鏡像包含許多常見的系統文件,當使用 Composefs 時,這些文件中的每一個將在所有已掛載的鏡像之間共享,而無需硬鏈接之類的技巧。在這種情況下,共享檔案不僅作為單一副本儲存在磁碟上,而且還需要頁面快取中的單一條目,從而可以節省磁碟和 RAM。
為了節省磁盤空間,數據和元數據在裝載的圖像中是分開的。 安裝時:
- 包含所有文件系統元數據、文件名、權限和其他信息(文件的實際內容除外)的二進制索引。
- 存儲所有掛載圖像文件內容的基本目錄。 文件是根據其內容的哈希值存儲的。
為每個 FS 圖像創建一個二進制索引,並且基本目錄對所有圖像都是相同的。 為了在共享存儲條件下驗證單個文件和整個圖像的內容,可以使用 fs-verity 機制,該機制在訪問文件時檢查二進制索引中指定的哈希值是否與實際內容相對應(即如果攻擊者更改基本目錄中的文件或因故障而損壞的數據,這樣的協調將揭示差異)。
來源: opennet.ru
