OpenVZ

Allikas: Kuutõrvaja
Redaktsioon seisuga 14. mai 2009, kell 12:54 kasutajalt Jj (arutelu | kaastöö) (Võrgu seadistus)

Sissejuhatus

XEN tehnoloogia pole alati sobiv eriti kui pole soovi kasutada erinevaid operatsoonisüstemee vaid sama os põhiseid eraldatud masinaid. OpenVZ ideaalne lahendus.

OpenVZ kasutab Operating system-level virtualiseerimist

virtualizing a physical server at the operating system level, enabling multiple isolated and secure virtualized servers to run on a single physical server. The "guest" OS environments share the same OS as the host system – i.e. the same OS kernel is used to implement the "guest" environments. Applications running in a given "guest" environment view it as a stand-alone system. Examples are Linux-VServer, Virtuozzo (for Windows or Linux), OpenVZ, Solaris Containers, and FreeBSD Jails.

OpenVZ is an open source container-based virtualization solution built on Linux. OpenVZ creates isolated, secure containers (otherwise known as VEs or VPSs) on a single physical server enabling better server utilization and ensuring that applications do not conflict. Each container performs and executes exactly like a stand-alone server; containers can be rebooted independently and have root access, users, IP addresses, memory, processes, files,

As OpenVZ employs a single kernel model, it is as scalable as the 2.6 Linux kernel; that is, it supports up to 64 CPUs and up to 64 GiB of RAM.[citation needed] A single container can scale up to the whole physical box, i.e. use all the CPUs and all the RAM. The OpenVZ is divided into a custom kernel and user-level tools.

Antud pala keskendub OpenVz kasutamisele Gentoo all.

Openvz install

Süsteemi aluseks on valitud gentoo ning antud õpetus sobib vaid sellele operatsioonisüsteemile

Esimesena tuleb teha openvz toega kernel selleleks emergeda openvz patchiga kerneli kood

emerge openvz-sources

Kuna aga millegipärast hetkel on gentoo vahenditega saadav ja eelseadistatud kernel pisut vana versioon ja keeldub uuemal gentool kompileerumast saab seda paigaldada ka käsitsi

Tuleb esmalt tõmmata linuxi kernel ja patch ning seadistusfail

# tar vjxf linux-2.6.18.tar.bz2
# cd linux-2.6.18
# gzip -dc patch-ovz028stab056.1-combined.gz | patch -p1
# cp kernel-2.6.18-i686-smp.config.ovz .config


edasi siis järgnevad käsud ei hakka peatuma pikemalt linuxi kerneli tegemisel kuna pikem pala

cd /usr/src/linux
make menuconfig
...

Seejärel paigaldame openvz utiliidid. Seadistame selle peale rebooti startima ning käivitame.

emerge vzctl
rc-update add vz default
/etc/init.d/vz start

kaks moodulit. failisüsteemiks ja interneti kasutamiseks

modprobe simfs
modprobe vzethdev

need võib lisada ka faili /etc/modules.autoload.d/kernel-2.6 ,et reboodil automaatselt moodulit laetaks

VZ template tegemine gentoole

Tõmbame stage


mkdir /vz/private/777
tar -xjf /root/stage3-i686-2008.0_beta2.tar.bz2 -C /vz/private/777

Nüüd loome seadistatava template konfi mis sisaldab mitmeid viise virtuaalmasinat piirata ja puua

vzctl set 777 --applyconfig vps.basic --save

Lisame templatele ka nime gentoo

avame faili /etc/vz/conf/777.conf

OSTEMPLATE="gentoo"

Järgmisena /etc/mtab sümlingiks /proc/mounts peale selleks ,et df käsk töötaks ja oleks alati mtabis mounditud info korrektne

rm -f /vz/private/777/etc/mtab
ln -s /proc/mounts /vz/private/777/etc/mtab

Vajalik veel fstabi lisada

echo "proc /proc proc defaults 0 0" > /vz/private/777/etc/fstab


Aba /vz/private/777/etc/inittab ja kommenteeri välja kõik read

c?:1235:respawn:/sbin/agetty 38400 tty? linux

Selleks ,et getty ja login ei stardiks tty'sid mis ei eksisteeri


järgmisena avame /vz/private/777/etc/shadow ja asendame seal eksisteeriva root rea järgmisega

root:!:10071:0:::::

see lülitab välja root kasutajana logimise kuni pole seadistatud järgneva käsuga vzctl set CTID --userpasswd root:password. parooli

Lülitame välja veel mõned ebavajalikud init skriptid

rm /vz/private/777/etc/runlevels/boot/checkroot
rm /vz/private/777/etc/runlevels/boot/consolefont

Keelame ka /sys mountimise üritused

avame /vz/private/777/sbin/rc ja kommenteerime seal välja rea

# try mount -n ${mntcmd:--t sysfs sysfs /sys -o noexec,nosuid,nodev}

Et see update masinat uuendades üle ei kirjutatataks tuleb lisada/vz/private/777/etc/make.conf faili

CONFIG_PROTECT = /sbin/rc

Pisut keeruline on kasutada udev'i kuna mõned seadmed on alguses vaikimisi puudu. Näiteks sshd keeldub käima minemast kuna /dev/random ja /dev/urandom on puudu. Sellepärast on soovitatav udev väljalülitada Selleks tuleb avad fail /vz/private/777/etc/conf.d/rc ja muuta seal leiduvad rida RC_DEVICES järgnevaks

RC_DEVICES="static"

Seejärel loome mõned deviced mis vajalikud virtualserverile

cd /vz/private/777/lib
mknod udev/devices/ttyp0 c 3 0
mknod udev/devices/ptyp0 c 2 0
mknod udev/devices/ptmx c 5 2

Seejärel avame /vz/private/777/etc/conf.d/rc ja muuda read RC_DEVICES and RC_DEVICE_TARBALL järgnevateks

RC_DEVICES="udev"
RC_DEVICE_TARBALL="no"

Nüüd tuleb järgnevalt cd käsuga liikuda kaustast kus hetkel asume välja muidu võib järgnevaid käske andes veateate

You have to leave the directory you are in for the next step to be OK, otherwise you will get this error message: 
vzquota : (error) Quota on syscall for 777: Device or resource busy
vzquota on failed [3]

Seega kirjutame

cd /

Ja anname käsud

vzctl start 777 vzctl enter 777

Selleks ,et mugavamalt installida tarkvara tuleks linkida virtuaalmasinasse ka portsud,

mkdir /vz/root/777/usr/portage
mount -o bind /usr/portage /vz/root/777/usr/portage

Nüüd peaks valmis olema, tekitame enda loodust uue template

cd /vz/private/777/
tar czf /vz/template/cache/gentoo.tar.gz *

Ja testime enda kätetööd

vzctl create 800 --ostemplate gentoo --ipadd 192.168.0.10 --hostname testvps

Valmis, oleme töötava virtuaalserveri omanik

Kasutatud manuali mis pärineb siit http://wiki.openvz.org/Gentoo_template_creation

VZ virtuaalmasina loomine kiirelt ja mustalt

Tõmbame gentoo stage alla näiteks saame selle aadressilt

ftp://ftp.eenet.ee/pub/gentoo/releases/x86/2007.0/stages/

mv stage3-x86-2007.0.tar.bz2 /vz/template/cache
cd /vz/template/cache
bunzip2 stage3-x86-2007.0.tar.bz2
mv stage3-x86-2007.0.tar stage3.tar
gzip stage3.tar


Loome openvz masina mille id'ks 800 id alusel käib kogu virtuaalse masinaga töö. Allapoole 100 on id'd reserveeritud

vzctl create 800 --ostemplate stage3

Virtuaalse serveri suuruseks tuleb umbes 400Mb

stardime virtuaalse serveri

vzctl start 800

ja ronime selle sisse

vzctl enter 800

protsessitabel, nagu näha on pilt väga minimaalne

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2   1564   544 ?        Ss   18:47   0:00 init [3]
root     29955  0.0  0.2   1928   452 ?        Ss   19:16   0:00 vzctl: pts/0
root     29956  0.0  0.7   2664  1544 pts/0    Ss   19:16   0:00 -bash
root     24172  0.0  0.4   2192   888 pts/0    R+   19:37   0:00 ps -aux

Veel üks tähtis asi ,et /dev kaustas töötaksid deviced tuleb teha muudatus faili

/vz/private/800/etc/conf.d/rc

kus tuleb muuta RC_DEVICES selliseks

RC_DEVICES="static"

Probleem seisneb selles ,et udev ei taha millegipärast korrektselt töötada koos vz'iga

Töötavaid virtuaalmasinaid näeme käsuga vzlist

Võrgu alternatiivne seadistus

Võrgu seadistamine peaks töötama ka lihtsamalt andes lihtsalt näiteks käsu

vzctl set 800 --ipadd 193.40.0.193

kohe vz masinat luues kuid millegipärast tõrkus see süsteem

ip mille annan virtuaalsele masinale 800 on 193.40.0.193 netmaskiga 255.255.255.128 ruuteriks on 193.40.0.129

echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
vzctl set 900 --veth_add veth900.0,00:12:34:56:78:9A,eth0,00:12:34:56:78:9B --save
ifconfig veth900.0 0
Warning: --veth_add option is outdated use --netif_add instead
Configure meminfo: 49152
Configure veth devices: veth101.0
Saved parameters for VE 800
echo 1 > /proc/sys/net/ipv4/conf/veth900.0/forwarding
echo 1 > /proc/sys/net/ipv4/conf/veth900.0/proxy_arp
vzctl exec 900 ifconfig eth0 0
vzctl exec 900 ifconfig eth0 193.40.0.193 netmask 255.255.255.128
vzctl exec 900 route add default dev eth0
route add 193.40.0.193 dev veth900.0

serveripoolt peaksime nägema

# ifconfig veth900.0
veth900.0 Link encap:Ethernet  HWaddr 00:12:34:56:78:9A
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6569 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7785 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1011288 (987.5 Kb)  TX bytes:7733410 (7.3 Mb)

Edasine häälestus

Portide ühendamine vz masina külge

mkdir /vz/private/800/usr/portage
mount -o bind /usr/portage /vz/private/800/usr/portage

Probleemid

Kui emerge teatab ,et pakett näiteks tavaline editor on maskitud tuleks selle nimi lisada faili /etc/portage/package.unmask

>=app-editor/nano

Kui teatatakse ,et masked by keyword siis faili /etc/portage/package.keywords

=app-editor/nano **

Lingid

http://www.gentoo.org/proj/en/vps/openvz-howto.xml

http://wiki.openvz.org/Virtual_Ethernet_device

http://wiki.openvz.org/Gentoo_template_creation

http://wiki.openvz.org/Getting_started_with_OpenVZ_live_CD

Võrdlustabel operatsioonisüsteemi virtualiseerimisest

http://en.wikipedia.org/wiki/Operating_system-level_virtualization

Veebihaldus

http://homaly.dunanet.hu/wvz/

Jooksev migreerimine

http://www.howtoforge.com/how-to-do-live-migration-of-openvz-containers