Poznámky z instalace Gentoo jako virtualizačního serveru II.
Tento článek navazuje na Poznámky z instalace Gentoo jako virtualizačního serveru I.
Instalace a nastavení KVM.
KVM je jen jaderný modul, který můžeme ovládat pomocí různých aplikací.
Pro ovládání jsem vybral qemu-kvm. Textový režim umožňuje pohodlné psaní vlastních skriptů a otevírá tak mnoho možností nastavení celého systému.
Instalace KVM a potřebných programů.
Genkernel automaticky zkompiloval potřebné moduly (kvm-intel, bridge, tun).
[root@machine]# emerge bridge-utils
[root@machine]# emerge usermode-utilities
[root@machine]# emerge socat
Automatické načtení modulů při startu serveru.
modules="kvm-intel bridge tun"
Úprava sítě pro bridge /etc/conf.d/net
# This blank configuration will automatically use DHCP for any net.* # scripts in /etc/init.d. To create a more complete configuration, # please review /etc/conf.d/net.example and save your configuration # in /etc/conf.d/net (this file :]!). dns_domain_lo="mojedomena" #config_eth0=( "192.168.0.1 netmask 255.255.255.0 brd 192.168.0.255" ) #routes_eth0=( "default gw 192.168.1.100" ) bridge_br0="eth0" config_eth0=( "null" ) config_br0=( "192.168.0.1/24" ) routes_br0=( "default via 192.168.0.100" ) dns_servers_br0=( "192.168.0.100" ) brctl_br0=( "setfd 0" "stp off" ) rc_need_br0=( "net.eth0" )
[root@machine]# ln -s net.lo net.br0
[root@machine]# rc-update add net.br0 default
[root@machine]# rc-update del net.eth0 default
IPForwarding automaticky po bootu
net.ipv4.ip_forward = 1
Vytvoření ovládacích skriptů virtuálních PC
O automatické spouštění, zastavení a restart virtuálů se postarají 3 bash skripty.
1. Skript na spuštění/ukončení/restart Virtuálního PC.
Pro každý virtuál budeme mít samostatný ovládací soubor. V něm nastavíme požadované parametry virtuálního stroje (CPU, RAM, MAC, ...)
[root@machine]# mkdir /home/virtual/run_scripts
[root@machine]# mkdir /home/virtual/run_scripts/vm
[root@machine]# nano -w /home/virtual/run_scripts/vm/virtual01
#!/bin/sh VM_NAME='virtual01' VM_PATH='/home/virtual/virtual01.qcow2' VM_MAC='DE:AC:BC:DE:EE:FE' VM_RAM='2048' VM_CPU='2' VM_TAP='qtap1' VM_VNC='1' VM_PID=/var/run/vm_$VM_NAME.pid case $1 in start) echo starting $VM_NAME tunctl -b -u root -t $VM_TAP > /dev/null ifconfig $VM_TAP up > /dev/null brctl addif br0 $VM_TAP > /dev/null qemu-kvm \ -drive file=$VM_PATH,if=ide,boot=on \ -m $VM_RAM -smp $VM_CPU -localtime \ -cdrom /home/kvmshare/debian.iso \ -net nic,macaddr=$VM_MAC \ -net tap,ifname=$VM_TAP,script=no,downscript=no \ -usbdevice tablet -vnc :$VM_VNC \ -pidfile $VM_PID \ -monitor unix:/var/run/$VM_NAME,server,nowait ifconfig $VM_TAP down brctl delif br0 $VM_TAP tunctl -d $VM_TAP > /dev/null rm -f $VM_PID ;; stop) echo -n stopping $VM_NAME sleep 1 && (echo "system_powerdown"; sleep 1) | socat - UNIX-CONNECT:/var/run/$VM_NAME > /dev/null & while true; do if [ ! -f $VM_PID ]; then echo stopped break else echo -n . sleep 1 fi done ;; *) echo use: "$0 start|stop" ;; esac
2. Skript na automatické ovládání více virtuálních PC najednou.
Tento skript projde adresář kde máme uložené předchozí spouštěcí skripty jednotlivých strojů a provede zadanou akci (start/stop/restart). Nezapomenout spouštěcí práva.
#!/bin/sh
VMP=/home/virtual/run_scripts/vm
vm_start()
{
for vm in `find $VMP -type f`; do
$vm start &
done
}
vm_stop()
{
for vm in `find $VMP -type f`; do
$vm stop
done
}
case $1 in
start)
vm_start
;;
stop)
vm_stop
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo use: "$0 start|stop"
;;
esac
3. Vytvoření služby/démona.
Nakonec vytvoříme jednoduchou službu, která se postará o ovládání předchozího hromadného skriptu.
#!/sbin/runscript
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
depend() {
need net.br0
}
start() {
ebegin "Loading virtual machines"
sh /home/virtual/run_scripts/kvm.sh start
eend $? "Failed to load the virtual machines"
eend 0
}
stop() {
ebegin "Stopping virtual machines"
sh /home/virtual/run_scripts/kvm.sh stop
eend $? "Failed to stop virtual machines"
eend 0
}
restart() {
ebegin "Restarting virtual machines"
svc_stop
svc_start
eend $? "Failed to restart virtual machines"
}
Ovládání služby:
[root@machine]# /etc/init.d/kvmservice stop
[root@machine]# /etc/init.d/kvmservice restart
Přidání služby do výchozího runlevelu.
Toto nastavení se postará o automatické spouštění služby po startu serveru.
[root@machine]# rc-update add kvmservise default
Samba pro sdílení souborů.
Pro sdílení souborů mezi hostem a guestem nainstalujeme a nastavíme sambu.
[root@machine]# smbpasswd -a kvmuser
[kvmshare]
comment = KVM Share
path = /home/kvmshare
valid users = kvmuser
public = no
writable = yes
printable = no
create mask = 0765
Základní funkčnost virtualizačního serveru je hotova.
Poznámky z instalace Gentoo jako virtualizačního serveru I. - základní systém





















