TFS的設計目標及性能分析
FS是一款模塊化,快速且功能豐富的新一代文件系統(tǒng),采用現(xiàn)代技術使其具有高性能,高空間使用率和高擴展性,代碼托管在Github上。
TFS是由于需要一個用于Redox OS的現(xiàn)代文件系統(tǒng)而被創(chuàng)建的,作為ZFS的替代品,由于其集成設計思想而被證明不會很快的實現(xiàn)。靈感來源于ZFS,同時它的目標是模塊化和易于實現(xiàn)。
TFS與terminalcloud的同名文件系統(tǒng)無關。
設計目標
TFS 的設計目標如下:
并發(fā)
TFS 包含很少的鎖,目的是盡可能適用于多線程系統(tǒng)。它利用多個真正的并發(fā)結構來管理數(shù)據(jù),并按核心的數(shù)量進行線性擴展。這也許是 TFS 最重要的特性。
異步
TFS 是異步的:操作可以獨立進行, 并且從磁盤寫入和讀取不需要阻塞。
全磁盤壓縮
TFS是第一個通過我們稱之為RACC(隨機訪問集群壓縮)的方案來集成的全盤壓縮的文件系統(tǒng)。這意味著每個群集都被壓縮, 只會略微影響性能。據(jù)估計,可以獲得60-120%的可用空間。
修訂記錄
TFS存儲每個文件的修訂歷史記錄,而不會增加額外的開銷。 這意味著你可以將任何文件還原到較早的版本,自動備份系統(tǒng),而不會造成復制的開銷。
即寫即拷語義(寫時復制語義)
與Btrfs和ZFS類似,TFS使用CoW語義,這意味著不會直接覆蓋集群,而是復制并寫入新的集群。
(1) 遞歸拷貝
與一些文件系統(tǒng)一樣,TFS 可以在不變的時間內執(zhí)行遞歸拷貝,但是還有一個獨特的補充: TFS 即使在突變之后也不會復制。 那是怎樣工作的呢?它單獨維護文件的各個部分, 這樣只需要復制更新的段。
保證原子性
系統(tǒng)永遠不會進入不一致狀態(tài) (除非硬件出現(xiàn)故障), 這意味著意外斷電不會損壞系統(tǒng)。
緩存改進
TFS在緩存磁盤時提高了磁盤訪問的速度。它使用機器學習方式來學習模式和預測未來的使用, 以減少緩存遺漏的數(shù)量。TFS 還壓縮內存中的緩存,,減少了所需的內存量。
更好的文件監(jiān)控
CoW非常適合高性能,可擴展的文件監(jiān)控,但不幸的是,只有很少的文件系統(tǒng)包含在內。 TFS是其中之一。
所有內存安全
TFS只使用在Rust中編寫的組件。 因此,內存不安全只能在標記為不安全的代碼中進行,這是非常仔細的檢查。
全面覆蓋測試
TFS旨在全面覆蓋測試。 通過立即顯示大類的錯誤,這對正確性提供了相對較強的保證。
SSD友好設計
TFS試圖通過重新定位死區(qū)來避免SSD中的寫入限制。
改進的垃圾回收
TFS使用Bloom過濾器進行空間高效和快速的垃圾回收。 TFS允許FS垃圾回收器在后臺運行,而不會阻塞文件系統(tǒng)的其余部分。
常見問題
為什么使用SPECK作為默認密碼?
SPECK是一個相對較新的密碼,但它已經受到了很多 (無效) 的密碼分析,所以它是相對安全的。它有非常棒性能和簡單的實現(xiàn)。可移植性是 TFS 設計的一個重要部分, 真正可移植的 AES 實現(xiàn)沒有旁道攻擊, 這比許多人想象的要難 (特別是,大多數(shù)便攜實現(xiàn)中都存在 SubBytes 問題)。SPECK沒有這個問題,因此可以通過最小的努力安全地實現(xiàn)移植。
TFS 和 ZFS 的相似程度?
實際上并不那么相似,它們有許多基本的思想類似,但除此之外,它們本質上是不相干的。但ZFS的設計對TFS的形成起了很大的助推作用 。
TFS是否只有Redox-only?
不,它從來沒有計劃僅僅是 Redox-only。
整個磁盤壓縮如何工作?
根據(jù)我的了解,全盤壓縮是TFS專有的。它通過將多個“頁面”(虛擬數(shù)據(jù)塊)收集到“集群”(分配單元)中起作用。這樣,可以通過簡單地解壓縮各個集群來讀取頁數(shù)據(jù)。
為什么 ZMicro 這么慢?它會影響 TFS 的性能嗎?
ZMicro這么慢的原因是因為它在一定程度上起作用,為性能提供了出色的壓縮比。這種可怕的緩慢性能是由減少寫入次數(shù)為代價的。事實上,ZMicro的50%以上的分配只會寫入一個扇區(qū),而不是3個。其次,無論磁盤的速度有多快,它都不會接近 ZMicro 的性能,因為磁盤操作本質上是緩慢的,從這點來看, 壓縮的表現(xiàn)確實不重要。
可擴展哈希或B+樹?
都不是。TFS使用樹和哈希表的組合:嵌套的哈希表,一種哈希樹的形式。 其思想是,在Bucket(譯者注:可理解為容器)中創(chuàng)建一個新的子表,而不是重新分配。
設計資源
一些關于TFS設計的文章:
SeaHash: Explained. 這描述了TFS設計的默認校驗和算法。
On Random-Access Compression. 這個帖子描述了用于隨機訪問壓縮的算法。
Ternary as a prediction residue code. 使用這一點與創(chuàng)建良好的自適應(無頭)熵壓縮器有關。
How LZ4 works.這描述了LZ4壓縮算法的工作原理。
Collision Resolution with Nested Hash Tables. 這描述了我們用于目錄結構的嵌套哈希表的方法。
An Atomic Hash Table. 這描述了并發(fā)的內存中哈希表/鍵值存儲。
規(guī)范
完整的規(guī)范可以在specification.tex中找到。若要呈現(xiàn)它,請安裝 pdflatex, 然后運行。
然后打開名為 specification.pdf 的文件。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
TFS的設計目標及性能分析下載
相關電子資料下載
- OTFS調制技術的基本原理和優(yōu)缺點 906
- 如何移植FatFs文件系統(tǒng)到SD卡內 136
- FATFS文件系統(tǒng)詳解(下) 556
- FATFS文件系統(tǒng)詳解(上) 696
- GD32 FATFS+FTL Nand解決方案 181
- FATFS文件系統(tǒng)詳解:關于SD卡、SD nand、spi nor flash等眾多存儲設備 489
- SPI FLASH+FATFS+USB MASS STORAGE硬件驅動 390
- STM32+SD NAND(貼片SD卡)完成FATFS文件系統(tǒng)移植與測試 2662
- STM32CubeMx入門教程(10):Fatfs文件系統(tǒng)的應用 975
- stm32 CubeMx 實現(xiàn)SD卡/sd nand FATFS讀寫測試 470
