🌀
自宅ProxmoxのノードでGPUを交換したらWindowsVMが起動しなくなった
自宅のProxmoxのGPUパススルーで使っているGPUを交換しようとした時にトラブったので備忘録。 多分GPUを交換したのが原因だと思われる。
結論、これで解決しました。
起こった現象
Proxmoxを3台でクラスターを組んでいるのですが、そのうち一台にGeForce GTX 1650を積んでいます。 今回はこれをRTX3060に置き換える作業をしていました。
GPUの載せ替え自体はすんなりいったのですが、GPUパススルーをしていたWindowsのVMを起動すると、起動時に輪っかが二、三回回った後固まってしました。 ドライバーの再インストールするも同じ状況です。
試しにGPUのPCIをVMから除いてみたところ、復旧の画面が出てきて、正しく起動できました。
やはりGPU周りが怪しそうです。
解決策
色々試したところ、これ通りにしたところ直りました。
お手軽に直るか試す方法として、以下を対象GPUを積んだノードのShellで実行してください。
lspci -k
まずGPUのPCIデバイスIDを調べます。出てきたものの中でGPUのものを見つけます。
僕の場合は0000:06:00.0
と0000:06:00.1
でした(後者はグラボの音のほう)。
さらに以下を実行して、Proxmoxを再起動させずにWindowsのVMを起動し、正しくGPUが認識されていたら成功です(IDは自分のものに置き換えてください)。
echo 1 > /sys/bus/pci/devices/0000\:06\:00.0/remove
echo 1 > /sys/bus/pci/devices/0000\:06\:00.1/remove
echo 1 > /sys/bus/pci/rescan
ただこれだとProxmoxを再起動すると元に戻るので以下を実行しておきます。
mkdir pcifix
nano /root/pcifix/fix_gpu_pass.sh
以下をファイルに書いておく
#!/bin/bash
echo 1 > /sys/bus/pci/devices/0000\:06\:00.0/remove
echo 1 > /sys/bus/pci/devices/0000\:06\:00.1/remove
echo 1 > /sys/bus/pci/rescan
chmod +x /root/pcifix/fix_gpu_pass.sh
crontab -e
以下を追記
@reboot /root/pcifix/fix_gpu_pass.sh
これで起動時に毎回コマンドが実行されるので、直ります。
Discussion