ReiserFS

维基百科,自由的百科全书
跳转至: 导航搜索
ReiserFS
开发者 Namesys
全称 ReiserFS
发布 2001 (Linux 2.4.1)
分区标识 Apple_UNIX_SVR2 (Apple Partition Map)
0x83 (MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
结构
目录内容 B+ tree
文件分配 Bitmap
限制
最大文件尺寸 8 TiB
最大文件数量 232 (~4 billion)
最长文件名 4032 bytes, limited to 255 by Linux VFS
最大卷容量 16 TiB
文件名字符集 All bytes except NUL and '/'
功能
日期记录 modification (mtime), metadata change (ctime), access (atime)
日期范围 December 14, 1901年12月14日 - 2038年1月18日
日期分辨率 1s
岔流 Extended attributes
文件系统权限 Unix permissions, ACLs and arbitrary security attributes
透明压缩 No
透明加密 No
操作系统支持 Linux

ReiserFS,是一种文件系统格式,作者是汉斯·瑞塞尔(Hans Reiser)及其團隊Namesys,1997年7月23日他将ReiserFS文件系统在互联网上公布。Linux内核从2.4.1版本开始支持ReiserFS。

ReiserFS 的命名是源自作者Hans Reiser的姓氏,這個日誌型檔案系統發展比 ext2/3 晚近許多。在技術上使用的是 B*-tree 為基礎的檔案系統,其特色為能很有效率地處理大型檔案到眾多小檔案都可以用很高的效率處理;實務上 ReiserFS 在處理檔案小於 1k 小檔案時,甚至效率可以比 ext3 快約10倍。

ReiserFS原先是Novell公司的SuSE Linux Enterprise採用的預設檔案系統,直到2006年10月12日其宣稱將在未來的版本改採ext3為預設[1] 。Novell公司否認這與Hans Reiser被控殺妻案有任何關聯[2]

功能特點[编辑]

與本文撰寫的同期文件系統相比, ReiserFS 有著許多其它文件系統所沒有的優點。舉例來說:

  • Metadata-only journaling (also block journaling, since Linux 2.6.8), its most-publicized advantage over what was the stock Linux file system at the time, ext2.
  • 線上調整大小(只能變大,線上、離線代表的是掛載中或非掛載中),可以使用磁碟管理機制如 LVM 的方式來修改,也可以不用。因為這個緣故,所以 Namsys 公司有提供在離線時調整大小的工具(可以調整放大空間,也可以縮小空間)。
  • 後綴包裝(Tail Packing)減少內部磁碟空間分布破碎的情況。 這個功能與別的檔案系統相比有著相當明顯的進步,另外值得一提的是,在 Reiser4 的發展裡頭,這個功能有更強大的進展,將同時保留長處並且不會影響到效能。

效能表現[编辑]

和同樣在 Linux Kernel 2.4 版本下的 ext2 及 ext3 相比較,處理 4KB 以下的小檔案時(tail packing enable),ReiserFS 的速度快了 10 到 15 倍[3]。這對於網路新聞服務、 HTTP 快取、及電子郵件系統等需要處理大量小檔案的網路服務是相當重要的功能改進。

然而因為 ReiserFS 還在使用 BKL (the Big Kernel Lock) 這個 global kernel-wide lock,在某些情況下,它無法良好的在某些多核心系統上面執行 scale 動作,這是因為某些核心的動作一次只能由一個核心進行動作。[2]

批評[编辑]

有些目錄的操作在 ReiserFS 上面並不同步,(包括像 unlink(2)),可能會導致一些重度依賴檔案鎖(file-based lock)機制的應用程式上面資料的毀損,這些應用程式像是 MTA 的 qmail 、 postfix 等等,如果這些應用程序在磁碟同步之前就有可能造成這樣的損害。

目前還沒有磁碟整理的應用程式是可以對 ReiserFS 這個檔案系統進行動作,雖然已經有工具是在做自動複製檔案內容以期獲得更多連續性的區塊,在 Reiser4 釋出的檔案系統會有一個 repacker 的工具可以對磁碟破碎的情況最佳化。

磁區檢查[编辑]

ReiserFS 索引樹重建的的過程曾經引發過不少的爭議:如果檔案系統被毀壞的很嚴重,那內部的索引樹就失效了,再執行索引樹重建的操作更可能會讓讓這個毀壞的情況變得更嚴重、像是把索引指向不可預期的內容(8)。不過這個操作並不是正常操作的一部份,也不是一個正常的檔案系統檢查,在這種操作執行之前,就應該會有明確提示出現,由管理員確認後才可能發生。

儘管如此,為避免錯誤引導檔案系統的處理,我們並不建議在一個 ReiserFS v3 的分割區上面儲存一個原始未經加密或壓縮改變形態的 ReiserFS v3 的影像檔。在格式化一個現有的 ReiserFS v3 的分割區也可能會留下資料困擾重建的操作並且讓舊系統上的檔案重現。這個漏洞讓惡意的使用者有機會困擾重建程序。在 metadata 經過檔案系統檢查之後還會維持舊有的狀態,再破壞這個地方就會讓檔案內容以不可預期的方式結合包含著檔案系統的 metadata 。

好消息是, 它的下一代繼承者 ,ReiserFS 4 克服了這一點問題點。

較早的爭議問題[编辑]

ReiserFS 在 Linux kernel 2.4.16 之前的版本被 Namesys 視作不穩定的版本,不被當成可以使用產品,特別是在 NFS 的應用上面。 ReiserFS 早先的應用(這裡指的是 Linux kernel 2.6.2 之前)被看作是一堆地雷。像是,檔案很容易就會在系統崩潰的時候意外的接上一堆沒有用的垃圾,不過現在在 ReiserFS 裡面的日誌型檔案系統的應用已經有一定的穩定。

架構設計[编辑]

ReiserFS 在一个单一复合B+树中存储文件的亚数据信息(stat item)、目錄文件信息(directory items)、索引节点中的块列表(indirect items),这些信息都有唯一的标识号作为B+树的索引值。 分配给B+树节点磁盘块称为“格式化的内部块”。 分配给叶子节点的磁盘块称为“格式化的叶子块”(叶子节点中的信息是首尾相连,紧密存储的)。 其他的块一概称为“未格式化块”,用来保存文件内容。 如果一个节点带有太多目录项或者太大块列表的目錄文件信息,就会被拆分到它右边的邻居节点中。 所有的块分配过程会被跟踪记录到位于固定位置的空闲块位图中。

相對的, ext2 和其它 Berkeley FFS-like 的檔案系統則只簡單的使用一個固定的方程式來計算節點的劃分大小,這樣的方式限制了檔案系統可以包含的檔案的數量。大多數這種類型的檔案系統也簡單地以线性表的方式儲存目录项,在檔案搜尋及更新的時間随文件系统的规模增加而线性增加。在 ReiserFS 中的单一 B+树 設計避免了這些問題,而且更具有彈性。

註解參照[编辑]

  1. ^ Shankland, Stephen. Novell makes file storage software shift. Business Tech (cnet News.com). 2006-10-12. (原始内容存档于2013-01-19). 
  2. ^ Mahoney, Jeff. Announcement was unrelated to Reiser's legal troubles. 2006-10-04. (原始内容存档于2006-10-24). 
  3. ^ Robbins, Daniel. Common threads: Advanced filesystem implementor's guide, Part 7. 2001-11-01. 

外部連結[编辑]