TFS:新一代開源文件系統
原文 | https://github.com/redox-os/tfs#design-goals/
翻譯 | 王江平
譯者註:這篇文章主要對TFS的設計目標和一些常見的問題進行了描述,結尾部分提供了部分與TFS相關的資源供讀者參考。
TFS是一款模塊化,快速且功能豐富的新一代文件系統,採用現代技術使其具有高性能,高空間使用率和高擴展性,代碼託管在Github上。
TFS是由於需要一個用於Redox OS的現代文件系統而被創建的,作為ZFS的替代品,由於其集成設計思想而被證明不會很快的實現。靈感來源於ZFS,同時它的目標是模塊化和易於實現。
TFS與terminalcloud的同名文件系統無關。
設計目標
TFS 的設計目標如下:
並發
TFS 包含很少的鎖,目的是儘可能適用於多線程系統。它利用多個真正的並髮結構來管理數據,並按核心的數量進行線性擴展。這也許是 TFS 最重要的特性。
非同步
TFS 是非同步的:操作可以獨立進行, 並且從磁碟寫入和讀取不需要阻塞。
全磁碟壓縮
TFS是第一個通過我們稱之為RACC(隨機訪問集群壓縮)的方案來集成的全盤壓縮的文件系統。這意味著每個群集都被壓縮, 只會略微影響性能。據估計,可以獲得60-120%的可用空間。
修訂記錄
TFS存儲每個文件的修訂歷史記錄,而不會增加額外的開銷。 這意味著你可以將任何文件還原到較早的版本,自動備份系統,而不會造成複製的開銷。
即寫即拷語義(寫時複製語義)
與Btrfs和ZFS類似,TFS使用CoW語義,這意味著不會直接覆蓋集群,而是複製並寫入新的集群。
(1) 遞歸拷貝
與一些文件系統一樣,TFS 可以在不變的時間內執行遞歸拷貝,但是還有一個獨特的補充: TFS 即使在突變之後也不會複製。 那是怎樣工作的呢?它單獨維護文件的各個部分, 這樣只需要複製更新的段。
保證原子性
系統永遠不會進入不一致狀態 (除非硬體出現故障), 這意味著意外斷電不會損壞系統。
緩存改進
TFS在緩存磁碟時提高了磁碟訪問的速度。它使用機器學習方式來學習模式和預測未來的使用, 以減少緩存遺漏的數量。TFS 還壓縮內存中的緩存,,減少了所需的內存量。
更好的文件監控
CoW非常適合高性能,可擴展的文件監控,但不幸的是,只有很少的文件系統包含在內。 TFS是其中之一。
所有內存安全
TFS只使用在Rust中編寫的組件。 因此,內存不安全只能在標記為不安全的代碼中進行,這是非常仔細的檢查。
全面覆蓋測試
TFS旨在全面覆蓋測試。 通過立即顯示大類的錯誤,這對正確性提供了相對較強的保證。
SSD友好設計
TFS試圖通過重新定位死區來避免SSD中的寫入限制。
改進的垃圾回收
TFS使用Bloom過濾器進行空間高效和快速的垃圾回收。 TFS允許FS垃圾回收器在後台運行,而不會阻塞文件系統的其餘部分。
常見問題
為什麼使用SPECK作為默認密碼?
SPECK是一個相對較新的密碼,但它已經受到了很多 (無效) 的密碼分析,所以它是相對安全的。它有非常棒性能和簡單的實現。可移植性是 TFS 設計的一個重要部分, 真正可移植的 AES 實現沒有旁道攻擊, 這比許多人想像的要難 (特別是,大多數便攜實現中都存在 SubBytes 問題)。SPECK沒有這個問題,因此可以通過最小的努力安全地實現移植。
TFS 和 ZFS 的相似程度?
實際上並不那麼相似,它們有許多基本的思想類似,但除此之外,它們本質上是不相干的。但ZFS的設計對TFS的形成起了很大的助推作用 。
TFS是否只有Redox-only?
不,它從來沒有計劃僅僅是 Redox-only。
整個磁碟壓縮如何工作?
根據我的了解,全盤壓縮是TFS專有的。它通過將多個「頁面」(虛擬數據塊)收集到「集群」(分配單元)中起作用。這樣,可以通過簡單地解壓縮各個集群來讀取頁數據。
為什麼 ZMicro 這麼慢?它會影響 TFS 的性能嗎?
ZMicro這麼慢的原因是因為它在一定程度上起作用,為性能提供了出色的壓縮比。這種可怕的緩慢性能是由減少寫入次數為代價的。事實上,ZMicro的50%以上的分配只會寫入一個扇區,而不是3個。其次,無論磁碟的速度有多快,它都不會接近 ZMicro 的性能,因為磁碟操作本質上是緩慢的,從這點來看, 壓縮的表現確實不重要。
可擴展哈希或B+樹?
都不是。TFS使用樹和哈希表的組合:嵌套的哈希表,一種哈希樹的形式。 其思想是,在Bucket(譯者註:可理解為容器)中創建一個新的子表,而不是重新分配。
設計資源
一些關於TFS設計的文章:
SeaHash: Explained.這描述了TFS設計的默認校驗和演算法。
On Random-Access Compression.這個帖子描述了用於隨機訪問壓縮的演算法。
Ternary as a prediction residue code.使用這一點與創建良好的自適應(無頭)熵壓縮器有關。
How LZ4 works.這描述了LZ4壓縮演算法的工作原理。
Collision Resolution with Nested Hash Tables.這描述了我們用於目錄結構的嵌套哈希表的方法。
An Atomic Hash Table.這描述了並發的內存中哈希表/鍵值存儲。
規範
完整的規範可以在specification.tex中找到。若要呈現它,請安裝 pdflatex, 然後運行。
然後打開名為 specification.pdf 的文件。
點擊展開全文
※58同城移動端Passport SDK的設計與技術細節
※zetcd:脫離ZooKeeper運行ZooKeeper應用程序
※IT人眼中的IT人
※無人駕駛剛剛開始的未來
※NoSQL資料庫的主主備份
TAG:CSDN |
※IPFS:下一代分散式文件系統
※經典與革新 Switch《SD高達G世紀起源》新開發系統
※華為演示安卓新文件系統EROFS:手機更快
※一文秒懂蘋果WWDC18開發者大會:四系統更新、無硬體發布
※iOS最新beta版系統描述文件以及屏蔽更新文件
※系列新作《Fate/EXTELLA LINK》新戰鬥系統公開
※開源的文檔在線管理系統MinDoc
※iBoot源代碼泄露 蘋果建議用戶升級最新iOS系統
※號稱新一代CAR T的SUPRA CAR系統是如何設計的?
※NASA最新研發:宇宙版GPS導航定位系統
※新款雷克薩斯ES全球首發,搭載新一代智能安全系統LSS+
※WiFi新生態 路由系統開啟家庭WiFi新紀元
※MC風 Switch版《方塊創造者DX》最新進化系統
※超越IOS和安卓:谷歌新系統FuchsiaOS初代現身
※Android系統將發生重磅變化!谷歌最新自主研發的新一代操作系統 Fuchsia OS 曝光:流暢度完勝蘋果iOS
※《Fate/EXTELLA LINK》或登陸更多平台 新系統主動技能介紹
※Wear OS首個開發者預覽版系統放出,華為WATCH 2手錶可刷
※PNAS:利用CRISPR/Cas9開發出一種精準的基因組突變預防系統
※微軟為macOS開發大型Git倉庫虛擬文件系統
※BOSE SOUNDWEAR 體驗,BOSE 系統中別樣的驚喜