centos6構建XFS文件系統


 在CENTOS6上面,需要安裝mysql數據庫,爲提高數據庫的讀寫效率和性能,準備將mysql數據文件系統安裝在XFS分區上。


 XFS,一種高性能的日誌文件系統,最早於1993年,由Silicon Graphics爲他們的IRIX操作系統而開發,是IRIX 5.3版的默認文件系統。後來被移植到Linux 內核上。XFS 特別擅長處理大文件,同時提供平滑的數據傳輸。在存儲很大的環境下進行格式化操作,XFS文件系統的速度比ext3、ext4文件系統快了很多!而且據說XFS可以支持到100T,讀寫速度也優於其他文件系統。


系統環境:CENTOS6.4

一、安裝xfs文件系統

XFS所需要的rpm包在系統的ISO文件中都可以找到,我們只需要安裝xfsprogs和xfsdump這兩個包就可以了。

[root@localhost Packages]# find . -name "xfs*.rpm"

./xfsdump-3.0.4-3.el6.x86_64.rpm

./xfsprogs-devel-3.1.1-10.el6.x86_64.rpm

./xfsprogs-qa-devel-3.1.1-10.el6.i686.rpm

./xfsprogs-qa-devel-3.1.1-10.el6.x86_64.rpm

./xfsprogs-devel-3.1.1-10.el6.i686.rpm

./xfsprogs-3.1.1-10.el6.i686.rpm

./xfsprogs-3.1.1-10.el6.x86_64.rpm

[root@localhost Packages]# rpm -ivh xfsprogs-3.1.1-10.el6.x86_64.rpm xfsdump-3.0.4-3.el6.x86_64.rpm

warning: xfsprogs-3.1.1-10.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

Preparing...                ########################################### [100%]

  1:xfsprogs               ########################################### [ 50%]

  2:xfsdump                ########################################### [100%]


二、XFS格式化

XFS格式化速度很快,幾乎是立刻就完成了格式化。

[root@localhost Packages]# mkfs.xfs  /dev/sdb

meta-data=/dev/sdb               isize=256    agcount=4, agsize=655360 blks

        =                       sectsz=512   attr=2, projid32bit=0

data     =                       bsize=4096   blocks=2621440, imaxpct=25

        =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0

log      =internal log           bsize=4096   blocks=2560, version=2

        =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0


三、掛載測試

[root@localhost /]# mount -t xfs /dev/sdb /data

[root@localhost /]# mount |grep  data

/dev/sdb on /data type xfs (rw)

測試:

寫性能

[root@localhost test]# time dd if=/dev/zero of=/data/test/ceshi.txt bs=1M count=100

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 0.42419 s, 247 MB/s


real0m0.431s

user0m0.001s

sys0m0.427s

讀性能

[root@localhost test]# time dd if=/data/test/ceshi.txt  of=/dev/null  bs=1M count=100

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 0.129903 s, 807 MB/s


real0m0.135s

user0m0.003s

sys0m0.132s


四、補充XFS優化

#mkfs.xfs -f -i size=512 -l size=128m,lazy-count=1 -d agcount=16 /dev/sdb1  


   -i size=512 : 默認的值是256KB,這裏的設置是爲了selinux的,這個設置針對inode size,selinux使用xfs的Extend Attribute,首先要寫到inode中,如果容量不夠(默認是256KB的時候就不夠,剛剛多一點點),就寫到block中,這會損失性能,當需要使用selinux的時候。這似乎對一般用戶沒什麼作用,因爲一般用戶都不用selinux的,大家對linux系統的安全性還是挺信任的,不過,說實話,我不信任,況且RedHat 的FC已經默認配置了selinux,這很好。做了這個改動,方便以後我在系統中配置selinux而不擔心性能的損失。

   -l size=128m :注意是小寫的m,不是大寫的。默認值的是10m(bsize=4096 x blocks=2560)。這個值可以設置成32m(分區容量不小於250M)/64m(分區容量不小於500M)/128m(分區容量不小於700M),對於分區容量的限制,我這裏列出的只是大概,最大可設128m。修改這個參數成128m,可以顯著的提高xfs文件系統刪除文件的速度,當然還有其它,如拷貝文件的速度。 這個參數需要大內存的支持,內存太少的機器大概不能設置這麼高。(標準是什麼?512M?1G?我不瞭解,所以我上面說要自己實際的測試一下。)

   -l lazy-count=value
       This changes the method of logging various persistent counters  in  the  superblock.   Under metadata  intensive  workloads, these counters are updated and logged frequently enough that the superblock updates become a serialisation point in the  filesystem.  The  value  can  be either 0 or 1.
       With  lazy-count=1,  the superblock is not modified or logged on every change of the persis-tent counters. Instead, enough information is kept in other parts of the  filesystem  to  be able  to  maintain  the  persistent  counter  values  without  needed  to  keep  them in the superblock.  This gives significant improvements in performance on some configurations.  The default  value  is  0 (off) so you must specify lazy-count=1 if you want to make use of this feature.

   -d agcount=4 :默認值是根據容量自動設置的。可以設置成1/2/4/16等等,這個參數可以調節對CPU的佔用率,值越小,佔用率越低。這是理論上的,在我的機器上,agcount=1反而比agcount=2的cpu佔用率還高,我想這是因爲我的cpu是雙核的原因吧。要注意,cpu的佔用率低,那每一秒處理的數據量也會降低一些。我比較了agcount=2和4,發現還是4比較好。這樣一來,這個參數的設置,就是需要自己去選擇的了。

mount的xfs選項(關鍵參數nobarrier):

vi /etc/fstab  

修改掛載選項  

/dev/sdb1               /data              xfs     defaults,noatime,nobarrier       00

重新掛載  

mount -o remount /data  



   nobarrier
             Many hardware RAID have a persistent write cache which preserves it across power failure, interface resets, system crashes, etc. Using write barriers in this instance is not recommended and will in fact lower performance. Therefore, it is recommended to turn off the barrier support and mount the filesystem with "nobarrier". But take care about the hard disk write cache, which should be off.

   noatime 默認的方式下linux會把文件訪問的時間atime做記錄,這在絕大部分的場合都是沒有必要的,如果遇到機器IO負載高或是CPU WAIT高的情況,可以嘗試使用noatime,療效好,見效快。

nobarrier掛載

XFS文件系統默認在掛載時啓用“寫入屏障”的支持。該特性會一個合適的時間沖刷下級存儲設備的寫回緩存,特別是在XFS做日誌寫入操作的時候。這個特性的初衷是保證文件系統的一致性,具體實現卻因設備而異——不是所有的下級硬件都支持緩存沖刷請求。在帶有電池供電緩存的硬件RAID控制器提供的邏輯設備上部署XFS文件系統時,這項特性可能導致明顯的性能退化,因爲文件系統的代碼無法得知這種緩存是非易失性的。如果該控制器又實現了沖刷請求,數據將被不必要地頻繁寫入物理磁盤。爲了防止這種問題,對於能夠在斷電或發生其它主機故障時保護緩存中數據的設備,應該以 nobarrier 選項掛載XFS文件系統。




   logbufs=value
             Set  the number of in-memory log buffers.  Valid numbers range from 2-8 inclusive.  The default value is 8 buffers for filesystems with a blocksize of 64K, 4 buffers for filesystems with a blocksize of 32K,  3 buffers for filesystems with a blocksize of 16K, and 2 buffers for all other configurations.  Increasing the number of buffers may increase performance on some workloads at the cost of the memory used for  the additional log buffers and their associated control structures.

   logbsize=value
             Set  the  size  of each in-memory log buffer.  Valid sizes are 16384 (16K) and 32768 (32K).  The default value for machines with more than 32MB of memory is 32768,  machines  with  less  memory  use  16384  by default.


測試後發現讀寫性能還可以更好,測試方法同上。


五、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。

XFS使用高的表結構(B+樹),保證了文件系統可以快速搜索與快速空間分配。XFS能夠持續提供高速操作,文件系統的性能不受目錄中目錄及文件數量的限制。

注:一般大於2T的分區用PARTED來分,而對於大於16T的分區雖然可以用PARTED來分,但使用EXT4分區格式來掛載時,也易出錯。在這個時候把大於16T的單個分區用XFS來格式化,然後掛載是可以正常的。

4、I/0讀寫快

XFS 能以接近裸設備I/O的性能存儲數據。在單個文件系統的測試中,其吞吐量最高可達7GB每秒,對單個文件的讀寫操作,其吞吐量可達4GB每秒


缺點:

XFS文件系統無法被收縮。
歷史上XFS上的元數據操作曾比其它文件系統都慢,表現爲在刪除大量小文件時性能糟糕。該性能問題是被Red Hat的XFS開發者Dave Chinner在代碼中定位到的。使用一個叫“延遲記錄”的掛載選項可以成數量級地提升元數據操作的性能。該選項幾乎把日誌整個存在內存中。Linux內核主線版本2.6.35中作爲一個試驗性特性引入了這個補丁,在2.6.37中使它成爲了一個穩定的特性,並計劃在2.6.39中把它作爲默認的日誌記錄方法。早期測試顯示在有少量線程的環境中其性能接近EXT4,在大量線程的環境下超過了EXT4



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章