オフィシャルサイト: Qumranet - Kernel Based Virtual Machine

KVM

移転しました

独自ドメインサイトへ移行しました。5秒後に

https://straypenguin.winfield-net.com/

へジャンプします。



KVM = Kernel-based Virtual Machine  Linux QEMU OSXen Xen  Nemesis OSOSKVM  Linux OSXen  ()  () KVM OS Xen  QEMU KVM  QEMU (qemu-kvm)  /dev/kvm IBM  `Discover the Linux Kernel Virtual Machine' () / Linux () 

virtio KVM  NIC  RTL8139  IDE OSOS使virtio OS virtio NIC  Xen   (Para-virtualized Driver) 

OS

Table of Contents

ホストOSの準備


OS


KVM  CPU  (x86)  CPU  x86BIOS  2GB 4GB  


KVM + QEMU  Xen KVM OKKVM  Linux  2.6.20 RedHat 2.6.18-x KVM Fedora Core 9  2.6.20 RHEL 5/CentOS 5  KVM  KVM 

 virtio Virtio OS 2.6.25  KVM Ver.60 RHEL/CentOS  5.4 (kernel-2.6.18-164) Fedora 9 virtio Fedora 10  kernel-2.6.27 

OS3264KVM  QEMU  PC (qemu-system-x86_64) 32643264KVM  QEMU (qemu-kvm) 646464 4GB 32 PAE x86 CPU 64OS64

OS  Xen 


Xen 3LVM  LV

/var/ /var 

使

LVM  LV PV PV VolumeGroup  (LV ) 


OS使


 yum 使
必須パッケージ
パッケージ コメント
kvm kvm カーネルモジュールと、kvm 用にコンパイルされた qemu (/usr/libexec/qemu-kvm) など。
virt-manager ゲストOS のインストールや定義、削除、起動/停止などを行う GUI アプリケーション。yum でインストールすれば、libvirt, xen-libs, bridge-utils, qemu-img なども引きずられて入る。ディストリビューションによっては、kvm には必須でない qemu パッケージ (/usr/bin/qemu-system-x86_64 等) もインストールされる。
xen-runtime Fedora Core にはあるが RHEL/CentOS 5.x には存在しない。シェルスクリプトなど、Xen を動かす時に使われるツール群で、Xen カーネルや xend デーモンは含まれない、いわば xen パッケージのミニセット。仮想ネットワーク (ブリッジ) をパートタイム的に使いたい場合には、/etc/xen/scripts/ 下のスクリプト群があると便利なのでインストールする。ブリッジを恒久的に作っておく方式なら不要だ。こうしたスクリプトは RHEL/CentOS 5 では xen 本体パッケージにしか含まれていない。
オプショナルなパッケージ
パッケージ コメント
tunctl 後で出てくる TAP ネットワークデバイスを操作するユーティリティコマンド。実際には QEMU が内部的に面倒を見てくれるのでどうしても要るというわけではないが、研究のために入れておくとよい。
virtio-win RHEL 5.4 にのみある。Windows ゲストのための virtio ドライバ集。2010/1/31 時点では、Windows Server 2003 と 2008 (ともに i386 及び amd64) のブロック(ディスク)ドライバとネットワークドライバが含まれている。Windows Server 2008 64ビット用のドライバはちゃんと署名されている。詳しくは後述
virtio Windowsドライバ ホストが CentOS や Fedora Core の場合は、KVM のサイトから最新の virtio ドライバを入手すべし。2010/1/31 現在、ブロックドライバは Vista/7/2003/2008 の x86 及び amd64 と、XP の x86。ネットワークドライバは Vista/7/XP/2003/2008 の x86 及び amd64 と、Windows 2000 用が含まれている。ただし、いずれのドライバも署名はされていない。これらと同じドライバを ISO イメージにまとめたものを、"/contrib/famzah" というサイトが提供してくれている。詳しくは後述

 kvm  libvirt kvm  libvirtd OS



SELinux 

iptables Fedora Core 9  iptables  system-config-firewall System -> Administration -> Firewall     eth+  Trusted Interface  libvirtd system-config-firewall 使 `service libvirtd restart' 


 Xen QEMU/KVM OSQEMU/KVM  TAP  (TAP TUN/TAP - Wikipedia, the free encyclopedia  kernel.orgtuntap.txt )

libvirt libvirtd OSXen 

OS

#1  libvirtd  virbr0  NAT  -> OS

#2 OS eth0 #2 OS peth0 eth0 xen-runtime  network-bridge  ()  (ifcfg-*) 使 

 RedHat OS LAN Xen XenXen libvirtd  virbrX  Xen 


 eth0  sysconfig/network-scripts/ifcfg-* 使 () 


RHEL/Centos 5.4  Fedora Core 10  initscripts  ifcfg-*  (RHEL/CeontOS 5.3  FC9 ) br0  eth0 /etc/sysconfig/network-scripts/  ifcfg-br0 ifcfg-eth0  

ifcfg-br0
# Bridge interface 0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.5
NETMASK=255.255.255.0
DELAY=0

ifcfg-eth0
DEVICE=eth0
HWADDR=00:1f:e2:0c:78:1b  <--もともと書いてあったなら残したまま
ONBOOT=yes
BOOTPROTO=none
#IPADDR=192.168.0.5       <--コメントアウトするか削除
#NETMASK=255.255.255.0    <--コメントアウトするか削除
BRIDGE=br0                <--接続するブリッジ

 `service network restart'  --  eth0  br0 eth0  br0  

使


 eth0  eth0 RHEL 5.4 Fedora Core 9/10 

xen-runtime  /etc/xen/scripts/network-bridge  Xen ( "Fedora Core 8 " )RHEL/CentOS 5.x  xen  xen  kernel-xen  `rpm -e --nodeps' xend  xendomains RHEL/CentOS 5.x  network-bridge  Xen  vethX 

network-bridge Fedora Core 8 network-bridge RHEL/CentOS 5.x network-bridge 


(一) tmpbridge 

(二) eth0 

(三)eth0  MACIP tmpbridge 

(四)eth0  peth0 

(五)tmpbridge  eth0 

(六)peth0  eth0 

(七)


 Xen  ( "Xen "  "LANL3(NAT)" ) 使




network-bridge-util  /etc/xen/scripts/  (root:root 644)

virnetinfo.py  PATH  (/usr/local/bin/ )  (root:root 755) 

network-bridge-custom  /etc/xen/scripts/ 調 (root:root 755)


network-bridge-custom  "LANL3(NAT)" 
#!/bin/bash
# network-bridge-custom 0.3.0
# Use with network-bridge-util > 0.3.0
 
dir=$(dirname "$0")

# Resolv symbolic link for $dir
if [ -L $0 ]; then
    link=$(ls -l $0 |cut -d' ' -f10)
    if grep -q / <<<$link ; then
        linkdir=${link%/*}
        if [ -z "$linkdir" ]; then
            dir=
        elif [ x${linkdir%%/*} = x ]; then
            dir=$linkdir
        else
            dir=${dir}/$linkdir
        fi
    fi
fi

. ${dir}/network-bridge-util
 
## Auto-detect VirNet variables.
set_virnet_vars

function do_bridge () {
    ## This is the very heart of network-bridge script.
    ${dir}/network-bridge "$@" bridge=eth0 netdev=eth0 antispoof=no
   #${dir}/network-bridge "$@" bridge=eth1 netdev=eth1 antispoof=no
}

case "$1" in
  status)
    do_bridge "$@"
    exit
    ;;
  *)
    ;;
esac

## Iptables optimization.
optimize_ipt
 
## This is the very heart of network-bridge script.
do_bridge "$@"

## Disable kernel IP forwarding if there is no NAT bridges.
disable_ipfwd

## Additional routing configuration.
set_route /etc/xen/route.conf
#sysctl -w net.ipv4.conf.eth1.rp_filter=1 &>/dev/null

Xen  xend 
root# /etc/xen/scripts/network-bridge-custom start

 tapX  QEMU/KVM 
peth0  eth0 
root# /etc/xen/scripts/network-bridge-custom stop


root# /etc/xen/scripts/network-bridge-custom status



"/etc/xen/scripts/network-bridge..." ... network-bridge-custom PATH  ( /usr/local/bin) 

 network-bridge-custom OS SysV Init 


bridgectl


 /etc/init.d/ `chkconfig --add bridgectl' runnetwork-bridge-custom  libvirtd  libvirtd 9703 bridgectl 9802 libvirtd 調 virtdomains (/) bridgectl  virtdomains