環境
- FreeNAS
- HDD WD RED 2TB x3 RAID-Z
- NFS
- sync=disable
- Proxmox
- Windows10をインストール済み
- Network
- 10GbE
症状
ProxmoxからFreeNASへNFSで接続し、Windowsを入れる。
このとき、Proxmox側のディスクドライブはIDE0
この状態でCrystalDiskMarkをかけた結果が以下
HDDはWD REDだし、RAID-Zとはいえ、Read/Writeともにほぼ同じ速度で頭打ちなのはおかしい。
FreeNAS側でも、CPUやメモリが張り付く様子もなく、他のNFSで同じように測定されている方の結果からも、FreeNAS側の問題ではないと判断。
作業
結論から言うと、Proxmox上のWindowsのディスクを、IDE0からSCSI0にした。
この辺は、VirtIOのドライバを入れたりしないといけないので、別途作業が必要。
これがちょっと面倒である。
結果
Proxmox上のWindowsのディスクをSCSI0にして、再度CrystalDiskMarkで計測した結果が以下である。
めちゃめちゃ早くなった。
Readに関しては、CrystalDiskMarkの性質上、テスト前に書き込んだテスト用データがFreeNASのNFSボリューム上のキャッシュにあり、キャッシュから読み出したものだと思われる。
しかしながら、Writeに関しては、ディスクから直接読み込んでいると思われる数値が出ている。
結果として大幅な速度向上に成功した。
余談
これはあくまでも推察なので、事実と異なるかもしれないが、CrystalDiskMarkがディスクのベンチマークを行う際、以下の順序で実行されているように思う。
- 1,テスト用データを書き込み(Prepare)
- 2,テスト用データを読み込む(ReadTest)
- 3,テスト用データを書き込み(WriteTest)
- 4,残ったゴミを削除
この手順だと、テストデータを2回書き込む必要があると考えられる。
以下の処理順序にすれば、効率よくベンチマークが行えないだろうか?
- 1,テスト用データを書き込み(WriteTest)
- 2,テスト用データを読み込む(ReadTest)
- 3,残ったゴミを削除
この順序だと、書き込みや読み込み処理が1度で済むと考えられる。
当然、何か理由があって、現状の処理順序になっていると考えられるが、それが自身には分からないので、誰かご教示願いたい。