KVM使い方(Ubuntu 16.04)

virt-installVMの作成、virshでVMの管理ができる。

KVMのインストール
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virtinst
ブリッジネットワークデバイスの作成と物理ネットワークデバイスとの関連付け

ホストと同じネットワークの固定IPをふるためにはブリッジを作る必要があるらしい。

auto eth0
iface eth0 inet manual

iface br0 inet static
address 192.168.1.xxx
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers xxx.xxx.xxx.xxx
bridge_ports eth0
bridge_stp off
auto br0

ネットワークの再起動後、仮想ブリッジの確認

% brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.6805ca2f9aab	no		eth0
virbr0		8000.5254006ccac0	yes		virbr0-nic

/etc/sysctl.confで

net.ipv4.ip_forward=1

として、再起動(再起動したほうがいいと思う)。Ubuntu 16.04 desktopではこれを設定しないとホスト・ゲスト間でしたコミュニケーションができない。同serverではこれは設定していなくても動いている。謎。

VM作成

vncで接続できる状態でのインストール。Ubuntu16.04サーバのインストールCDイメージ(ubuntu-16.04.5-server-amd64.iso)がカレントディレクトリにあることを想定。

% sudo virt-install --name vmname --memory 4096 \
--disk size=50 --vcpus 1 --os-type linux \
--os-variant ubuntu16.04 --network bridge=br0 --noautoconsole \
--cdrom ubuntu-16.04.5-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,password=vnc

size=30は30GB。環境設定の書かれたファイルは

/etc/libvirt/qemu/vmname.xml

に作成される。

Ubuntuのインストール

UbuntuのインストールはVNCを設定したならVNC経由で行える。KVMVNCの使い方は下の通り。

KVMVNC

一つ目のVMvncのデフォルトポートは5900。パスワードは次のコマンドで確認できる。

% virsh edit vmname

以下のような感じでpasswdが設定されている。

<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='hoge'/>

二つ目以降順次5901, 5902となっていく模様。5900 + xのxは次のコマンドで確認できる。

% virsh vncdisplay vmname
:1

の場合、5901がポート番号。MacOSの場合、Finder->Go->Connect to serverから

vnc://hostmachine:5901

のようにして接続できる。

KVMメモリサイズ変更

% virsh edit mydata

VirshコマンドによるKVMゲストOSの管理

仮想マシンがものすごく遅い。

virsh edit vmnameで一番最初の行がこうなっているか確認。

<domain type='kvm'>

ものすごく遅い仮想マシンではこうなっていた。

<domain type='qemu'>

kvmに書き換えて仮想マシンを起動しようとすると、Check that virtualization is enabled in the host BIOS、というメッセージがでた。そういうことなのか。

VirtualboxからKVMへの移行

参考http://qiita.com/BexPolar/items/5d9189573e6900be0069

qemu-img convert -O raw vmname.vdi vmname.img
% sudo virt-install \
--name vmname \ 
--ram 1024 \
--disk path=/var/lib/libvirt/images/vmname.img,bus=sata,format=raw \
--vcpus 1 \
--os-type linux \
--os-variant ubuntutrusty \
--network bridge=br0 \
--noautoconsole \
--graphics vnc,listen=0.0.0.0,password=vnc \
--import