linux:kvm
文書の過去の版を表示しています。
Linux KVM関係
参考資料
ホスト側設定
カーネル
KVMサポート
Virtualization ---> --- Virtualization <*>Kernel-based Virtual Machine (KVM) support <*>KVM for Intel processors support < >KVM for AMD processors support <*>Host kernel accelerator for virtio net (EXPERIMENTAL)
ネットワーク関係(ブリッジ接続用)
Device Drivers ---> Network device support ---> [*] Network core driver support <*> Universal TUN/TAP device driver support
Networking support ---> Networking options ---> <*> 802.1d Ethernet Bridging [*]IGMP/MLD snooping <*> 802.1Q VLAN Support [*]GVRP (GARP VLAN Registration Protocol) support
KSM (複数のVM間でメモリを共有する)
Processor type and features ---> [*] Enable KSM for page merging
プリエンプションの設定(Serverでも普通に動いたが、、、)
Processor type and features ---> Preemption Model (X) Preemptible Kernel (Low-Latency Desktop)
関連パッケージ
- app-emulation/qemu – KVMの基本ユーティリティ
- QEMU_SOFTMMU_TARGETS=“x86_64” – フルモードでエミュレートするアーキテクチャ
- QEMU_USER_TARGETS=“” – ユーザランドモードでエミュレートするアーキテクチャ
- net-misc/bridge-utils – ブリッジネットワーク関連のユーティリティ
- sys-apps/usermode-utilities – tunctlコマンドをインストールするため
ネットワーク設定
物理インターフェイス(eth0)を介して、物理マシンも仮想マシンもブリッジ接続するようにする。
/etc/conf.d/net
#物理インタフェイスのIPアドレス設定を空にする config_eth0="null" bridge_br0="eth0 tap0" brctl_br0="setfd 0 sethello 0 stp off" #rc_need_br0="net.tap0" 古い書式 rc_net_br0_need="net.tap0" # Host config_br0="133.19.206.150/24" routes_br0="default via 133.19.206.254" dns_domain_br0="ps.ritsumei.ac.jp" dns_servers_br0="133.19.222.4 133.19.206.1" dns_search_br0="ritsumei.ac.jp" # Guest config_tap0="null" tuntap_tap0="tap" tunctl_tap0="-u [user] -g [group]" #tapを利用できるユーザ/グループ。 -g kvmでkvmグループに属するユーザがアクセスできるようにする。
ゲストOSの起動
qemu-kvmコマンドを用いてゲストOSを起動する。qemu-kvmへのコマンドラインオプションで、cpuの種類やエミュレートするデバイスなどを指定していく。
仮想ディスクの準備
qemu-img create -f qcow2 -o preallocation=metadata [仮想ディスクイメージ名] [サイズ] qemu-img create -f qcow2 -o preallocation=metadata gentoo-i386.img 10G
Gentoo Live CDなどを使って起動しOSをインストール
qemu-kvm -hda gentoo-i386.img \ -cdrom livecd-i686-installer-2007.0.iso \ -boot d -curses -net nic -net tap,ifname=tap0,script=no,downscript=no
オプションについて
- -cpu core2duo
- 仮想CPUの種類を指定。qemu-vkm -cpu ?で利用可能なCPUリストが得られる。
- -smp 2
- CPUのコア数
- -m 1024
- 割り当てメモリ(MB)
- -k ja
- ホスト側のキーボードレイアウトの指定。
- -hda [イメージファイル名]
- 仮想ディスクイメージファイルの指定。IntelのSATAがエミュレートされる。
- -drive file=[イメージファイル名],if=virtio
- 仮想ディスクのアクセスにvirtio経由を用いる。
- -cdrom
- CD-ROMイメージファイルの指定
- -boot
- 起動ディスクの指定 「d」はCD-ROMから、「c」はHDDから
- -net nic
- 新しくネットワークインタフェースを作成しvlan(デフォルト)に接続する
- -net nic,model=virtio
- ネットワークデバイスとしてvirtioを利用する。指定しなければRealTek8139がエミュレートされる。
- -net tap,ifname=tap0,script=no,downscript=no
- ホストのtap0をvlan(デフォルト)に接続する
- -net tap,ifname=tap0,script=no,downscript=no,vhost=on
- 上記設定に加えて、vhost=onでvhost-netを利用する。ゲストのカーネルでMessage Signaled Interrupts (MSI and MSI-X)、ホストのカーネルでVirtio network driverが必要。
- -curses
- ncursesを利用してコマンドライン上にコンソールをリダイレクトする。ゲストが高解像度の出力をする場合は利用不可。
- -monitor telnet::4444,server,nowait qemu
- モニタに4444番ポートにtelnetでアクセスできるようにする
- -vnc [host]:[ディスプレイno]
- hostからvncでコンソールにアクセスできるようにする。ポートは5900+ディスプレイ番号になる。[host]を省略するとどこからでも接続可能になる。
- -nographic
- グラフィック出力をしない。ビデオカードをエミュレートしない。
- -rtc clock=host,base=localtime
- リアルタイムクロックの設定。UTC扱いになる場合に適切に設定する。
- -daemonize
- コンソールから切り離す。バックグラウンドで起動する。
- 端末がおかしくなる場合があるのでresetコマンドなどでリセットする。
ゲストOSのカーネル設定
基本的には実マシンと同様に設定すればよいが、virtioを利用する場合には追加設定を行う。
準仮想化の設定。仮想マシン上のカーネルオプション。ゲスト側で設定しておくとパフォーマンスが向上する。
[*] Paravirtualized guest support---> --- Paravirtualized guest support [*] Paravirtual steal time accounting [ ] Xen guest support [*] KVM paravirtualized clock [*] KVM Guest support -*- Enable paravirtualization code [*] Paravirtualization layer for spinlocks
virtioを利用しない場合の各種ドライバ
Device Drivers ---> <*> Serial ATA and Parallel ATA drivers ---> <*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support [*] Network device support ---> [*] Ethernet driver support ---> [*] Realtek devices <*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL) <*> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support [*] Use PIO instead of MMIO
virtioを利用する場合(パフォーマンス向上)
Device Drivers ---> [*] Block devices ---> <*> Virtio block driver (EXPERIMENTAL) [*] Network device support ---> -*- Network core driver support <*> Virtio network driver (EXPERIMENTAL) Character devices ---> <*> Virtio console <*> Hardware Random Number Generator Core support <*> VirtIO Random Number Generator support Virtio drivers ---> <*> PCI driver for virtio devices (EXPERIMENTAL) <*> Virtio balloon driver (EXPERIMENTAL) Bus options (PCI etc.) ---> [*] Message Signaled Interrupts (MSI and MSI-X)
virtioを利用する場合、ディスクのデバイスファイルは以下の様になる。
- /dev/vda?
virtioを利用する場合、ホスト側で以下のオプションを有効にする。
Device Drivers ---> [*] Network device support ---> -*- Network core driver support <*> Virtio network driver (EXPERIMENTAL) Virtio drivers ---> <*> PCI driver for virtio devices (EXPERIMENTAL)
virtioを利用する場合の参考サイト
CONFIG_VIRTIO_BLK CONFIG_VIRTIO_NET CONFIG_VIRTIO_CONSOLE CONFIG_HW_RANDOM_VIRTIO CONFIG_VIRTIO CONFIG_VIRTIO_RING CONFIG_VIRTIO_PCI CONFIG_VIRTIO_BALLOON
設定後の起動
virtioを利用する場合の通常運用時の起動オプション例。SSH等でネットワークからアクセスできる状態になっていれば、グラフィックは無効にしてバックグラウンドで起動する。qemuモニタにはtelnetでアクセスできるようにしておく。
/usr/bin/qemu-kvm -name "com2.ps.ritsumei.ac.jp" \ -cpu core2duo \ -smp 2 \ -m 768 \ -k ja \ -drive file=/home/nishide/kvm/KVM-2012_com2.img,if=virtio \ -boot c \ -net nic,model=virtio \ -net tap,ifname=tap0,script=no,downscript=no \ -rtc clock=host,base=localtime \ -monitor telnet::4444,server,nowait \ -nographic \ -daemonize
ゲストのkernelオプション
クロックソースとしてkvmを指定するためブートローダでkernelに起動オプションを指定する。
grubの場合
- /boot/grub/grub.conf
kernel /vmlinuz-3.7.10-gentoo ro root=/dev/vda2 clocksource=kvm-clock rootfstype=ext4
linux/kvm.1365694530.txt.bz2 · 最終更新: 2013/08/09 10:34 (外部編集)