パフォーマンスmdadm raid 5,6,10およびZFS zraid、zraid2、ZFSストライプミラー

SSD Sandisk CloudSpeedでのZFSおよびmdadm + ext4のパフォーマンスのテスト

ローカルディスクアレイを作成するためのテクノロジーを選択します。



このテストの目的は、仮想マシンが4つの本稼働SSDディスクに配置されている場合、仮想マシンが実際の速度でrawファイルイメージで動作できるかを調べることです。 テストは32スレッドで実行され、実際のハイパーバイザーの動作状態をほぼ作成します。



画像








fioツールを使用して測定を行います。



オプション--buffered = 0 --direct = 1がmdadm + ext4に選択されました。 ZFSはこれらのオプションの使用方法を知らないため、ZFSの結果はわずかに高くなることが予想されます。 比較のために、テストの1つとmdadmを使用したバージョンでこれらのオプションを無効にします。



10GBファイルでテストを実施します。 おそらく、このサイズは、通常の操作中にファイルシステムのパフォーマンスを評価するのに十分です。 もちろん、テストデータの量を増やすと、ファイルシステム上の追加のキャッシュおよび予測ツールをすべて無効にするため、すべてのテストの全体数は大幅に減少します。 しかし、そのような目的はありません。 多数の模擬テストを行う必要はありませんが、実際に近いものが必要です。



テストベンチとして、次の構成を使用します。



メーカー:

Supermicro X9DRT-HF +



プロセッサー:

2xIntel®Xeon®CPU E5-2690 0 @ 2.90GHz C2

技術プロセス-32 nm

コアの数-8

スレッド数-16

プロセッサー基本周波数-2.90 GHz

最大ターボ周波数-3.80 GHz

20 MBキャッシュSmartCache

バス速度-8 GT / s QPI

TDP-135 W



RAM:

16x 16384 MB

タイプ:DDR3 Registered(Buffered)

周波数:1333 MHz

メーカー:Micron



ディスクコントローラー:

LSI SAS 2008 RAID ITモード



ソリッドステートドライブ:

4x 1.92Tb SSD Sandisk CloudSpeed ECO Gen. II

SSD、2.5インチ、1920 GB、SATA-III、読み取り:530 Mb / s、書き込み:460 Mb / s、MLC

要求されたIOPS任意読み取り/書き込み76000/14000 IOPS

MTBF 2,000,000時間



カーネル:

Linux 4.13.4-1-pve#1 SMP PVE 4.13.4-26(月、2017年11月6日11:23:55 +0100)x86_64



ZFSバージョン:

v0.7.3-1



IOスケジューラー:



cat /sys/block/sdb/queue/scheduler [noop] deadline cfq
      
      





テストツール:

fio-2.16



アレイ構築オプション



#1つのディスクにZFSアレイを作成するためのパラメーター



 zpool create -f -o ashift=12 /dev/sdb
      
      





#zraid(ZFSのraid5アナログ)を作成するためのパラメーター



 zpool create -f -o ashift=12 test raidz /dev/sdb /dev/sdc /dev/sdd /dev/sde
      
      





#zraid2(ZFSのraid6アナログ)を作成するためのパラメーター



 zpool create -f -o ashift=12 test raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde
      
      





#ストライプミラーを作成するためのパラメーター(ZFSのRAID10アナログ)



 zpool create -f -o ashift=12 test mirror sdb sdc mirror sdd sde
      
      





#ZFSアレイの一般的なパラメーター



 ZFS set atime=off test ZFS set compression=off test ZFS set dedup=off test ZFS set primarycache=all test
      
      





arcでは、すべてのメモリの1/4または52 GBが割り当てられます



 cat /etc/modprobe.d/ZFS.conf options ZFS zfs_arc_max=55834574848
      
      





#Mdadm raid5アレイ作成オプション



 mdadm --zero-superblock /dev/sd[bcde] mdadm --create --verbose --force --assume-clean --bitmap=internal --bitmap-chunk=131072 /dev/md0 --level=5 --raid-devices=4 /dev/sd[bcde]
      
      





#Mdadm raid6アレイ作成オプション



 mdadm --zero-superblock /dev/sd[bcde] mdadm --create --verbose --force --assume-clean --bitmap=internal --bitmap-chunk=131072 /dev/md0 --level=6 --raid-devices=4 /dev/sd[bcde]
      
      





#mdadm 5/6アレイの一般的なパラメーター



 echo 32768 > /sys/block/md0/md/stripe_cache_size blockdev --setra 65536 /dev/md0 echo 600000 > /proc/sys/dev/raid/speed_limit_max echo 600000 > /proc/sys/dev/raid/speed_limit_min
      
      





#mdadm raid10配列を作成するためのパラメーター



 mdadm --zero-superblock /dev/sd[bcde] mdadm --create --verbose --force --assume-clean --bitmap=internal --bitmap-chunk=131072 /dev/md0 --level=10 --raid-devices=4 /dev/sd[bcde]
      
      





#GPTマークアップテーブルを作成するためのパラメーター



 parted -a optimal /dev/md0 mktable gpt mkpart primary 0% 100% q
      
      





#ext4ファイルシステムを作成するためのパラメーター



 mkfs.ext4 -m 0 -b 4096 -E stride=128,stripe-width=256 /dev/md0p1 (/dev/sdb)  stripe-width=256  raid6  raid10  stripe-width=384  raid5
      
      





#ext4ファイルシステムをfstabにマウントするパラメーター



 UUID="xxxxx" /test ext4 defaults,noatime,lazytime 1 2
      
      







結果







 fio --directory=/test/ --name=read --rw=read --bs=4k --size=200G --numjobs=1 --time_based --runtime=60 --group_reporting --ioengine libaio --iodepth=32 #  ext4 +  --buffered=0 --direct=1
      
      









読み取りテストは、ZFSファイルシステムの動作に対するARCバッファーの影響を明確に示しています。 ZFSはすべてのテストで均一かつ高速を示します。 --buffered = 0 --direct = 1をオフにすると、ZFSによるmdadm raid10 + ext4の速度は、遅延とIOPSの点で3倍遅くなり、10倍遅くなります。



zraidに追加のディスクが存在しても、ZFSの速度は大幅に向上しません。 ZFS 0 + 1はzraidと同じくらい遅いです。



 fio --directory=/ --name=test --rw=randread --bs=4k --size=10G --numjobs=1 --time_based --runtime=60 --group_reporting --ioengine libaio --iodepth=32 --buffered=0 --direct=1 #  ext4 +  --buffered=0 --direct=1
      
      









ここでは、ARCはZFSを保存しません。 数字は情勢を明確に示しています。



 fio --directory=/ --name=test --rw=write --bs=4k --size=10G --numjobs=1 --group_reporting --ioengine libaio --iodepth=32 --buffered=0 --direct=1 #  ext4 +  --buffered=0 --direct=1
      
      









繰り返しになりますが、バッファはZFSがすべての配列で均一な結果を生成するのに役立ちます。 mdadm raid6は、明らかにraid5とraid10の前を通過します。 バッファーおよびキャッシュされたmdadm raid10は、ZFSのすべてのオプションで2倍の最高の結果をもたらします。



 fio --directory=/ --name=test --rw=randwrite --bs=4k --size=10G --numjobs=1 --group_reporting --ioengine libaio --iodepth=32 --buffered=0 --direct=1 #  ext4 +  --buffered=0 --direct=1
      
      









写真はランダムな読書に似ています。 ZFSは、そのバッファーとキャッシュを支援しません。 彼は恐ろしい力と融合します。 特に怖いのは、ZFS上の単一ドライブの結果であり、一般的にZFSの結果は嫌です。



mdadm raid5 / 6により、すべてが期待されます。 raid5は低速、raid6はさらに低速、raid10は単一のディスクよりも約25〜30%高速です。 バッファリングを使用したRaid10は、配列をスペースに入れます。



結論



誰もが知っているように、ZFSは高速ではありません。



他の多くの重要な機能や利点が含まれていますが、これはmdadm + ext4よりも大幅に遅いという事実を否定するものではありません。キャッシュやバッファー、予測システムなどの操作を考慮してもです。 この部分に驚きはありません。



ZFSバージョンv0.7.xはそれほど速くなりませんでした。



おそらくv0.6.xより高速ですが、mdadm + ext4からはほど遠いでしょう。



zraid / 2はraid5 / 6の改良版ですが、パフォーマンスの面ではないという情報を見つけることができます。



zraid / 2または0 + 1を使用すると、単一のZFSドライブよりも高速なアレイを実現できません。



最良の場合、速度はこれより遅くなることはなく、かなり速くなることもありません。 最悪の場合、余分なディスクがあると全体の速度が低下します。 ZFSのRAIDは、パフォーマンスではなく信頼性を高める手段です。



大きなARCが存在しても、同じext4に比べてZFSのパフォーマンスギャップは補正されません。



ご覧のとおり、50 GBのバッファーであっても、ZFSがEXT4の弟に追いつくのを大幅に支援することはできません。 特にランダムな書き込みおよび読み取り操作で。



仮想化にZFSを使用する必要がありますか?



誰もが自分で答えます。 個人的に、私はmdadm + raid10を支持してZFSを放棄しました。



ご清聴ありがとうございました。



All Articles