KVMをインストールするというよりも、KVMが取り込まれた Linux Kerinel 2.6.20 以降のCentOS(5.4以降)を再インストールした時のメモ。
自宅サーバがそろそろカオス気味なので整理しようと試みる。
以前にも VMware Server や OpenVZ を試したこともあるのだけど、今回は Linux KVM を試してみる。
CPU AMD AM2 64×2 5200+
MEM 8GB
HDD は 1TB を 2台準備し、後でRAID0を組んで二重化する予定。
1. CentOS 5.5 64bit のネットワークインストール版をダウンロードしてCD起動。
IPアドレスは固定。パッケージは Base、エディタ、KVM のみを選択。パーティションもデフォルトのまま。
2. 使わないサービスを止める
ここからはSSH接続で。
[root@Uranus ~]# chkconfig acpid off [root@Uranus ~]# chkconfig atd off [root@Uranus ~]# chkconfig auditd off [root@Uranus ~]# chkconfig avahi-daemon off [root@Uranus ~]# chkconfig bluetooth off [root@Uranus ~]# chkconfig cups off [root@Uranus ~]# chkconfig gpm off [root@Uranus ~]# chkconfig hidd off [root@Uranus ~]# chkconfig ip6tables off [root@Uranus ~]# chkconfig irqbalance off [root@Uranus ~]# chkconfig mcstrans off [root@Uranus ~]# chkconfig microcode_ctl off [root@Uranus ~]# chkconfig mdmonitor off [root@Uranus ~]# chkconfig netfs off [root@Uranus ~]# chkconfig nfslock off [root@Uranus ~]# chkconfig pcscd off [root@Uranus ~]# chkconfig portmap off [root@Uranus ~]# chkconfig readahead_early off [root@Uranus ~]# chkconfig readahead_later off [root@Uranus ~]# chkconfig restorecond off [root@Uranus ~]# chkconfig rpcgssd off [root@Uranus ~]# chkconfig rpcidmapd off [root@Uranus ~]# chkconfig sendmail off [root@Uranus ~]# chkconfig smartd off [root@Uranus ~]# chkconfig xfs off [root@Uranus ~]# chkconfig firstboot off [root@Uranus ~]# chkconfig messagebus off [root@Uranus ~]# chkconfig haldaemon off [root@Uranus ~]# chkconfig yum-updatesd off
3. 親NICのブリッジ設定
[root@Uranus ~]# yum -y install bridge-utils
[root@Uranus ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0
[root@Uranus ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0
[root@Uranus ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
# nVidia Corporation MCP55 Ethernet
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:18:F3:EB:57:05
IPADDR=192.168.0.100
NETMASK=255.255.255.0
ONBOOT=yes
[root@Uranus ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
[root@Uranus ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# nVidia Corporation MCP55 Ethernet
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:18:F3:EB:57:05
ONBOOT=yes
BRIDGE=br0
[root@Uranus ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 br0
[root@Uranus ~]# ifconfig virbr0
virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:468 (468.0 b)
[root@Uranus ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0018f3eb5705 no eth0
virbr0 8000.000000000000 yes
[root@Uranus ~]# virsh net-autostart default --disable
ネットワーク default の自動起動設定が解除されました
[root@Uranus ~]# virsh net-destroy default
ネットワーク default は停止されました
[root@Uranus ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0018f3eb5705 no eth0
4. httpdインストール
[root@Uranus ~]# yum -y install httpd [root@Uranus ~]# service httpd start httpd を起動中: [ OK ] [root@Uranus ~]# chkconfig httpd on [root@Uranus ~]# vi /etc/sysconfig/iptables [root@Uranus ~]# cat /etc/sysconfig/iptables # Firewall configuration written by system-config-securitylevel # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -i br0 -j ACCEPT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT [root@Uranus ~]# service iptables restart ファイアウォールルールを適用中: [ OK ] チェインポリシーを ACCEPT に設定中filter [ OK ] iptables モジュールを取り外し中 [ OK ] iptables ファイアウォールルールを適用中: [ OK ] iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]
5. kickstart設定ファイルを作成
IPアドレスとデフォルトゲートウェイ、ネームサーバは適宜変更のこと。
HDDはsdaではなくvdaに。clearpartに-initlabelを追加。
[root@Uranus ~]# cp anaconda-ks.cfg /var/www/html/kvm1-ks.cfg [root@Uranus ~]# chmod 644 /var/www/html/kvm1-ks.cfg [root@Uranus ~]# vi /var/www/html/kvm1-ks.cfg [root@Uranus ~]# cat /var/www/html/kvm1-ks.cfg # Kickstart file automatically generated by anaconda. install url --url http://ftp.riken.jp/Linux/centos/5.5/os/x86_64 lang ja_JP.UTF-8 keyboard jp106 network --device eth0 --bootproto static --ip 192.168.0.101 --netmask 255.255.255.0 --gateway 192.168.0.1 --nameserver 192.168.0.1 --hostname kvm1.example.com rootpw --iscrypted ※パスワード firewall --enabled --port=22:tcp authconfig --enableshadow --enablemd5 selinux --enforcing timezone --utc Asia/Tokyo bootloader --location=mbr --driveorder=vda # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --all --drives=vda part /boot --fstype ext3 --size=100 --ondisk=vda part pv.8 --size=0 --grow --ondisk=vda volgroup VolGroup00 --pesize=32768 pv.8 logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow %packages @base @core @development-tools @editors @japanese-support @kvm keyutils iscsi-initiator-utils trousers bridge-utils fipscheck device-mapper-multipath imake
6. 仮想マシン生成用シェルスクリプト作成
あとで再利用するためにシェルスクリプリプトを作っておく。
kickstart設定ファイルを指定する。
[root@Uranus ~]# vi install_kvm1.sh [root@Uranus ~]# cat install_kvm1.sh virt-install \ --connect qemu:///system \ --name kvm1 \ --ram 1024 \ --vcpus=2 \ --file /var/lib/libvirt/images/kvm1.img \ --file-size=100 \ --nographics \ --os-type=linux \ --os-variant=virtio26 \ --accelerate \ --location='http://ftp.riken.jp/Linux/centos/5.5/os/x86_64' \ --extra-args='ks=http://192.168.0.100/kvm1-ks.cfg console=tty0 console=ttyS0,115200n8'
7. 仮想マシンインストール
[root@Uranus ~]# sh install_kvm1.sh
8. iptablesの設定(ホスト)
トラフィックがブリッジまで転送されるようiptablesを無効化
# vi /etc/sysctl.conf # cat /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
設定されたカーネルパラメータを sysctl で再ロード
# sysctl -p /etc/sysctl.conf net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
libvirtd をリロード
# /etc/init.d/libvirtd reload
以下のサイトを物凄い勢いで参考にさせて頂きました。
CentOS 5.5 で KVM
http://www.ookawara.com/archives/568




