ReiserFS是Linux早期主流日誌式檔案系統之一,以高效處理大量小檔案著稱。其設計採用面向物件架構,分為語義層與儲存層,透過全域唯一鍵值關聯,支援百GB級檔案系統管理,曾廣泛用於企業級儲存。
雙層架構
- 語義層:管理物件命名空間、定義物件介面,確定功能。透過解析物件名產生鍵值。
- 儲存層:管理磁碟空間分配與存取。透過鍵值定位物件在磁碟上的物理位置。
- 鍵值全域唯一,作為兩層間唯一耦合點。
語義層六大核心介面
- 檔案介面:每個檔案擁有介面ID,標識一組方法集,涵蓋存取ReiserFS檔案的所有操作。
- 屬性介面:創新設計——將檔案每個屬性視為一個檔案,屬性值即檔案內容,實現屬性的目錄式存取(類似Extended Attributes雛形)。
- Hash介面:目錄實為檔名到檔案的映射表,採用B+樹實現。檔名可變長且可能較長,不適合直接作鍵,引入Hash函數產生固定長度鍵值。
- 安全介面:集中處理所有安全檢查。如讀檔案時,檔案介面的
read先呼叫安全介面read_check,後者再讀取屬性檔進行權限驗證。
- 項介面:處理B+樹節點(項)的平衡操作:分割、評估、覆寫、追加、刪除、插入、查找。
- 鍵分配介面:當項獲得鍵值時觸發,每種項類型對應專屬分配邏輯。
歷史定位與現狀
- ReiserFS 3.x(本文所述)曾是SUSE Linux預設檔案系統,效能優於ext2/ext3於小檔案場景。
- Reiser4為全新重寫,引入插件架構、事務模型改進,但因主開發者Hans Reiser法律問題,社區活躍度驟降,主流Distro已棄用。
- 現代Linux生產環境主流為ext4、XFS、Btrfs,ReiserFS僅存於舊系統維護或特定嵌入式場景。
ReiserFS的物件導向、鍵值分離、屬性即檔案等設計理念,對後世檔案系統(如Btrfs的子卷、ZFS的屬性)仍有啟發意義。