清水理史の「イニシャルB」

GPUパススルーも簡単にできる仮想化プラットフォーム「Proxmox VE」

 自宅に古いPCが余っているなら、オープンソースの仮想化プラットフォーム「Proxmox VE(Virtual Environment)」で自宅サーバーを構築してみてはどうだろうか?

 ほぼGUI設定のみで、GPUパススルーも設定可能なので、リモートデスクトップなどで接続できるクラウドゲーミング的な仮想マシンも簡単に構築できる。今回は、Proxmox VEのインストールと、GPUパススルーの設定方法を解説する。

オープンソースの仮想化プラットフォーム「Proxmox VE」

ハードウェアの対応が幅広く、1〜2世代前のPCでも使いやすい

 Proxmox VEと同様の環境としては、VMware ESXiが有名だが、Proxmox VEはDebianをベースに管理用のウェブインターフェースを搭載した環境となっており、Linuxカーネルをハイパーバイザーとして利用する「KVM」による仮想マシンに加えて、同一カーネル上で独立したLinux環境を構築できる「LXC」によるコンテナを管理できるようになっている。

 ベースがDebianなので、後述するグラフィックカードやUSB LANアダプターなど、ハードウェアの対応が幅広い。加えて、オープンソース版であってもクラスタ構成が可能になっている上、設定や仮想マシンのコンソール操作などもウェブブラウザー上で可能になっており、多機能かつ使いやすいのが特徴の製品だ。

 今回、筆者は、以下の構成のPCが手元に余っていたため、Proxmox VEをインストールした。自宅に1~2世代古いPCが余っている場合は、Proxmox VEによって、自宅クラウド環境を構築できるのでお勧めだ。

項目型番・内容
CPUIntel Core i3 10100
MBMSI H510I PRO WIFI
RAM64GB
SSD1TB NVMe
GPUGeForce GTX 1650
LANオンボード2.5Gbps

 特にGPUが搭載されているPCの場合、Proxmox VEでGPUパススルーの設定をすることによって、仮想マシンからホスト上のGPUを利用できる。これにより、GPUによる計算やゲームなどの用途に仮想マシンを利用することもできる。

Proxmox VEをインストールする

 Proxmox VEのインストールは簡単だ。ダウンロードサイトから「Proxmox Virtual Environment」のISOをダウンロードし、USBメモリなどに書き込んでから、PCでブートしてインストールすればいい。

ISOをダウンロードしてUSBメモリに書き込んでおき、インストールする

 注意点としては、あらかじめPCのUEFIで仮想化関連の機能を有効化しておくことだ。特に、後述するGPUパススルーを利用する場合は、「Intel VT-d」は必ず有効化しておく必要がある。

Intel VT-d(上の画面上では[Intel VT-Dテクノロジ])を有効化しておく

 インストール時の設定は、インストール先のストレージの選択、キーボードの設定、管理者アカウントのパスワード、ネットワークの設定(IPアドレスなど)と、最低限になっている。基本的には画面の指示に従って操作を進めればよく、簡単だ。

 インストールが完了すると、コンソールにアクセス用のURLが表示されるので、ネットワーク内のPCからウェブブラウザーでログインすれば、アクセスすれば管理画面を表示できる。ログイン時に「Japanese」を選択すれば日本語で利用可能だ。

インストール時の設定は最低限なので簡単
管理画面にアクセスできる。ことあるごとに、有効なサブスクリプションがないと警告が表示されるが、サブスクリプションなしでも利用可能だ

 なお、今回は、GPUパススルーに焦点を当てて解説するので、サブスクリプションなしの場合のアップデート方法などは、こちらを参照してほしい。記述はコマンドによる設定だが、画面のようにGUIでも設定できる。

リポジトリのGUI設定画面。基本的に、Enterpriseのリポジトリを外し、[pve-no-subscripshon]のリポジトリを追加すればいい

GPUパススルーを設定する

 GPUパススルーは、どうやらProxmox VEのバージョンによって、設定方法が異なっていたり、安定性に課題があったりするようだが、筆者が今回試した環境(Proxmox VEバージョンは7.2-11)では、以下の設定のみで安定して利用できている。

 具体的には、以下のように、ウェブブラウザーから管理画面にアクセスし、ノードを選択後、[シェル]ボタンをクリックしてコンソールを起動し、「nano /etc/defaut/grub」などで設定ファイルを開き、「GRUB_CMDLINE_LINUX_DEFAUTL」に、「intel_iommu=on」を追加すればいい。

 ネット上の情報を見ると、ほかにもパラメーターを指定するケースもあるようだが、筆者の環境では、これだけで稼働した。

VD-dを有効化する

 なお、GPUパススルーを利用すると、PCI Expressのグラフィックカードが仮想マシンに占有されるため、当然のことながら、ホスト側の画面がグラフィックカードから出力されなくなる。サーバーとして利用するなら、出力されなくても問題ないが、ネットワークトラブルなどで管理画面にアクセスできなくなる可能性もある。

 今回の構成のようにCPU内蔵のグラフィックス機能が使える場合は、以下のように、UEFIでCPU側(IGD)を標準出力に設定し、ホストはマザーボードのHDMIなどから画面表示できるようにしておくことをお勧めする。

ホストでIGDを使えるようにしておく

GPUパススルー設定で仮想マシンを作成する

 ここまで準備ができたら、あとは仮想マシンを作成するだけだ。Windows 11のインストール用ISOをホストにあらかじめアップロードしておき、以下のような設定で仮想マシンを作成する。

全般

 全般設定は特別な設定は必要ない。仮想マシンの名前だけ設定して次に進む。

ホスト名のみ設定

OS

 OSでは、インストール用のISOを指定する。今回は、Windows 11 22H2を利用。また、種別で[Microsoft Windows]を指定しておく。

インストール用ISOを指定

システム

 システムは、基本的なハードウェアの構成を設定する。Windows 11を利用するので、UEFIとTPMは必須となる。それぞれオンにし、ファームを設置するストレージを指定しておく(VMと同じ場所でいい)。

[OVMF(UEFI)]と[TPM]を必ずオンにする

ディスク

 ディスクは、[SATA]に変更し、好みのサイズを指定しておく。Windowsの場合、32GBだと容量が足りなくなるので、64GB前後がお勧め。

SATAでストレージを追加しておく

CPU

 CPUは、ホストのCPUリソースに応じて割り当てる。今回は、4コアを割り当てた。また、[種別]で[host]を選択し、ホストのCPUの型番がそのまま仮想マシンに認識されるように設定する。

[種別]で[host]を選択

メモリ

 メモリもホストの搭載量に応じて設定する。今回は8GBを設定。[Balooning Device]がオンだとメモリ容量が可変となるが、今回はオフで利用している。

Balooning Deviceはオフ

ネットワーク

 ネットワークは標準設定のままとした。

そのまま[次へ]で、作成しておく

いよいよPCIデバイスをパススルーする

 ひとまず仮想マシンを作成し終えたら、仮想マシンの「ハードウェア」でPCIパススルーの設定をする。以下のような流れで、PCI Expressに接続されているグラフィックカードを仮想マシンに割り当てる。

PCIデバイス追加

 仮想マシンの設定画面で[ハードウェア]を開き、[追加]から[PCIデバイス]を選択する。

PCIデバイスを追加

グラフィックカードを選択

 ホストに接続されているPCIデバイスの一覧が表示されるので、グラフィックカードを選択する。今回は[GeForce GTX 1650]。

グラフィックカードを選択

PCIデバイスの設定

 最後にPCIデバイスの設定をする。[プライマリGPU]以外全てをオンにする。[プライマリGPU]をオンにすると、仮想マシンの出力が標準でグラフィックカード経由になり、Proxmox VE管理画面のコンソールで仮想マシンの画面を表示できなくなる。

 オフにしておくと、仮想マシンは画面出力に標準の仮想アダプター(Microsoft基本ディスプレイアダプター)を利用し、ゲームなどGPU処理にパススルーしたグラフィックカードを利用できる。このため、Proxmox VEのコンソールから仮想マシンの画面を操作できて都合がいい。最終的にリモートデスクトップをオンにできれば問題ないので、HDMIで出力してリモートデスクトップをオンにしてもいい。

プライマリGPUのみオフにしておく

 これで、仮想マシンを起動し、Windowsをインストールすればいい。GeForceのドライバーは、Windows Update経由でインストールすることもできるが、最新版が必要ならNVIDIAからダウンロードしてインストールすることもできる。最後にリモートデスクトップをオンにしておく。

PCIパススルーしたホストのグラフィックカードが仮想マシンに認識されている。ドライバーをインストールすれば利用可能
普段の利用のために忘れずにリモートデスクトップをオンにしておく

性能の評価は「ソコソコ」

 このように設定することで、手元のPCからリモートデスクトップで仮想マシンにアクセスし、グラフィックカードを利用した処理が可能になる。

 実際にどれくらいの性能かというと、これはグラフィックカード次第だ。今回利用したGeForce 1650は、さほど性能が高くはないため、以下のようにFF15ベンチマークで5000前後、「やや快適」という評価になった。ネット上で公開されているGeForce GTX1650のスコアと同等だ。

リモートデスクトップで接続。GPU-Zを実行した様子
FF15ベンチを実行。パススルーなので、仮想マシンとはいえスコアは実機と同等

 ただし、普段の操作では、リモートデスクトップでもさほどラグを感じることはないが、ゲームによってはラグが気になる可能性もある。実際の快適さは、ゲームの種類によって異なると言えそうだ。

 なお、GPUパススルー自体は、複数の仮想マシンに設定することも可能だが、同時に起動できるのは1台のみとなる。どれか1台、パススルー設定した仮想マシンが起動していると、ほかの仮想マシンは起動に失敗するので注意が必要だ。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できるWindows 11」ほか多数の著書がある。