検証機
ESXi側
CPU : Intel Core i7-4770
メモリ : 32GB
NIC : Intel EXPI9301CT(Intel 82574L)
OS : VMware ESXi 6.0.0 Build 5224934
NAS4FREE側
CPU : Intel Pentium G4620
メモリ : 32GB
NIC : Intel I219-V
HDD : WD40EZRZx4
OS : NAS4FREE 11.0.0.4 rev4141(FreeBSD 11.0-RELEASE-p8)
ESXi機とNAS4FREE機はGbE(1000BASE-T)を直結して1対1接続していて、NAS4FREEの設定はHDD4台でのRAIDZ2を構成(dedup off)している。
iSCSIはファイルエクステント形式で50GBを割り当て
NFSは同じRAIDZ2内にフォルダを作りNFS共有に割り当て
NFSv4は無効
MTUは標準の1500のまま
計測用VM
ゲストOS指定 : Windows10(64bit)
CPU : 1
メモリ : 8192MB
HDD : 50GB, LSI Logic SAS, シン・プロビジョニング
仮想デバイスノード : SCSI
実際にインストールしたのは
Windows10 Pro 64bit
バージョン 1607 ビルド 14393.969
VM・OSともに設定は標準のままいじらず
NFS・iSCSIは別々の仮想マシンを同じように新規で作成(VMコピーしたりはしていない)
NFS・iSCSIともに今回の計測時は1VMしか作成しておらず、複数VMによる同時アクセスは今回の計測には考慮されていない。
インストールはCドライブへ50GB全て割り当てて、計測もOSと同じCドライブで計測した。
計測結果1
CrystalDiskMarkを使って計測
NAS4FREE側の通信・CPU負荷も掲載
NFS
NFS GbE – Win10 Pro 64bit CrystalDiskMark
NFS – NAS4FREE側の負荷
iSCSI
iSCSI GbE – Win10 Pro 64bit CrystalDiskMark
iSCSI – NAS4FREE側の負荷
計測結果2
次にCrystalDiskMarkではなく通常のファイルコピーでどうなるか
VM外にある共有フォルダからVM内のデスクトップへ
4GB超えのファイルをコピーしてみました
NFS
NFS – ファイル 1
NFS – ファイル転送 2
iSCSI
iSCSI – ファイル転送
NFSの書き込みが遅い件
これを見て誰もがNFSの書き込みが異常に遅いと思うでしょうがこれは同期書き込み云々が原因で設定で回避できます。iSCSIとNFSの比較をデフォルトの設定で実施した結果となります。
そして読み込みに関してはどちらにしてもGbEがボトルネックなので差が出ていませんでした。
所感
GbEのTCP/IP理論値がMTU1500で118.6MB/sということなので、Intel NIC同士の直結だけあって速度自体はGbEのほぼ限界まで出ています。NAS4FREEもGbE程度じゃG4620でもCPU負荷が半分にも行かずかなり余裕でした。
ESXiは、Ether接続であれば、ファイル共有のNFSかブロックアクセスのiSCSIとなりますが、iSCSIが手軽で技術もいい具合に枯れていて安心だと思います。
https://blogs.vmware.com/vmware-japan/2014/02/vsphere-basic-storage2.htmlなお、NFSでも、VAAIなどストレージ側の機能を用いてサーバ側リソースを効率的に利用する処理が可能な場合には、性能差の開きは少なくなると思います。