Úvod GNU/Linux Software Ke stažení Odkazy Guestbook

Vaše IP: 54.196.79.241
Počet návštěv: 490471
Hledání příkazů operačního systému Linux podle syntaxe nebo popisu.

Nastavení vzhledu stránek
Dark
Silver
Green
Grey

Radek Tříška

E-mail a Jabber :
radek(at)fastlinux(dot)eu
mseed@njs.netlab.cz

Sekce V.I.P. uživatelů


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 qemu-kvm
[root@machine]# emerge bridge-utils
[root@machine]# emerge usermode-utilities
[root@machine]# emerge socat

Automatické načtení modulů při startu serveru.

[root@machine]# nano -w /etc/conf.d/modules
modules="kvm-intel bridge tun"

Úprava sítě pro bridge /etc/conf.d/net

[root@machine]# nano -w /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]# cd /etc/init.d
[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

[root@machine]# nano -w /etc/sysctl.conf
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
[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.

[root@machine]# nano -w /home/virtual/run_scripts/kvm.sh
#!/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.

[root@machine]# nano -w /etc/init.d/kvmservice
#!/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 start
[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]# chmod 755 /etc/init.d/kvmservise
[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]# emerge samba
[root@machine]# smbpasswd -a kvmuser

[root@machine]# nano -w /etc/samba/smb.conf
[kvmshare]
    comment = KVM Share
    path = /home/kvmshare
    valid users = kvmuser
    public = no
    writable = yes
    printable = no
    create mask = 0765
[root@machine]# rc-update add samba default

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

| Verze projektu: 1.52 | © 2000 - 2011 | Historie |