hw-raidで構成されたRAIDに対してxfsでフォーマットしてみる。
調べると、xfsでフォーマットする際、 Chunk Size と データディスク数 の指定が必要らしい。
*software-raidには不要
*Chunk SizeってStripe Sizeと同義だと思ってますが、、違いますかね?
実際に本当に必要なのかを調べるために、
ここでは、Chunk Size/データディスク数を
指定した場合と、
指定しない場合
とで簡単な比較を行ってみた。
基礎情報 †
RAIDはhw-RAIDにて、RAID6(データディスク6台、パリティディスク2台)構成で、Stripe Sizeを256Kbyteでボリュームを作成した。
*1台のHDDは1TBの2.5inch-HDD
*ボリュームには、partedによるパーティションは作っていない
*logical_block_sizeは512,physical_block_sizeは4096
ボリュームの設定内容:
項目 | 値 | 備考 |
RAID Level | 6 | raid60,raid10,raid0,raid5 |
Size | 5.455 TB | |
Parity size | 1.818TB | |
Strip size | 256 KB | |
Read policy | Always Read Ahead | |
Write policy | Write Back | AlwaysWriteBackなら |
I/O policy | Direct IO | |
Access policy | Read Write | |
Disk Cache Policy | Enable | 規定だとDisable 参照 |
パフォーマンス測定には bonnie++ 1.03e を使用して、
計測パラメータは、-s無指定で、-n 256:1024:1024:16としてる。
-s無指定により、Sequentialな計測にはデフォルトに従い搭載メモリ量(16GB)の2倍の32GBで計測されている。
*bonnie++はファイル読出・書込速度計測と、ファイルの作成・削除の速度計測の2つの面を持つ
指定しない場合 †
[root@e ~]# mkfs.xfs -f /dev/sda
meta-data=/dev/sda isize=256 agcount=32, agsize=45760448 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=1464334336, imaxpct=5
= sunit=64 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@e ~]# mount -t xfs /dev/sda /export
[root@e ~]# bonnie++ -d /export -n 256:1024:1024:16 -u root
Sequential Output | Sequential Input | Random Seeks | Sequential Create | Random Create |
Per Char | Block | Rewrite | Per Char | Block | Create | Read | Delete | Create | Read | Delete |
157586(100) | 635116(17) | 231945(12) | 118887(79) | 296926(8) | 482.8(1) | 49502(100) | 429283(100) | 88289(92) | 49806(100) | 321406(100) | 79116(99) |
156031(100) | 640112(17) | 230549(11) | 118111(78) | 295515(7) | 439.4(1) | 49618(100) | 419737(99) | 98499(96) | 49443(100) | 318184(100) | 80840(100) |
157492(100) | 651636(17) | 231143(11) | 117508(77) | 274954(7) | 489.7(2) | 49187(99) | 405004(100) | 101597(100) | 47746(97) | 314941(100) | 79677(100) |
154862(100) | 642487(17) | 209472(10) | 112790(75) | 300062(7) | 498.6(2) | 50245(100) | 414876(100) | 104692(100) | 46682(98) | 317516(100) | 80332(100) |
157328(100) | 634726(17) | 227960(11) | 118659(78) | 294853(7) | 502.1(1) | 49790(100) | 414164(100) | 101416(100) | 48886(99) | 319999(100) | 79812(100) |
155478(100) | 645647(17) | 228430(10) | 123365(81) | 319671(8) | 502.7(2) | 49607(100) | 416855(100) | 104578(100) | 47914(98) | 304287(96) | 66977(93) |
156316(100) | 644360(17) | 229135(11) | 116701(76) | 273623(7) | 504.8(2) | 49654(100) | 410611(100) | 101425(100) | 47525(98) | 320463(100) | 78990(99) |
155478(100) | 646154(17) | 236499(11) | 116911(78) | 290607(7) | 521.5(2) | 49528(100) | 410097(100) | 104003(100) | 48005(97) | 310738(100) | 79697(100) |
155698(100) | 638501(17) | 231300(11) | 115497(76) | 284251(7) | 536.5(2) | 48609(98) | 381696(100) | 98371(98) | 49387(100) | 314205(100) | 80123(100) |
157015(100) | 648727(17) | 229934(11) | 119427(78) | 292931(7) | 505.1(2) | 48694(99) | 404001(100) | 102362(100) | 47889(97) | 316612(100) | 80292(100) |
158459(100) | 652682(17) | 227423(11) | 116835(79) | 285947(7) | 527.3(2) | 48452(99) | 405137(100) | 103491(100) | 48878(100) | 314084(100) | 71436(94) |
*単位は kByte/sec。カッコ内はcpu使用率 単位%
指定した場合 †
suはChunk Sizeを示して、swはデータディスク数を表わす。
[root@e ~]# umount /export
[root@e ~]# mkfs.xfs -f -d su=256k,sw=6 /dev/sda
mkfs.xfs: Specified data stripe width 3072 is not the same as the volume stripe width 2048
meta-data=/dev/sda isize=256 agcount=32, agsize=45760448 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=1464334336, imaxpct=5
= sunit=64 swidth=384 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@e ~]#
[root@e ~]# mount -t xfs /dev/sda /export
[root@e ~]# bonnie++ -d /export -n 256:1024:1024:16 -u root
同じように300秒の間を置きつつ複数回計測を行った。
Sequential Output | Sequential Input | Random Seeks | Sequential Create | Random Create |
Per Char | Block | Rewrite | Per Char | Block | Create | Read | Delete | Create | Read | Delete |
157598(100) | 651549(17) | 229354(11) | 115802(76) | 275084(7) | 471.8(1) | 50153(100) | 416381(100) | 94468(93) | 48950(100) | 316083(100) | 79741(100) |
155367(100) | 639652(17) | 235536(11) | 117646(78) | 296190(7) | 514.3(2) | 50358(100) | 411006(100) | 103310(100) | 47232(97) | 308560(100) | 67301(93) |
157435(100) | 643185(17) | 233682(10) | 118179(77) | 302194(7) | 545.0(2) | 48560(100) | 405670(100) | 101146(100) | 48146(98) | 309333(100) | 79354(100) |
155638(100) | 637540(17) | 231160(11) | 117931(77) | 295909(7) | 522.3(2) | 48321(100) | 406584(100) | 101039(100) | 47622(97) | 313379(100) | 78660(100) |
155020(100) | 654002(17) | 225505(10) | 117116(77) | 279159(7) | 470.3(1) | 50111(99) | 407455(100) | 100767(100) | 47740(97) | 315921(100) | 79445(100) |
157175(100) | 651325(17) | 231268(11) | 117173(78) | 293738(7) | 537.8(1) | 49788(100) | 416912(100) | 103140(100) | 47818(98) | 320159(100) | 79492(100) |
156903(100) | 645613(17) | 231136(10) | 120211(78) | 298054(7) | 504.3(2) | 49666(100) | 416771(100) | 100599(100) | 48475(98) | 315636(100) | 77749(99) |
157991(100) | 649416(17) | 229189(11) | 120580(79) | 306224(7) | 517.3(2) | 49609(100) | 413023(100) | 101167(100) | 47466(98) | 315756(100) | 80174(100) |
157675(100) | 638369(17) | 227629(10) | 114201(76) | 289807(7) | 528.3(2) | 49170(98) | 401001(100) | 94454(94) | 49478(100) | 319096(100) | 78662(99) |
157335(100) | 641867(17) | 228563(11) | 112413(75) | 269419(6) | 540.9(2) | 49197(99) | 403165(100) | 99240(96) | 48719(100) | 305886(100) | 71927(94) |
結論 †
あんまり変わらない....hw-raidでHDDをオンライン追加した場合はどうなるか興味あるが、初期構築に際してパラメーターに目くじらは不要かな。10%の差なら立ち上げる。5%なら悩む。2%なら誤差って思ってしまう。
ddで計測 †
[root@e export]# time dd if=/dev/zero of=./zero2 bs=4k count=2621440 conv=fsync
2621440+0 レコード入力
2621440+0 レコード出力
10737418240 バイト (11 GB) コピーされました、 16.747 秒、 641 MB/秒
real 0m16.749s
user 0m0.177s
sys 0m4.110s
[root@e export]#
[root@e ~]# mkfs.xfs -f /dev/sda
[root@e ~]# mount -t xfs /dev/sda /export
[root@e ~]# cd src/fio-cdm
[root@e fio-cdm]# ./fio-cdm /export
| | Read(MB/s)|Write(MB/s)|
|------|-----------|-----------|
| Seq | 420.361| 916.741|
| 512K | 60.577| 148.256|
| 4K | 64159.000| 3.003|
|4KQD32| 14.165| 1.975|
[root@e fio-cdm]#
[root@e fio-cdm]# ./fio-cdm /export
| | Read(MB/s)|Write(MB/s)|
|------|-----------|-----------|
| Seq | 423.315| 588.168|
| 512K | 53.117| 139.074|
| 4K | 61911.000| 3.065|
|4KQD32| 13.713| 1.976|
[root@e fio-cdm]#
[root@e fio-cdm]# ./fio-cdm /export
| | Read(MB/s)|Write(MB/s)|
|------|-----------|-----------|
| Seq | 421.399| 562.638|
| 512K | 58.063| 130.247|
| 4K | 59820.000| 3.048|
|4KQD32| 13.986| 2.027|
[root@e fio-cdm]#
[root@e fio-cdm]# ./fio-cdm /export
| | Read(MB/s)|Write(MB/s)|
|------|-----------|-----------|
| Seq | 434.267| 587.493|
| 512K | 51.520| 137.045|
| 4K | 52459.000| 3.146|
|4KQD32| 13.640| 2.042|
[root@e fio-cdm]#