「Proxmox VEのVMのディスクI/Oがなんか悪いんだけど?」などの問い合わせはあるあるなんですが、以下の設定が非推奨のものになっているケースが多いです。
SCSIコントローラの画面
マニュアルにも以下記載もあり。
It is highly recommended to use the VirtIO SCSI or VirtIO Block controller for performance reasons and because they are better maintained.
というわけで、この記事では以下を記載します。
- SCSIコントローラーとかバス/デバイスとは何ぞや?
- なんで非推奨オプションが選択されているのか?
- 結局どのオプションにしておけばいいのか?
SCSIコントローラーとかバス/デバイスとは何ぞや?
SCSIコントローラーとは?
SCSIコントローラーは、ストレージデバイスを管理する仮想ハードウェアコンポーネントです。物理サーバーのSCSIカードやRAIDコントローラーをイメージすると分かりやすいでしょう。
PVEで主に利用されるのは以下。
- VirtIO SCSI Single (virtio-scsi-single): 単一のコントローラーで全てのSCSIデバイスを管理。
- VirtIO SCSI (virtio-scsi-pci): マルチキュー対応で、複数のI/Oキューを使用して並列処理性能を向上。
- LSI 53C895A: レガシーなSCSIコントローラーのエミュレーション。互換性が必要な場合に使用。
- GUI上は規定と記載されているが、現在はVirtIO SCSI Singleが選択されます。
バス/デバイスとは?
バスは、ディスクの接続方式を表します。Proxmox VEで利用可能なのは以下。
- IDE: 最大4台。古い接続方式で、主にCD-ROMや古いOSとの互換用。
- SATA : 最大6台。IDEの後継。
- SCSI : 最大256台。VirtIO SCSIコントローラーと組み合わせて使用。VirtIO Blockと比較すると機能優先。
- VirtIO Block : 最大16台。準仮想化ドライバーを使用した高性能なバス。SCSIと比較すると性能優先。
重要なポイントとして、SCSIコントローラーの設定は、SCSIバスに接続されたディスクにのみ適用されます。
IDE/SATAは仮想化されたIDE/SATAのバスが利用されます。
なんで非推奨オプションが選択されているのか?
移行時の設定が引き継がれているから
以下はインポートウィザードの画面で、SCSIコントローラーはVMwareのものになっています。
これをそのまま使ったり、規定だからとLSIにしたまま、というケース。
ちなみに、これはNICなどでも同様のケースはあるあるです。上記の画面でもまさにそのケースになっています。
互換性のための設定が残っているから
ゲストのWindows OSなどではVirtIO Driverがインストールされていないので、互換性のために一時的に別オプションで起動・ドライバーインストール後に再設定、という手順を踏む必要があります。
ですが、「起動確認、ヨシッ!」でそのまま利用継続されるパターンもあるあるです。
結局どのオプションにしておけばいいのか?
SCSIコントローラー
VirtIO SCSI or VirtIO SCSI single で悩むと思いますが、通常はVirtIO SCSI Single で問題なし。
以下のような環境であれば、マルチキュー対応のVirtIO SCSIの方が優位なケースがあります。
- 非常に多数のディスクを接続している
- 極めて高い並列I/O負荷がかかる
- 複数のCPUコアが常にディスクI/Oを実行している
バス/コントローラー
マニュアルには以下記載があり、VirtIO BlockよりSCSI が推奨されています。
The VirtIO Block controller, often just called VirtIO or virtio-blk, is an older type of paravirtualized controller. It has been superseded by the VirtIO SCSI Controller, in terms of features.
ですが議論はされており、求めるものによって答えは異なります。
※ざっくりいうと、ベンチマークなどを回すとVirtIO Block有利、それ以外の理由ではSCSI有利という感じ。
個人の見解としては、ベンチマークではなく実際のワークロードとしてVirtIO Blockが優位に見えるケースがレアケースでは?と思っているので、SCSIでいいかなと。
まとめ
とりあえずSCSIコントローラーのLSI、バスのIDEなどの互換のための古いものを選択していなければ、誤差かなと思っています。
逆にこの差を気にしだすと検証沼にはまってしまうかもしれません。


