XfS文件系統,XfS文件系統是什么意思
XfS文件系統,XfS文件系統是什么意思
XfS文件系統是SGI開發的高級日志文件系統,XFS極具伸縮性,非常健壯。所幸的是SGI將其移植到了Linux系統中。在linux環境下。目前版本可用的最新XFS文件系統的為1.2版本,可以很好地工作在2.4核心下。
一、XFS文件系統簡介
主要特性包括以下幾點:
數據完全性
采用XFS文件系統,當意想不到的宕機發生后,首先,由于文件系統開啟了日志功能,所以你磁盤上的文件不再會意外宕機而遭到破壞了。不論目前文件系統上存儲的文件與數據有多少,文件系統都可以根據所記錄的日志在很短的時間內迅速恢復磁盤文件內容。
傳輸特性
XFS文件系統采用優化算法,日志記錄對整體文件操作影響非常小。XFS查詢與分配存儲空間非常快。xfs文件系統能連續提供快速的反應時間。筆者曾經對XFS、JFS、Ext3、ReiserFS文件系統進行過測試,XFS文件募?低車男閱鼙硐窒嗟背鮒凇?
可擴展性
XFS 是一個全64-bit的文件系統,它可以支持上百萬T字節的存儲空間。對特大文件及小尺寸文件的支持都表現出眾,支持特大數量的目錄。最大可支持的文件大小為263 = 9 x 1018 = 9 exabytes,最大文件系統尺寸為18 exabytes。
XFS使用高的表結構(B+樹),保證了文件系統可以快速搜索與快速空間分配。XFS能夠持續提供高速操作,文件系統的性能不受目錄中目錄及文件數量的限制。
傳輸帶寬
XFS 能以接近裸設備I/O的性能存儲數據。在單個文件系統的測試中,其吞吐量最高可達7GB每秒,對單個文件的讀寫操作,其吞吐量可達4GB每秒。
二、XFS文件系統的使用
1.下載與編譯內核
下載相應版本的內核補丁,解壓補丁軟件包,對系統核心打補丁
下載地址:
對核心打補丁,下載解壓后,得到一個文件:xfs-1.1-2.4.18-all.patch文件。
對核心進行修補如下:
# cd /usr/src/linux
# patch -p1 < /path/to/xfs-1.1-2.4.18-all.patch
修補工作完成后,下一步要進行的工作是編譯核心,將XFS編譯進Linux核心可中。
首先運行以下命令,選擇核心支持XFS文件系統:
#make menuconfig
在“文件系統“菜單中選擇:
<*> SGI XFS filesystem support ##說明:將XFS文件系統的支持編譯進核心
或
SGI XFS filesystem support ##說明:以動態加載模塊的方式支持XFS文件系統
另外還有兩個選擇:
Enable XFS DMAPI ##說明:對磁盤管理的API,存儲管理應用程序使用
Enable XFS Quota ##說明:支持配合Quota對用戶使用磁盤空間大小管理
完成以上工作后,退出并保存核心選擇配置.
之后,然后編譯內核,安裝核心:
#make bzImage
#make module
#make module_install
#make install
如果你對以上復雜繁瑣的工作沒有耐心或沒有把握,那么可以直接從SGI的站點上下載已經打好補丁的核心,其版本為2.4.18。它是一個rpm軟件包,你只要簡單地安裝即可。SGI提交的核心有兩種,分別供smp及單處理器的機器使用。
2.創建XFS文件系統
完成對核心的編譯后,還應下載與之配套的XFSprogs工具軟件包,也即mkfs.xfs工具。不然我們無法完成對分區的格式化:即無法將一個分區格式化成XFS文件系統的格式。要下載的軟件包名稱:xfsprogs-2.0.3。
將所下載的XFSProgs工具解壓,安裝,mkfs.xfs自動安裝在/sbin目錄下。
#tar –xvf xfsprogs-2.0.3.src.tar.gz
#cd xfsprogs-2.0.3src
#./configure
#make
#make install
使用mkfs.xfs格式化磁盤為xfs文件系統,方法如下:
# /sbin/mkfs.xfs /dev/sda6 #說明:將分區格式化為xfs文件系統,以下為顯示內容:
meta-data=/dev/sda6 isize=256 agcount=8, agsize=128017 blks
data = bsize=4096 blocks=1024135, imaxpct=25
= sunit=0 swidth=0 blks, unwritten=0
naming =version 2 bsize=4096
log =internal log bsize=4096 blocks=1200
realtime =none extsz=65536 blocks=0, rtextents=0
格式化磁盤時,如果mkfs.xfs提示你分區原本已被格式化為其它文件系統,可以使用參數 –f 強行格式化:
#/sbin/mkfs.xfs –f /dev/sda6
3.加載XFS文件系統
#mount –t xfs /dev/sda6 /xfs ##其中/xfs是主分區/下的一個目錄。
最后,為了讓系統啟動后就自動加載,應該更改/etc/fstab,這樣系統啟動后就會自動加載xfs分區而不必每次都手工加載。
要說明的一點是目前的xfs由于受linux內存頁限制,在x86版本中,只能實現文件系統的塊尺寸為4K。另外,XFS文件系統可以不同的方式mount,即允許文件系統以讀方式加載,也允許以讀寫方式加載。這是因為xfs文件系統用作根文件系統時,為了安全要以只讀方式加載。
三、文件系統的遷移
要使得系統中的其它分區使用XFS文件系統,還有一步是遷移文件系統。建議在遷移文件系統時,首先將磁盤上的數據、文件先備份,以免發生不可挽回的損失,在進行文件系統轉換之間,最好能將整個系統進行完全備份。這一步有很多種方法,本文僅就筆者的遷移方法加以描述。各位可以按照自己習慣的方式去完成
如果你想得到一個純的xfs系統(系統的所有文件系統均采用XFS文件系統)話,還得將根文件系統也格式化為xfs文件系統。這實際上是比較繁雜的一步。因為根文件系統不能被umount,所以,必須首先創建一個分區,其文件系統為ext2文件系統,然后將目前的根分區上的所有文件與目錄,原原本本地復制到這一個分區,然后更改/etc/fstab文件,替換原來的根分區。
方法如下:
$ mkfs -t ext2 /dev/hda4
$ mkdir /mnt/temp
$ mount -t ext2 /dev/hda4 /mnt/temp
$ cd /
$ tar lcvf - .|(cd /mnt/temp; tar xpvf - )
以上操作是將根分區上的所有文件打包,復制到新建立的分區。當然,你也可以直接使用以下命令復制文件。
# cp –dpR / /mnt/temp
接著,將下次啟動的根分區更改到/dev/hda4分區,更改/etc/fstab文件及/etc/lilo.conf ,然后,運行 lilo.
重新啟動后,新的根分區就已經為/dev/hda4。
接下來,創建一個xfs文件系統的分區:
$ mkfs -t xfs /dev/hda2
加載此分區,采用兩樣的方法,將根分區的內容復制到此分區
$ mount -t xfs /dev/hda2 /mnt/temp
在根分區下,運行
$ cd /
$ tar lcvf - .|(cd /mnt/temp; tar xpvf - )
再次更改/etc/fstab、/etc/lilo.conf,用新建的xfs分區替換原來的ext2主分區。如下所示:
/dev/hda2 / xfs defaults 1 1
將新建的xfs分區用作根分區,保存以上設置。再次檢查配置文件內容,確認無誤后再重新啟動系統。如果你的設置全部正確,那么系統成功啟動后,你就擁有一個純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文件系統,當意想不到的宕機發生后,首先,由于文件系統開啟了日志功能,所以你磁盤上的文件不再會意外宕機而遭到破壞了。不論目前文件系統上存儲的文件與數據有多少,文件系統都可以根據所記錄的日志在很短的時間內迅速恢復磁盤文件內容。
傳輸特性
XFS文件系統采用優化算法,日志記錄對整體文件操作影響非常小。XFS查詢與分配存儲空間非常快。xfs文件系統能連續提供快速的反應時間。筆者曾經對XFS、JFS、Ext3、ReiserFS文件系統進行過測試,XFS文件文件系統的性能表現相當出眾。
可擴展性
XFS 是一個全64-bit的文件系統,它可以支持上百萬T字節的存儲空間。對特大文件及小尺寸文件的支持都表現出眾,支持特大數量的目錄。最大可支持的文件大小為263 = 9 x 1018 = 9 exabytes,最大文件系統尺寸為18 exabytes。
XFS使用高的表結構(B+樹),保證了文件系統可以快速搜索與快速空間分配。XFS能夠持續提供高速操作,文件系統的性能不受目錄中目錄及文件數量的限制。
傳輸帶寬
XFS 能以接近裸設備I/O的性能存儲數據。在單個文件系統的測試中,其吞吐量最高可達7GB每秒,對單個文件的讀寫操作,其吞吐量可達4GB每秒。
XFS 設計:
分配組(allocation groups)
當創建 XFS 文件系統時,底層塊設備被分割成八個或更多個大小相等的線性區域(region)。您可以將它們想象成“塊”(chunk)或者“線性范圍(range)”,但是在 XFS 術語中,每個區域稱為一個“分配組”。分配組是唯一的,因為每個分配組管理自己的索引節點(inode)和空閑空間,實際上,是將這些分配組轉化為一種文件子系統,這些子系統正確地透明存在于 XFS 文件系統內。
分配組與可伸縮性
那么,XFS 到底為什么要有分配組呢?主要原因是,XFS 使用分配組,以便能有效地處理并行 IO。因為,每個分配組實際上是一個獨立實體,所以內核可以 同時與多個分配組交互。如果不使用分配組,XFS 文件系統代碼可能成為一種性能瓶頸,迫使大量需求 IO 的進程“排隊”來使索引節點進行修改或執行其它種類的元數據密集操作。多虧了分配組,XFS 代碼將允許多個線程和進程持續以并行方式運行,即使它們中的許多線程和進程正在同一文件系統上執行大規模 IO 操作。因此,將 XFS 與某些高端硬件相結合,您將獲得高端性能而不會使文件系統成為瓶頸。分配組還有助于在多處理器系統上優化并行 IO 性能,因為可以同時有多個元數據更新處于“在傳輸中”。
B+ 樹無處不在
分配組在內部使用高效的 B+ 樹來跟蹤主要數據,譬如空閑空間的范圍和索引節點。實際上,每個分配組使用 兩棵 B+ 樹來跟蹤空閑空間;一棵樹按空閑空間的大小排序來存儲空閑空間的范圍,另一棵樹按塊設備上起始物理位置的排序來存儲這些區域。XFS 擅長于迅速發現空閑空間區域,這種能力對于最大化寫性能很關鍵。
當對索引節點進行管理時,XFS 也是很有效的。每個分配組在需要時以 64 個索引節點為一組來分配它們。每個分配組通過使用 B+ 樹來跟蹤自己的索引節點,該 B+ 樹記錄著特定索引節點號在磁盤上的位置。您會發現 XFS 之所以盡可能多地使用 B+ 樹,原因在于 B+ 樹的優越性能和極大的可擴展性。
日志記錄
當然,XFS 也是一種日志記錄文件系統,它允許意外重新引導后的快速恢復。象 ReiserFS 一樣,XFS 使用邏輯日志;即,它不象 ext3 那樣將文字文件系統塊記錄到日志,而是使用一種高效的磁盤格式來記錄元數據的變動。就 XFS 而言,邏輯日志記錄是很適合的;在高端硬件上,日志經常是整個文件系統中爭用最多的資源。通過使用節省空間的邏輯日志記錄,可以將對日志的爭用降至最小。另外,XFS 允許將日志存儲在另一個塊設備上,例如,另一個磁盤上的一個分區。這個特性很有用,它進一步改進了 XFS 文件系統的性能。
象 ReiserFS 一樣,XFS 只對元數據進行日志記錄,并且在寫元數據之前,XFS 不采取任何專門的預防措施來確保將數據保存到磁盤。這意味著,使用 XFS(就象使用 ReiserFS)時,如果發生意外的重新引導,則最近修改的數據有可能丟失。然而,XFS 日志有兩個特性使得這個問題不象使用 ReiserFS 時那么常見。
使用 ReiserFS 時,意外重新引導可能導致最近修改的文件中包含先前刪除文件的部分內容。除了數據丟失這個顯而易見的問題以外,理論上,這還可能引起安全性威脅。相反,當 XFS 日志系統重新啟動時,XFS 確保任何未寫入的數據塊在重新引導時 置零。因此,丟失塊由空字節來填充,這消除了安全性漏洞 ― 這是一種好得多的方法。
現在,關于數據丟失問題本身,該怎么辦呢?通常,使用 XFS 時,該問題被最小化了,原因在于以下事實:XFS 通常比 ReiserFS 更頻繁地將暫掛元數據更新寫到磁盤,尤其是在磁盤高頻率活動期間。因此,如果發生死鎖,那么,最近元數據修改的丟失,通常比使用 ReiserFS 時要少。當然,這不能徹底解決不及時寫數據塊的問題,但是,更頻繁地寫元數據也確實促進了更頻繁地寫數據。
延遲分配
研究一下 延遲分配這個 XFS 獨有的特性,然后我們將結束關于 XFS 的技術概述。正如您可能知道的,術語 分配(allocation)是指:查找空閑空間區域并用于存儲新數據的過程。
XFS 通過將分配過程分成兩個步驟來處理。首先,當 XFS 接收到要寫入的新數據時,它在 RAM 中記錄暫掛事務,并只在底層文件系統上 保留適當空間。然而,盡管 XFS 為新數據保留了空間,但 它卻沒有決定將什么文件系統塊用于存儲數據,至少現在還沒決定。XFS 進行拖延,將這個決定延遲到最后可能的時刻,即直到該數據真正寫到磁盤之前作出。
通過延遲分配,XFS 贏得了許多機會來優化寫性能。到了要將數據寫到磁盤的時候,XFS 能夠以這種優化文件系統性能的方式,智能地分配空閑空間。尤其是,如果要將一批新數據添加到單一文件,XFS 可以在磁盤上分配一個 單一、相鄰區域來儲存這些數據。如果 XFS 沒有延遲它的分配決定,那么,它也許已經不知不覺地將數據寫到了多個非相鄰塊中,從而顯著地降低了寫性能。但是,因為 XFS 延遲了它的分配決定,所以,它能夠一下子寫完數據,從而提高了寫性能,并減少了整個文件系統的碎片。
在性能上,延遲分配還有另一個優點。在要創建許多“短命的”臨時文件的情況下,XFS 可能根本不需要將這些文件全部寫到磁盤。因為從未給這些文件分配任何塊,所以,也就不必釋放任何塊,甚至根本沒有觸及底層文件系統元數據。
非常好我支持^.^
(6) 33.3%
不好我反對
(12) 66.7%
相關閱讀:
- [電子說] 射頻識別技術漫談(26)——Felica的文件系統 2023-10-24
- [電子說] Windows文件系統過濾驅動程序介紹 2023-10-24
- [電子說] 樹莓派Pico文件系統應用:數據記錄器 2023-10-24
- [電子說] FAT32文件系統詳細分析 (格式化SD nand/SD卡) 2023-10-18
- [電子說] 分布式文件系統的設計原理是什么? 2023-10-17
- [電子說] 事務性日志結構文件系統的設計及實現 2023-10-16
- [電子說] 片上flash使用文件系統筆記 2023-10-13
- [嵌入式技術] 全面的Linux文件系統介紹 2023-10-12
( 發表人:admin )