一、XFS 簡介及特性
XFS 最初是由 Silicon Graphics,Inc. 於 90 年代初開發的。那時,SGI 發現他們的現有文件系統(existing filesystem,EFS)正在迅速變得不適應當時激烈的計算競爭。為解決這個問題,SGI 決定設計一種全新的高性能 64 位文件系統,而不是試圖調整 EFS在先天設計上的某些缺陷。因此,XFS 誕生了,並於 1994 年隨 IRIX 5.3 的發布而應用於計算。它至今仍作為 SGI 基於 IRIX 的產品(從工作站到超級計算機)的底層文件系統來使用。現在,XFS 也可以用於 Linux。XFS 的 Linux 版的到來是激動人心的,首先因為它為 Linux 社區提供了一種健壯的、優秀的以及功能豐富的文件系統,並且這種文件系統所具有的可伸縮性能夠滿足最苛刻的存儲需求。
XFS具有如下特點:
1、數據完全性
采用XFS文件系統,當意想不到的宕機發生後,首先,由於文件系統開啟了日志功能,所以你磁盤上的文件不再會意外宕機而遭到破壞了。不論目前文件系統上存儲的文件與數據有多少,文件系統都可以根據所記錄的日志在很短的時間內迅速恢復磁盤文件內容。
2、傳輸特性
XFS文件系統采用優化算法,日志記錄對整體文件操作影響非常小。XFS查詢與分配存儲空間非常快。xfs文件系統能連續提供快速的反應時間。筆者曾經對XFS、JFS、Ext3、ReiserFS文件系統進行過測試,XFS文件文件系統的性能表現相當出眾。
3、可擴展性
XFS 是一個全64-bit的文件系統,它可以支持上百萬T字節的存儲空間。對特大文件及小尺寸文件的支持都表現出眾,支持特大數量的目錄。最大可支持的文件大小為263 = 9 x 1018 = 9 exabytes,最大文件系統尺寸為18 exabytes。
4、傳輸帶寬
XFS 能以接近裸設備I/O的性能存儲數據。在單個文件系統的測試中,其吞吐量最高可達7GB每秒,對單個文件的讀寫操作,其吞吐量可達4GB每秒。
5、分配組(allocation groups)
當創建 XFS 文件系統時,底層塊設備被分割成八個或更多個大小相等的線性區域(region)。分配組是唯一的,因為每個分配組管理自己的索引節點(inode)和空閒空間,實際上,是將這些分配組轉化為一種文件子系統,這些子系統正確地透明存在於 XFS 文件系統內。
6、分配組與可伸縮性
那麼,XFS 到底為什麼要有分配組呢?主要原因是,XFS 使用分配組,以便能有效地處理並行 IO。將 XFS 與某些高端硬件相結合,您將獲得高端性能而不會使文件系統成為瓶頸。分配組還有助於在多處理器系統上優化並行 IO 性能,因為可以同時有多個元數據更新處於“在傳輸中”。
7、B+ 樹
XFS使用高的表結構(B+樹),保證了文件系統可以快速搜索與快速空間分配。XFS能夠持續提供高速操作,文件系統的性能不受目錄中目錄及文件數量的限制。
8、日志記錄
當然,XFS 也是一種日志記錄文件系統,它允許意外重新引導後的快速恢復。象 ReiserFS 一樣,XFS 使用邏輯日志;即,它不象 ext3 那樣將文字文件系統塊記錄到日志,而是使用一種高效的磁盤格式來記錄元數據的變動。
9、延遲分配XFS
通過將分配過程分成兩個步驟來處理。首先,當 XFS 接收到要寫入的新數據時,它在 RAM 中記錄暫掛事務,並只在底層文件系統上 保留適當空間。