録画サーバリプレース

Core i3 2100Tを譲ってもらったので録画サーバをatomからsandy bridgeに更改してみました。
この際debianもlennyからsqueezeに更新しました。
debianに入っているxenのバージョンが上がってdomain-0でもpt2のドライバを認識しなくなったためkvmに乗り換えました。
ちなみにxenではハイパーバイザ用?にドライバをコンパイルすれば使えるみたいです。
ちょこっと情報収集してみましたがなかなか見つからなく面倒くさくなってしまい挫折しました。。。
以降はkvmインストールの覚え書きです。

インストール準備

intel VTを有効にします。biosの設定、grubの起動オプションにintel_iommu=onを追加(いらないかも)

$ sudo vi /etc/default/grub
:
#GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX="intel_iommu=on"
:

(必要なら再起動して)確認

#VTが有効(vmxが存在)になっていること
$ cat /proc/cpuinfo | grep vmx
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt xsave avx lahf_lm arat tpr_shadow vnmi flexpriority ept vpid

インストール

kvm関連(kvm、ブリッジツール、コマンドライン管理ツール、VMインストールツール)をインストールします。

$ sudo aptitude install kvm bridge-utils libvirt-bin virtinst

kvmグループに実行ユーザ追加

kvm,libvirtグループに実行ユーザを追加しログインし直します。

$ sudo adduser 実行ユーザ kvm
$ sudo adduser 実行ユーザ libvirt
$ logout

ブリッジ接続用インタフェース作成

VMはNAT接続ではなくブリッジ接続にしたかったのでネットワークインタフェースを変更しました。
ブリッジとしてbr0を作成しました

$ sudo vi /etc/network/interfaces
:
allow-hotplug eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.250
network 192.168.0.0
netmask 255.255.255.0
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
:

$ sudo /etc/init.d/network restart

ゲストOSのインストール

  • 仮想ディスクイメージ(qcow2を使用)の準備します
$ sudo qemu-image create -f qcow2 /path/to/imagename サイズG

CDブート(debianネットワークインストールISO)でのインストールオプションです。細かいところはman virt-installで確認してください。

$ vi virtinst.sh

#!/bin/bash

virt-install \
--connect qemu:///system \
--hvm \
--virt-type=kvm \
--name=squeeze \
--vcpus=2 \
--ram=1024 \
--os-type=linux \
--os-variant=virtio26 \
--cdrom=./mini.iso \
--disk path=disk.img,format=qcow2,size=40 \
--network=bridge:br0 --mac=54:52:00:12:34:56 \
--accelerate \
--keymap=ja \
--extra-args='console=tty0 console=ttyS0,115200n8'
  • ゲストインストール

といきたいところですが2点ほど問題があったので対応します。
1.インストール時の画面周り
本来ならVNCで飛ばすのが正攻法らしいのですが今回はXをクライアントに飛ばしてみました。
クライアントはwindowsを使用していますのでXWindowソフト(Xming)をインストールし起動。
インストールを実行するコンソール(putty)はsshX11フォワーディングを有効にして接続しました。
2.仮想ディスクイメージ(qcow2フォーマット)でインストール中のディスクサイズ不正
qemu-imageで出力するのがrawの場合は問題ないらしいのですがqcow2の場合仮想OSの方でディスクサイズが作成したときのサイズに認識してくれませんでした。
以下の方法で無理矢理インストールしました。

    • VM設定ファイルを自動生成させる
$ sudo ./virtinst.sh
Xでインストール画面が立ち上がったら終了
    • 生成されたVM設定ファイルを編集する
$ sudo virsh edit squeeze
#ブートデバイスにcdromを追加します
  <os>
    :
    <boot dev='cdrom'/>
    <boot dev='hd'/>
  </os>
#仮想ディスクのdriver設定をrawからqcow2に変更します
 <driver name='qemu' type='raw'/>
 ↓
 <driver name='qemu' type='qcow2'/>

#CD-ROMにインストール用isoを読み込ませた状態にします
 <disk type='block' device='cdrom'>
   <driver name='qemu' type='raw'/>
   <target dev='hdc' bus='ide'/>
   <readonly/>
   <address type='drive' controller='0' bus='1' unit='0'/>
 </disk>
↓
 <disk type='file' device='cdrom'>
   <driver name='qemu' type='raw'/>
   <source file='/path/to/mini.iso'/>
   <target dev='hdc' bus='ide'/>
   <readonly/>
   <address type='drive' controller='0' bus='1' unit='0'/>
 </disk>
    • VM設定を有効にします
$ sudo virsh define /etc/libvirt/qemu/sqeeze.xml
    • インストールを再開します(コマンドはうろ覚えです)
$ sudo virsh -c qemu:///system start squeeze
か
$ sudo virsh -c qemu:///system console squeeze


これでVMが動くようになりました。
kvmPCIパススルーができるらしいので暇ができたらPT2をVM上で認識させてみたいと思います。