FreeNASとNAS4Freeの速度比較(10GbE版)

FreeNASとNAS4Freeの速度比較メモの10GbE版

最初に

以前書いたFreeNASとNAS4Freeの速度比較の10GbE版です

検証機

ESXi側
CPU : Intel Core i7-4770
メモリ : 32GB
NIC : Intel X710-DA2
OS : VMware ESXi 6.5.0 Build 5310538

NAS側
CPU : Intel Pentium G4620
メモリ : 32GB
NIC : Intel X710-DA2
HDD : WD40EZRZx4 RAIDZ2 (dedup off)

ESXi機とNAS機はSFP+ケーブルを使って10GbEで直結
MTUは標準のまま(1500)

FreeNASとNAS4Free両方とも同じように
HDD4台でRAIDZ2を構成
全領域を使った単一ZFSプールを作成しSMB領域を割り当て
その中にiSCSIとNFSフォルダを追加し各サービス割り当て
iSCSIはファイルエクステント形式で1TB割り当てた
OSやNFS・iSCSIの設定は基本的に全て標準のまま使用

データストア登録時はESXi 6.5なのでvmfs6を利用

前回書き忘れてますがCrystalDiskMarkの計測は全てALLで計測
何回か計測して一番いい結果を記録に使ってます

NAS機のOS

FreeNASはCorralの代替になる予定のFreeNAS 11
FreeNAS-11-MASTER-201704240408 (3b6bcb4)  Nightly Build

[root@freenas] ~# uname -a
FreeBSD freenas.local 11.0-STABLE FreeBSD 11.0-STABLE #0 30f4688c0(freenas/11-stable): Mon Apr 24 04:36:59 UTC 2017     root@gauntlet:/freenas-clean/freenas/_BE/objs/freenas-clean/freenas/_BE/os/sys/FreeNAS.amd64  amd64

NAS4Freeは11.0.0.4.4195

nas4free: ~# uname -a
FreeBSD nas4free.local 11.0-RELEASE-p9 FreeBSD 11.0-RELEASE-p9 #0 r316944M: Sat Apr 15 00:45:52 CEST 2017     root@dev.nas4free.org:/usr/obj/nas4free/usr/src/sys/NAS4FREE-amd64  amd64

NFS・iSCSI計測用VM

前回と同じ構成です

ゲストOS指定 : Windows10(64bit)
CPU : 1
メモリ : 8192MB
HDD : 50GB, LSI Logic SAS, シン・プロビジョニング
仮想デバイスノード : SCSI

実際にインストールしたのは
Windows10 Pro 64bit
バージョン 1703 ビルド 15063.250
2017/04/26時点でのWinUpdate済状態

VM・OSともに設定は標準のままいじらず

NFS・iSCSIは別々の仮想マシンを同じように新規で作成
(VMコピーしたりはしていない)

NFS・iSCSIともに今回の計測時は1VMしか作成しておらず
複数VMによる同時アクセスは今回の計測には考慮されていない

インストールはCドライブへ50GB全て割り当てて
計測もOSと同じCドライブで計測

NFS速度

FreeNAS-11-MASTER-201704240408

NFS計測 – FreeNAS

NAS4Free 11.0.0.4.4195

NFS計測 – NAS4Free

10GbEなので1170MB/sと前回のGbEからちゃんと10倍になってます
しかしZFSとの相性が悪く相変わらずWriteはひどい結果

NFSv4速度

NFSv4オプションを有効にした結果

FreeNAS-11-MASTER-201704240408

NFSv4計測 – FreeNAS

NAS4Free 11.0.0.4.4195

NFSv4計測 – NAS4Free

頭打ちになっていたGbEのときと違って
若干ながら全体的に速度が上がったのが確認できます

NFS速度 sync=disabled

前回と同じコマンドを使いsync=disabledにした結果

FreeNAS-11-MASTER-201704240408

NFS計測 sync=disabled – FreeNAS

NAS4Free 11.0.0.4.4195

NFS計測 sync=disabled – NAS4Free

速度は出ますが前回同様このオプションは実用すべきではありません
NFSで速度出すならZIL追加しましょう

iSCSI速度

NFSと同じくESXiにデータストアとして登録し
VM上でCrystalDiskMarkを使い計測

FreeNAS-11-MASTER-201704240408

iSCSI計測 – FreeNAS

NAS4Free 11.0.0.4.4195

iSCSI計測 – NAS4Free

4KQ32T1 Writeだけ明らかな差を確認
この件については長くなるので次項でまとめる

iSCSIにおける各OSの違い

NFSと違ってiSCSIの場合はFreeNASとNAS4Freeは明らかな違いを確認できます
これはSMBやNFSは同じソフトを利用しているのに対して
iSCSIだけはFreeNASはctld、NAS4Freeはistgtと違うからと予想されます

ctldはFreeBSD 10から利用できるFreeBSD標準機能で
以前はFreeNASもistgtを使ってましたが
現在は既にctldへ切り替えた模様

NAS4Freeはctldの導入準備だけ進めているらしく
いずれはistgtと並行して利用できるようになる予定らしいですが
11.0.0.4.4195の段階では導入されてません

4KQ32T1 Writeで速度差を確認できたので
iSCSI使うならFreeNASの方がオススメなのかと聞かれても簡単には答えれないのは
書き込みキャッシュを超えた状態からの回復がFreeNASは明らかに遅いのが気になるからです

これは何回か計測してる途中で気づいたのですが
簡単に再現するならCrystalDiskMarkの8GBで計測した後に1GBを計測するとわかります
具体的にどうなるかというと以下の通り

FreeNAS-11-MASTER-201704240408

iSCSI計測 8GB後 – FreeNAS

NAS4Free 11.0.0.4.4195

iSCSI計測 8GB後 – NAS4Free

検証機の場合は32GBのメモリなので
8GBx5の計測中に書き込みキャッシュを超えてしまい
その後すぐに1GB計測を開始してもその影響を受けてしまうのを利用しているのですが
結果を見比べると一目瞭然で
FreeNASは1GB計測の最後まで本来のパフォーマンスに回復してないのに対し
NAS4Freeは4KQ32T1 Writeぐらいから回復しています

なのでiSCSIだけでいうと
メインメモリを大量に積んでかつGB単位の転送をあまりしない人にはFreeNAS
GB単位のファイルをiSCSI上のVMで扱うならNAS4Free
といった感じでしょうか

実際にどのくらいの時間で回復するのかというと
NAS4Freeは先ほどの計測結果からしても1分空ければ確実にいつもの計測結果に戻りますが
FreeNASでの遅くなった状態からの回復時間は
8GB計測後5-6分ほど空けてから再計測しないとまともな結果が出ない感じ
なぜここまで差が出るのか正直よくわかりません

速度低下した状態でもGbE環境よりは速度出てるからいいじゃんと思うかもしれませんが
タスクマネージャ上でいう平均応答時間が増加しやすい状態になるので
回復するまではレスポンスが悪くなってる点に注意が必要

あとFreeNASだと負荷状態が続くとたまにESXi側で
データストア切断のエラーが記録されます

ESXi データストア切断

このようなiSCSIの接続が数秒間切れる現象は
同じハード・同じNICドライバを使っているNAS4Freeの方では出ないし
FreeNASのログには何もないのでおそらくNICが落ちているのではなく
ctld側がビジーか何かで応答できずESXi側での判断で
タイムアウト→切断されてると思うのですが原因は不明
ちなみにFreeNAS Corralの検証でも同様でした

短時間で勝手に回復するのでクラッシュしたりはしませんし
負荷かけた時にごく稀に出る程度なのでそこまで致命的な問題ではないです
気になる場合はタイムアウトの設定を緩くすれば対処可能

最後に

今回の検証中で一番いいスコアだと1180MB/sが出たときもあるので
X710-DA2が10GbEを最大まで使ってくれていることも確認出来ました

CPU割り当て1のVM内タスクマネージャで見ると
Seqだと20%ぐらいで済みますが一番重い4KQ32T1だと90%までいきますので
10GbEでギリギリ、10GbE以上はCPUがボトルネックになりそうです