* kvmを使って仮想化する際に、PCIパススルーを使ってみる * [#na534d3f]

マザーボードにnicが2つあったので、仮想ゲスト専用にnicを使わせる為にPCIパススルーを利用してみた。
HOST OS:openSUSE13.2
Guest OS:debian7(wheezy)


** xml抜粋 ** [#ja5d6ae6]
 <hostdev mode='subsystem' type='pci' managed='yes'>
   <driver name='kvm' />  これが引っかかる原因となる
   <source>
   これはホストが認識するNICのPCIアドレス
    <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
   </source>
    これはゲストが認識するNICのPCIアドレス
   <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
 </hostdev>


ここでハマりやすいのが、PCIパススルーに使うドライバ指定。
ドライバには、新しいvfioと古めのkvmのに種類が用意されているが、
opensuse13.2ホストにおいて、無指定の場合にデフォルトで選択されるのはvfioの方になる。
そしてvfioの必須条件が、kernel-3.6以上という縛りが存在する。

ホストOSであるopensuse13.2のカーネルは、3.16.7。
ゲストOSのdebianは、3.2.0。

ということなので、ホストでのドライバが無指定の場合、デフォルトでvfioが選択されることになるが、
ゲストの方は未対応なので、何百回起動してもNICが見えないループに陥る。
ここで、

 <driver name='kvm' />

の1行を加えるだけで嘘のように認識してくれるので、ドライバー指定を端折ってはならない。


RIGHT:更新日 2015-04-12(ci5kym)
#hr
[[仮想化]]