とらりもんHOME  Index  Search  Changes  Login

KVM

  • 2015/05/30 Kenlo Nasahara
  • 2011/01/17 Kentaro Tanaka
  • 2011/01/16 Toshiaki Kumagai
  • 2011/01/12 Kentaro Tanaka

1. インストール環境の確認

KVMのインストールは、Intel VT もしくは AMD-V に対応している必要がある。

確認方法
$ egrep -c '(vmx|svm)' /proc/cpuinfo 

を実行した際、1以上であればOK。

2. kvm のインストール (Ubuntu)

Lucid 10.4 or later (14.04もこれでOK)
$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
※qemu-kvmは、依存関係よりbridge-utilsも一緒にインストールするようである。
Karmic 9.10 or earlier
$ sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils
kvmおよびlibvirtdグループへユーザ追加
$ sudo adduser kentaro kvm
$ sudo adduser `id -un` libvirtd
※id -un ----> username
動作確認
$ sudo virsh -c qemu:///system list
id Name    State
----------------------------

と表示されればOK

3. ネットワーク設定 (bridged 接続)

$ sudo apt-get install qemu
64bit
# setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64
↑これだけでOK。
32bit
# setcap cap_net_admin=ei /usr/bin/qemu
# invoke-rc.d networking stop

# vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual   <---必要であれば staticとし、IPアドレス等を設定する。
auto br0
iface br0 inet static
        address 192.168.0.48
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
# /etc/init.d/networking restart
環境構築の完了

動作確認 IntelVTの場合

lsmod |grep kvm
kvm_intel 35536  0
kvm      123688  1 kvm_intel

AMD-Vの場合

lsmod |grep kvm
kvm_amd   29580  0
kvm      127457  1 kvm_amd

4. OSのインストール

以下の三種類がある。

1. virt-manager (GUI)
2. virt-install (CUI)
3. qemu-kvm

ここでは、3.の方法を使う。(上手く行かなかったので、2. virt-install を使う方が良い。下で説明。)

3. qemu-kvm を使った方法

OSのイメージを準備 (qcow2フォーマット)。imgファイルの作成
$ kvm-img create -f qcow2 test.img 4GM
 (fedora の場合 qemu-kvm)
 (sudo apt-get install qemu-img)
※4GBは、仮想環境で実際に使用するサイズである。
※ただし、qcow2フォーマットは必要に応じて拡張していくという特徴を持つ。
imgファイルの中にOSをインストール

CD-ROMからのインストール

$ kvm -hda test.img -cdrom /dev/cdrom -boot d -m 512
-hda ディスクイメージファイル, -boot d, -m 仮想環境のメモリサイズ
(fedora の場合 qemu-kvm)

ISOファイルからのインストール (VineLinux 5.2)

32bit

$ wget http://ftp.jaist.ac.jp/pub/Linux/Vine/Vine-5.2/IMAGES/Vine52-i386-CD.iso

64bit

$ wget http://ftp.jaist.ac.jp/pub/Linux/Vine/Vine-5.2/IMAGES/Vine52-x86_64-CD.iso

インストール

$ kvm -hda test.img -cdrom Vine52-i386-CD.iso -boot d -m 512
ゲストOSの起動テスト
$ kvm -hda test.img -boot c -m 512

※ctrl + Alt を押しながらクリックすると、仮想Desktopから出られる。

OSをvirshへ登録

xml形式のファイル作成

$ echo "kvm -hda test.img  -boot c -m 512" > kvm.sh
$ virsh domxml-from-native qemu-argv kvm.sh > test.xml
$ vi test.xml
 <domain type='kvm'>
  <name>ryuiki</name>                     # <---- ここを適切な名前に変更する。
  <uuid>9bd37384-3070-b09f-2839-b6a7c7acfa20</uuid>
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='i686'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>kvm</emulator>
    <disk type='file' device='disk'>
      <source file='test.img'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <input type='mouse' bus='ps2'/>
    <graphics type='sdl'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
    </video>
  </devices>
</domain>

xml形式のファイルをvirshへ登録

$ virsh define test.xml
$ sudo ls -l /etc/libvirt/qemu
drwxr-xr-x 3 root root 4096 2010-12-28 11:01 networks
-rw------- 1 root root  798 2011-01-09 17:08 ryuiki.xml   <-----作成される。

起動する

$ virsh start ryuiki

が、なんか上手く行かない。

エラー: ドメイン ryuiki の起動に失敗しました
エラー: could not remove profile for 'libvirt-9affe72c-8839-6cdb-688b-55758f5febdd'

libvirt のバグか??

とりあえず 3. qemu-kvm による方法を諦めてみる。

2. virt-install (CUI) を使った方法 (4. OSのインストールまで戻る)

  • インストールCDやDVDのイメージファイルをどっかのディレクトリに置いておく。
 $ sudo apt-get install virt-manager virt-viewer

方法その1 (オプションで指定)

 $ sudo virt-install --connect qemu:///system --name ryuiki --ram 512 \
   --disk path=/var/lib/libvirt/images/ryuiki.img,size=4 \
   --network=bridge:br0 \
   --vnc \
   --cdrom Vine52-i386-CD.iso

方法その2 (対話形式)

 $ virt-install --prompt
 ※その1と同じ情報を入力すればよい。
↑これが簡単でよい。Ubuntu 14.04にDebian Wheezyを一発でインストールできた(2015/05/30 奈佐原)

5. 仮想マシンの管理

一般的な操作はGUIが楽

$ virt-manager

仮想マシンの管理は、コマンドライン上で管理が出来る virshを用いて行う。(他にもある)

virshの起動

$ virsh

シャットダウン

virsh # shutdown ryuiki
ドメイン ryuiki をシャットダウンしています

状態の表示 (--allをつけるとシャットダウンのドメインも表示される。)

virsh # list --all
Id 名前               状態
----------------------------------
 - ryuiki               シャットオフ

ドメインの起動

virsh # start ryuiki
ドメイン ryuiki が起動されました

状態の表示

virsh # list 
Id 名前               状態
----------------------------------
 9 ryuiki               実行中

ドメイン情報の表示

virsh # dominfo ryuiki
Id:             9
名前:         ryuiki
UUID:           9d794109-5d68-9b3b-9eb5-006d7ecfad50
OS タイプ:   hvm 
状態:         実行中
CPU:            1
CPU 時間:     19.9s 
最大メモリー: 524288 kB
使用メモリー: 524288 kB
自動起動:   無効にする
セキュリティモデル: apparmor
セキュリティ DOI: 
セキュリティラベル: libvirt-9d794109-5d68-9b3b-9eb5-006d7ecfad50 (enforcing)

ドメインの強制終了 (virt-installによるインストール後の初回のみ、このコマンドでないと終了できない。)

virsh # destroy ryuiki
ドメイン ryuiki は強制停止されました

6. 仮想マシンの削除

設定ファイルの削除 (拡張子xml)
$ sudo virsh undefine ryuiki  <----設定ファイルは削除されるが、imageファイルは残る。
$ ls -l /var/lib/libvirt/images
合計 2190764
-rw------- 1 root root 4294967296 2011-01-10 14:58 ryuiki.img <----imageは残っている。
imageの削除 (拡張子img)

削除するimageが存在するストレージプールの確認。

$ virsh pool-list
名前               状態     自動起動
-----------------------------------------
default              動作中  yes    

削除するimageを確認。

$ virsh vol-list default
名前               パス                                  
-----------------------------------------
ryuiki.img           /var/lib/libvirt/images/ryuiki.img
 

今回削除するのは、defaultに属するryuikiボリュームであることがわかる。

$ virsh vol-delete /var/lib/libvirt/images/ryuiki.img

これで削除完了

7. Virshで端末起動

$ sudo virsh console ryuiki3

ここでのryuiki3はドメイン名.

8. 追記

上記 7 において、

/dev/pts/0 のパーミッションがないと、言われた場合。 

$ vncviewer 
  127.0.0.1:0
  paswd
$ su
# vi /etc/inittab
「con:2345:respawn:/sbin/agetty 9600 ttyS0」を追記
# init q
# vi /etc/securetty
ttyS0を追記。
# exit 
$ exit <---- ホストOSへ戻る。
$ sudo chown ユーザ名 /dev/pts
$ virsh start ryuiki2

virt installの際に、ゲストOSをGUIをインストールした場合 (Kumagai)

  • GUIでインストールしてしまうと,virshでコンソールが立ち上がらない.

virshで端末を使うには,Vine LinuxのインストールでCUIを選択しないといけない

原因は不明.

ゲストOS(Vine Linux)上での設定
  • CUIでインストールしたら,以下の設定を行う.
$ vi /etc/inittab

で最後に「con:2345:respawn:/sbin/agetty 9600 ttyS0」を追加

$ init q
$ vi /etc/securetty

最後に「ttyS0」を追加

ホストOS(Ubuntu)から

$ sudo virsh console ドメイン名

を実行.エンターを数回押せばログイン画面になる.

Ubuntu 14.04の上にDebian Wheezyをインストール

egrep -c '(vmx|svm)' /proc/cpuinfo 
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
sudo adduser nishida kvm
sudo adduser nishida libvirtd
sudo virsh -c qemu:///system list
sudo apt-get install qemu
sudo setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64
sudo invoke-rc.d networking stop
lsmod |grep kvm
sudo apt-get install virt-manager virt-viewer
mv Dropbox/debian-7.8.0-amd64-netinst.iso ./
sudo virt-install --prompt
sudo virt-manager 
Last modified:2015/05/30 18:46:14
Keyword(s):
References:[とらりもんHOME]