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="192.168.0.15/24" routes_br0="default via 192.168.0.254" dns_domain_br0="example.com" dns_servers_br0="192.168.0.1" dns_search_br0="example.com" # 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を利用してコマンドライン上にコンソールをリダイレクトする。ゲストが高解像度の出力をする場合は利用不可。
- ターミナルソフトのRLoginでSSHしたホスト上でcursesオプションを指定して起動した場合、「ESC」キーと「2」を同時押しでQEMUのコンソールに切り替えられる。場合によっては「ESC」を長押しする必要がある。
- -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.1590982155.txt.bz2 · 最終更新: by admin
