顯示具有 檔案系統 標籤的文章。 顯示所有文章
顯示具有 檔案系統 標籤的文章。 顯示所有文章

2007年7月9日 星期一

[轉]Linux環境下使用XFS文件系統

[本文轉載來源為:http://www.raidcn.com/article/2007-5-23/2007523164231.html]

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檔案系統的系統了。