Proxmox VE 3.1でパススルーしてみた
Pocket

※この記事は内容がグダってたので2013/12/07に全面的に書き換えています。過去の記事は気にするな!

Proxmoxにおいて、パススルー機能を試してみた。KVMにおいてもパススルー機能は存在しているため、当然Proxmoxにおいても実施可能となる。

検証に使用する基板は、毎度おなじみPT2を使用する。
(他にいい基板がなかったからだけど)

今回はパススルーのみ検証。実際に使えるかはまた今度検証してみる。

というわけで、仮想マシン作成完了からの開始。
OSはLinuxでばかりやっていたので、Windowsでも試してみたいと思いWindows 7で検証する。

で、最大の前提としてCPU及びマザーボードが『Intel VT-d』もしくは『AMD-Vi』に対応していること(IO MMUの仮想化)が必須となる。『Intel VT-x』とは全く別の機能となるため、対応しているCPUでないといけない点に注意。

Wikiを見てみると、Proxmoxでパススルーをするにはまずブートローダーの設定を変更してあげる必要があるようだ。つまり再起動が必要。

最初から有効にしといてくれよ!

という心の叫びは置いといて、早速設定を行っていく。

Sponsored Links

まずは「/etc/default/grub」でGrubの設定を書き換える。

 

画面でハイライトになっているように、9行目の値を以下のように書き換えていく。

Before
 GRUB_CMDLINE_LINUX_DEFAULT=”quiet

After
 GRUB_CMDLINE_LINUX_DEFAULT=”quiet intel_iommu=on

上記内容を実行後、以下のコマンドを実行してGrubに変更を適用し、再起動を行う。

 

update-grub

再起動後、変更が適用されているかを確認する。

 

root@proxmox:~# dmesg | grep -e DMAR -e IOMMU
Intel-IOMMU: enabled

で、Proxmox VE 3.1ではまだパススルーはWEBコンソール上から行えないようだ。
以下の設定ファイルに記述してパススルーを行わせる。

 /etc/pve/nodes/proxmox/qemu-server/100.conf

100のとこは仮想マシンIDになるので、自分の環境に応じて設定する。
で、記述する内容なのだがPCI識別番号を記述してあげる必要があるらしい。

lspciコマンドで認識しているハードウェアを確認する。
ただ、普通にコマンドを実行すると目的のPT2がわかりづらいため、別途抽出することにした。

 

root@proxmox:~# lspci | grep Multimedia
03:00.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)

一番左の「03:00.0」が識別番号になる。
PCI識別番号がわかったので、テキストエディタより設定ファイルを更新する。

 

更新前
 bootdisk: sata0
 cores: 2
 ide2: local:iso/Microsoft_Windows_7_RTM_x64.iso,media=cdrom
 memory: 1024
 name: TestWin7
 net0: e1000=4A:8C:13:BC:12:4B,bridge=vmbr0
 ostype: win7
 sata0: local:100/vm-100-disk-1.qcow2,format=qcow2,size=100G
 sockets: 1
 vga: std

 

 

更新後
 bootdisk: sata0
 cores: 2
 hostpci0: 03:00.0
 ide2: local:iso/Microsoft_Windows_7_RTM_x64.iso,media=cdrom
 memory: 1024
 name: TestWin7
 net0: e1000=4A:8C:13:BC:12:4B,bridge=vmbr0
 ostype: win7
 sata0: local:100/vm-100-disk-1.qcow2,format=qcow2,size=100G
 sockets: 1
 vga: std

で、仮想マシンを起動させる。

この時、前述のIntel VT-d等に対応していない場合は、以下のようなエラーが表示され仮想マシンが起動しなくなるので注意。

 

 TASK ERROR: can’t reset pci device ’03:00.0′

パススルーできているようであれば、不明なデバイスとして存在しているはずだけど…

 

存在を確認できた。

次に、PT2のドライバをインストールして、デバイスを認識していることを確認した。

 

これで、ProxmoxでもPT2をパススルーすることが可能であることが確認された。
Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: ProxmoxVE4でPCIパススルーを行ってみた | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。