Birtualizazioa: XEN teknologia erabiliz zerbitzuak birtualizatu
Note: Return to reference manual view.
1. Sarrera
1.1. Esku liburu honi buruz
Lehenengo eta behin argi utzi nahi dudan zerbait: esku liburu hau irakurtzerakoan, argi izan behar duzu ni ez naizela XEN eta birtualizazioan aditua. Aspaldian honen beharra genuen, eta halako baten animatu eta birtualizazioarekin hasi ginen.
Software librearekin aukera ezberdinak daude, batzuentzako batzuk besteak baino hobeagoak izango dira, adibidez lagun batzuek KVM nahiago dute. Nik neuk ere lehenago VMWare instalatu izan dut, eta egia esateko, ondo dabil.
Zentzu horretan ez gara talibanak. Gustukoa baduzu ondo, bestela ere bai. :-)
Seguru gauza asko hobetu daitezkeela, agian beste batzuk falta izango dira, baina esan bezala, guk gure instalazioa egin ondoren sortu dugun manuala publikatzen ari gara, besterik ez.
Akatsen bat, aldatu beharreko zerbait edo beste edozer esan nahi badidazu, gure blogeko post honen erantzun moduan jarri dezakezu, eta saiatuko gara erantzuten.
1.2. Zertarako da birtualizazioa ?
Birtualizazioaren definizio asko daude, eta oso onak gainera. Wikipedian (gazteleraz) definizio hau daukazu birtualizazioa zer den azaltzeko, eta hau XEN zer den azaltzeko. Nik adibide batzuk jarriko ditut birtualizazioa zergatik erabili nahi dugun azaltzeko.
Zerbitzari berri bat erosten duzu
Gaur egun erosten ditugun makinak oso potenteak dira, bai CPU aldetik, bai memoria aldetik. Zerbitzu berri bat jarri behar, eta beldurra izaten dugu produkzioan ditugun zerbitzarietan jartzeko. Beldurra, ez bait dakizu zein izango den beste zerbitzuetan izango dituen eragina.Kasu hauetan (ahal denean behintzat) inbertsio berri bat egin, eta zerbitzari berria erosten dugu zerbitzu berriarentzat, nahiz eta orain arte genuen zerbitzariak baliabide fisikoak izan zerbitzu berriari ere ondo erantzuteko. Askotan hobe beste makina baten instalatzea, badaezpada ere.
Birtualizazioarekin hau konponduko dugu. Zerbitzari fisiko berdinean zerbitzari birtual desberdinak izango ditugu, eta fisikoki makina berdinean egon arren, logikoki zerbitzari desberdinak izango dira, eta baten konfigurazioak ez du bestean eraginik izango.
Arazoak dituzu zerbitzari gelan fisikoki makina gehiago sartzeko
Agian zerbitzari gelan zerbitzariak instalatzeko daukazun lekua bete egin zaizu, edo zerbitzarien elikadura elektrikoa ematen dizun UPSak ez du nahiko indar zerbitzari guztiei argi indarra ziurtatzeko.Guri hau gertatu izan zaigu. Lehen bagenituen zerbitzu ez oso astunak emateko zerbitzari lanak egiten zituzten PC batzuk, adibidez:
- Fax zerbitzaria Hylafax sistemarekin dugu, eta horretarako PC zahar bat genuen modem batekin. PC zaharra zen, ez zuen beste ezertarako balio, lekua kentzen zigun eta berak ere argi indarra jaten zuen.
- Software lizentzien kontrola eramateko programa berezi bat genuen beste PC batean. Programa honek beste zerbitzu batzuekin arazoak ematen zigunez, PC xinple batean genuen instalatuta. PC honek ez zuen beste lanik egiten, baina berak ere argi indarra eta lekua behar zituen.
- Sistemak gero eta konplexuagoak dira, eta guzti hauen jarraipena egitea ez da batere erraza, beraz nagios bat instalatu genuen beste PC zahar batean.
- eta abar ...
Honelako kasuetan, zerbitzari berri batek potentzia nahikoa izan dezake makina birtual desberdinak sortu eta zerbitzu guzti hauek makina fisiko batean izateko.
Erabilgarritasun handiko sistema bat ezarri nahi duzu
Sistema informatikoak gero eta kritikoagoak dira. Zerbitzu bat ezartzen duzu, eta aurrerantzean ezin da geratu, bestela erabiltzaile/bezero guztiak atzetik dituzu.Birtualizazioak hemen ere laguntzen digu. Bi XEN zerbitzari (edo gehiago) dauzkazunean, posible duzu makina birtual bat zerbitzari fisiko batetik bestera mugitzea, beraz hardware-ekiko duzun dependentzia ez da hain handia. Zerbitzari fisiko bat apurtzen bada, bestea duzu zerbitzari birtualak martxan jartzeko.
Sistema kritikoen eguneraketak egin behar dituzu, eta ez zara ausartzen
Koldarra ? Ez, koldarra ez, esperientziaduna (batez ere Windows sistemak badira). Ez al zaizu gertatu sistema edo aplikazio bat eguneratzen hasi, arazoren bat izan, eta sistema hankaz gora geratzea ? Ez eguneratu eta ezta ere lehen zegoen moduan, ez bata eta ez bestea, hil egin zaizu.
Honelakotan birtualizazioak produkzioan duzun sistema birtualaren kopia bat egin, eta kopia horrekin jolasteko aukera ematen dizu. Egin beldurrik gabe egin behar dituzun eguneraketak, probatu ea nola dabilen sistema berria, eta dena ondo dagoela ziurtatu duzunean, kopia hau jarri produkzioan. Arazoren bat izan duzula ? Lasai, ez da ezer gertatzen, produkzioan dagoen sistemaren kopia bat zen. Ezabatu kopia hori, egin beste bat, eta saiatu berriro lortu arte.
2. Gure instalazioko adibide batzuk
2.1. Gure zerbitzari fisikoa
Birtualizaziorako erosi dugun zerbitzariak garrantzi berezia du, bere gainean zerbitzari birtual guztiak izango ditugulako. Hau dela eta, hardware ona erostea merezi du. Gure kasuan Supermicro etxeko zerbitzaria erosi dugu, debian linux-ekin bateragarria den hardwarearekin. Ezaugarri nagusiak hauek dira:
- Bi prozesadore ditu
- 4 Gb RAM (8 jartzea ez litzateke txarra izango)
- 3Ware kontrolatzailea Raid5 egiteko. 4 disko SATA ditu, bakoitza 500 Gb-ekoa. 3 disko erabiliz Raid5a egiten dugu, eta laugarren diskoa HotSpare moduan konfiguratu dugu. Raid5eko disko bat izorratuko balitz, zuzenean laugarren disko hau Raid-ean sartuko litzateke. Kontrolatzaileak gainera posta elektronikoz abisatzen dizu zerbait gertatzen bada.
Guzti hau, 2.500€-gatik lortu dugu (BEZ barne). Dirua da bai, baina zerbitzari ona da, eta lana egin beharko du.
2.2. Zerbitzariaren instalazioa
Debian zerbitzaria instalatzen
XEN instalatu aurretik, zerbitzari fisikoa instalatu behar da. Guk Ubuntu Server eta Debian Lenny distribuzioetan instalatu dugu (64 bit-ekoa). Lehenengo egin beharra partizioak sortzea da, guk honela jarri ditugu:
- /boot partizioa:Giga 1 eta arrankatzeko moduan.
- Swap partizioa
- / partizioa: 8 Giga
- Geratzen den guztia LVM partizio moduan
Gogoan izan Windows zerbitzariak bitualizatu nahi badira, zerbitzari fisikoan X-Window instalatu behar dela, beraz hobe instalazioan aukeratzea. Ez dugu hemen sakonduko. Suposatzen da XEN instalatzera bazoaz, debian nola instalatzen den badakizula.
Oinarrizko instalazio egin ondoren, beste pakete hauek instalatuko ditugu:
apt-get update
apt-get upgrade
apt-get install openssh-server
XEN zerbitzaria instalatzen
Debian barruan XEN paketea instalatuko dugu. Hau egitean, kernel berezi bat instalatuko du.
Ubuntu Server baten instalatzen badezu:
apt-get instal ubuntu-xen-server
Debian Lenny baten (32 bit):
apt-get install xen-linux-system-2.6.26-2-xen-686
Debian Lenny baten (64 bit):
apt-get install xen-linux-system-2.6.26-2-xen-amd64
Gero xen-tools paketea instalatu:
apt-get install xen-tools
Ondoren “/etc/modules” editatu eta “loop” aukera hau gehitzen diogu:
loop max_loop=64
Orain zerbitzaria berrabiarazi behar dugu. Martxan jartzen denean Xen kernel bat jarri diola ikus dezakegu:
root@IMH01XEN01:~# uname -a
Linux IMH01XEN01 2.6.24-21-xen #1 SMP Mon Aug 25 18:56:44 UTC 2008 x86_64 GNU/Linux
Bolumen logikoak
Makina birtual bakoitzerako bolumen logiko bat sortuko dugu. Hau horrela egitean, gero aukera gehiago izango ditugu bolumenak kudeatzeko: neurriz handitu, eta abar.
Paketea instalatuko dugu:
apt-get install lvm2
/etc/modules editatu eta hau gehitu behar da: dm-mod
Orain bolumen logikoak konfiguratu behar dira. LVM partizioa zein den jakin behar dugu (fdisk komandoa erabiliz ), gure kasuan /dev/sda4 da.
pvcreate /dev/sda4
Orain “Grupo de volumen” edo Bolumen taldea deritzona sortu behar da:
vgcreate volgroupxen /dev/sda4
Orain "Bolumen logikoa“ deritzona sortu behar da. Hemen bi kasu desberdintzen dugu:
- Linux sistema bat birtualizatu nahi badugu, hau da, zerbitzari fisikoak berak duen antzerako linux bat jarri nahi badugu (debian etch, ubuntu, ..) "parabirtualizatua" izateko.
- lvmcreate: edozein sistema birtualizatzeko
2.3. Debian Linux birtualizazioa
Kasu honetan, parabirtualizazioa erabiliko dugu.
Zerbitzari fisikoak duen kernela jakin behar dugu makina birtual berria sortu ahal izateko. Horretarako uname komandoa erabiliko dugu
root@IMH01XEN01:~# uname -r
2.6.24-21-xen
Demagun datu baseak izango dituen linux zerbitzari birtual bat sortu nahi dugula. Hauek dira zerbitzari berriaren ezaugarriak:
- Izena: XenDB
- Linux distribuzioa: etch
- Disko gogorraren neurria: 10 Gb
- Swap neurria: Gb bakarra.
Ondorengo komando honekin makina birtuala sortuko litzateke. Berak sortuko luke bolumen birtuala guk eman diogun balioekin.
root@IMH01XEN01:~# xen-create-image install-method=debootstrap --hostname=XenDB
--dist=etch --lvm=volgroupxen --fs=ext3 --dhcp --kernel=/2.6.24-21-xen
--force --initrd=/boot/initrd.img-2.6.24-21-xen --arch=amd64 --size=10G
--swap=1G
Aukera (kontuz ibili honekin): "--force" parametroa erabiltzen badugu, aurrez izen bereko makina birtuala sortuta egongo balitz, gainidatzi egingo luke.
Orain Xen-eko konfigurazio fitxategi nagusia ukitu behar dugu. Hobe beraz lehenago kopia bat egitea.
cp /etc/xen/xend-config.sxp /etc/xen/xend-config.sxp.backup
nano /etc/xen/xend-config.sxp
Interfazeen kudeaketan, lerro hau aktibatuko dugu:
(network-script network-bridge)
eta ondoren zerbitzua berrabiarazi:
/etc/init.d/xend restart
Orain konfigurazio fitxategia editatzen dugu:
nano /etc/xen/XenDB.cfg
Hor aldatuko ditugu nahi ditugun parametroak (adibidez swap ...). Ziurtatu kernel parametroan path-a ondo dagoela, gure kasuan:
kernel = '/boot/vmlinuz-2.6.24-21-xen'
Bukaeran hau sartu, bestela xm console egiterakoan kontsolak ez du funtzionatzen:
extra="console=tty xencons=tty"
Xen kudeatzeko komandoa xm da. Adibidez:
Zerbitzari birtuala kargatzeko:
xm create XenDB.cfg
xm console XenDB
Zerbitzari birtuala itzaltzeko:
xm shutdown XenDB
Ez badu erantzuten:
xm destroy XenDB
Zerbitzari fisikoak arrankatzen duenean zerbitzari birtualak arrankatzea nahi badugu, esteka sinbolikoa egin behar diogu:
ln -s /etc/xen/XenDB.cfg /etc/xen/auto/host.cfg
2.4. Ubuntu desktop birtualizatzen
Adibide honetan Ubuntu Intrepid Hearon bertsioa instalatu nahi dugu, eta parabirtualizatua egotea nahi dugunez, aurrerago debian zerbitzari birtuala sortzeko erabili dugun teknika berbera erabili nahi dugu: debootstrap.
Hau egin ahal izateko, ezinbestekoa da linux zerbitzari fisikoan /usr/lib/xen-tools/ karpetan intrepid.d izeneko "soft link" edo esteka egotea. Hau ez balego, ez luke jakingo nola instalatu.
root@IMH01XEN01:~# cd /usr/lib/xen-tools/
root@IMH01XEN01:/usr/lib/xen-tools# ls -la
total 72
drwxr-xr-x 9 root root 4096 2008-10-24 10:37 .
drwxr-xr-x 87 root root 32768 2008-12-10 17:46 ..
drwxr-xr-x 2 root root 4096 2008-10-24 10:37 centos-4.d
drwxr-xr-x 2 root root 4096 2008-10-24 10:37 centos-5.d
-rwxr-xr-x 1 root root 4409 2008-04-06 03:12 common.sh
drwxr-xr-x 2 root root 4096 2008-10-24 10:37 dapper.d
drwxr-xr-x 2 root root 4096 2008-10-24 10:37 debian.d
drwxr-xr-x 2 root root 4096 2008-12-10 17:53 edgy.d
lrwxrwxrwx 1 root root 8 2008-10-24 10:37 etch.d -> debian.d
lrwxrwxrwx 1 root root 15 2008-10-24 10:37 fedora-core-4.d -> fedora-core-6.d
lrwxrwxrwx 1 root root 15 2008-10-24 10:37 fedora-core-5.d -> fedora-core-6.d
drwxr-xr-x 2 root root 4096 2008-10-24 10:37 fedora-core-6.d
lrwxrwxrwx 1 root root 15 2008-10-24 10:37 fedora-core-7.d -> fedora-core-6.d
lrwxrwxrwx 1 root root 6 2008-10-24 10:37 feisty.d -> edgy.d
drwxr-xr-x 2 root root 4096 2008-10-24 10:37 gentoo.d
lrwxrwxrwx 1 root root 6 2008-10-24 10:37 gutsy.d -> edgy.d
lrwxrwxrwx 1 root root 6 2008-10-24 10:37 hardy.d -> edgy.d
lrwxrwxrwx 1 root root 8 2008-10-24 10:37 lenny.d -> debian.d
lrwxrwxrwx 1 root root 8 2008-10-24 10:37 sarge.d -> debian.d
lrwxrwxrwx 1 root root 8 2008-10-24 10:37 sid.d -> debian.d
Ez dagoenez, guk sortuko dugu:
root@IMH01XEN01:/usr/lib/xen-tools# ln -s edgy.d intrepid.d
Antzerako zerbait egin behar dugu debootstrap-erako:
cd /usr/share/debootstrap/scripts/
ln -s edgy intrepid
Orain komando hau exekutatuko dugu:
root@IMH01XEN01:/usr/lib/xen-tools# xen-create-image install-method=deboottstrap --hostname=XenUbuntuDesktop01 --dist=intrepid --mirror=http://es.archive.ubuntu.com/ubuntu/ --lvm=volgroupxen --fs=ext3 --dhcp --kernel=/2.6.24-21-xen --force --initrd=/boot/initrd.img-2.6.24-21-xen --arch=amd64 --size=10G –swap=1G
Emaitza hau da:
General Information
--------------------
Hostname : XenUbuntuDesktop01
Distribution : intrepid
Partitions : swap 1G (swap)
/ 10G (ext3)
Image type : full
Memory size : 128Mb
Kernel path : /2.6.24-21-xen
Initrd path : /boot/initrd.img-2.6.24-21-xen
Networking Information
----------------------
IP Address : DHCP [MAC: 00:16:3E:84:99:66]
Removing /dev/volgroupxen/XenUbuntuDesktop01-swap - since we're forcing the install
Removing /dev/volgroupxen/XenUbuntuDesktop01-disk - since we're forcing the install
Creating swap on /dev/volgroupxen/XenUbuntuDesktop01-swap
Done
Creating ext3 filesystem on /dev/volgroupxen/XenUbuntuDesktop01-disk
Done
Installation method: debootstrap
Done
Running hooks
Done
No role scripts were specified. Skipping
Creating Xen configuration file
Done
All done
Logfile produced at:
/var/log/xen-tools/XenUbuntuDesktop01.log
Instalazioa nola joan den ikusi nahi badegu, bukaeran jartzen digun log fitxategian begiratzea besterik ez dugu:
/var/log/xen-tools/XenUbuntuDesktop01.log
Arrankatu aurretik, konfigurazioa birpasatu. Editatu konfigurazio fitxategia:
cd /etc/xen
nano XenUbuntuDesktop01.cfg
Eta begiratu nola dagoen kernel parametroa. Nik hau neukan:
kernel = '/2.6.24-21-xen'
Eta honela jarri dut:
kernel = '/boot/vmlinuz-2.6.24-21-xen'
Orain makina birtuala martxan jartzeko:
xm create XenUbuntuDesktop01.cfg ; xm console XenUbuntuDesktop01
Emaitza moduan login kontsola bat emango digu, eta root moduan sartzeko aukera izango dugu (pasahitz gabe).
IP helbidea DHCP bidez hartzen duenez, ifconfig exekutatu beharko dugu lortu duen IP helbidea zein den jakiteko.
Berez ez du gnome instalatzen. Guk behar dugunez, honela instalatuko genuke:
apt-get install xorg gnome-core
VNC bitartez konektatu ahal izateko, lehenengo VNC zerbitzaria instalatu egin behar dugu ubuntu birtual berrian:
sudo apt-get install vnc4server
Orain konfiguratu egin behar da, bestela konektatzen geranean ez digu Gnome erabiltzeko aukerarik emango. Editatuko dugu (aurrez nano instalatuta)
apt-get install nano
nano .vnc/xstartup
Hau da berez dakarrena:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
Eta honela utziko dugu ubuntu birtualean:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
unset SESSION_MANAGER
gnome-session &
Orain vncserver arrankatuko dugu:
vncserver :1
Pasahitza eskatuko digu. Ondo apuntatu behar dugu, pasahitz hori erabili beharko dugu beste leku batetik ubuntu birtualera konektatu nahi dugunean.
Aurrerantzean VNC erabiliz, sortu dugun Ubuntu makina birtualera konektatu gaitezke.
2.5. Windows birtualizazioa
Kasu honetan, XEN barruan Windows makina bat instalatu nahi dugu. Ikusiko dugunez ez da Linux makina birtual bat sortzea bezain azkarra, baina egin daiteke. Bestalde, kontutan izan hau ez dela "parabirtualizazioa" izango, beraz ez da hain efizientea izango.
Bolumena sortu behar da
Horretarako lvcreate komandoa erabiliko dugu. Bere sintaxia hau dalvcreate -L 40G -n BolumenLogikoarenIzena BolumenTaldearenIzena
Gure kasuan, Windows makinak ezaugarri hauek izango ditu:
- Izena: XenWinServer01
- Disko gogorraren neurria: 40 Gb
lv create -L 40G -n xenwiserver01 volgroupxen
Hau egin ondoren, bolumen logikoa formateatu behar dugu. VFAT bezala formateatuko dugu.
mkfs -t vfat /dev/volgroupxen/xenwinserver01
Linux zerbitzari fisikoan X-Window instalatuta izan behar dugu windows zerbitzari birtualak instalatu ahal izateko, ezinbestekoa da Windows instalazioko leihoak ikusi ahal izateko. Hau kontutan izan behar da hasieran Linux zerbitzari fisikoa instalatzen dugunean.
Demagun zerbitzari birtualaren txantiloia hau dela: /etc/xen/xenwinserver01.cfg
Editatu egin beharko genuke eta aldatu: izena, memoria, prozesadoreak.
- Boot atalean 'd' jarri beharko genuke CDtik arrankatu eta Windows instalazioa egin ahal izateko. Behin instalatu ondoren, 'c' jarriko genuke disko gogorretik arrankatzeko.
- Disk parametroan dagokion bolumen logikoa jarri behar zaio.
Adibidez:
kernel = '/usr/lib/xen/boot/hvmloader'
builder = 'hvm'
memory = 1024
name = 'xenwinserver01'
vcpus = 1
vif = [ 'type=ioemu, bridge=xenbr0' ]
cdrom = '/dev/sdc0'
boot = 'c'
sdl = 1
vnc = 0
nographic = 1
disk = [ 'phy:/dev/volgroupxen/xenwinserver01,hda,w', 'phy:/dev/loop1,ioemu:hdc:cdrom,r' ]
device_model = '/usr/lib/xen/bin/qemu-dm'
Instalazioarekin jarraituz, Windows instalatzeko CDak behar ditugu. Guk instalazio CDa ISO irudi bihurtu eta windows zerbitzari birtualeko CD irakurgailu birtualean kargatzen dugu. Hau egin ahal izateko libre dagoen loop bat aurkitu behar dugu:
Hau adibidez, okupatuta dago:
root@IMH01XEN01:/etc/xen# losetup /dev/loop1
/dev/loop1: [0803]:4472839 (/root/InstalazioIrudiak/win2kserver/w2kserver.iso)
Hau aldiz, libre dago:
root@IMH01XEN01:/etc/xen# losetup /dev/loop2
loop: can't get info on device /dev/loop2: No such device or address
Orain ISO irudia muntatu egin behar dugu zerbitzari birtualak ikusi ahal izateko:
root@IMH01XEN01:/etc/xen# losetup -r /dev/loop2 /root/InstalazioIrudiak/win2003server/SW_CD_Win.iso
Loop hau zerbitzariko txantiloi dokumentuan konfiguratu behar dugu disk parametroan:
disk = [ 'phy:/dev/volgroupxen/xenwinserver2003_01,hda,w', 'phy:/dev/loop2,ioemu:hdc:cdrom,r' ]
Orain Windows instalazioa egin beharko genuke. Barkaidazue, baina zati hori hurrengo adibidean daukat dokumentatuta, Windows XP adibidean, beraz jarraitu hurrengo adibidea irakurtzen ;-)
2.6. Windows XP birtualizatzen
Lehenengo ISO irudi bat sortuko dugu WXP-ren instalazio CDakin, adibidez K3B erabiliz. ISOa sortu denean scp erabiliz xen zerbitzari fisikoan kopiatuko dugu.
root@IMH01XEN01:~# ls -l /root/InstalazioIrudiak/wxpsp3/
total 669712
-rw-r--r-- 1 root root 685105152 2008-12-11 16:30 WXPSP3.iso
Orain Bolumen Logikoa sortuko dugu. 10 Gigako diskoa jarriko diogu, adibide honetako XP honek ez baitu du datu askorik izango.
root@IMH01XEN01:~# lvcreate -L 10G -n xenwinxp01 volgroupxen
Logical volume "xenwinxp01" created
Orain sortu dugun diskoa formateatu egin behar dugu
root@IMH01XEN01:~# mkfs -t vfat /dev/volgroupxen/xenwinxp01
Aurrez esan bezala, instalazioa egiteko ISO bat erabiliko dugu. ISO hau muntatu egin behar dugu sistemak ikus dezan. ISO bat muntatzeko libre dagoen loop bat erabiliko dugu.
root@IMH01XEN01:/etc/xen# losetup /dev/loop1
loop: can't get info on device /dev/loop1: No such device or address
Hau libre dago, beraz erabiliz dezakegu.
root@IMH01XEN01:/etc/xen# losetup -r /dev/loop1 /root/InstalazioIrudiak/wxpsp3/WXPSP3.iso
Ondo muntatu duen ikus dezakegu:
root@IMH01XEN01:/etc/xen# losetup /dev/loop1
/dev/loop1: [0803]:4472848 (/root/InstalazioIrudiak/wxpsp3/WXPSP3.iso)
Orain xen konfigurazio karpetara joan, eta hoberena lehendik daukagun windows-erako konfigurazio fitxategi bat oinarri bezala hartzea da. Horretarako, konfigurazio fitxategia kopiatuko dugu:
root@IMH01XEN01:~# cd /etc/xen
root@IMH01XEN01:/etc/xen# cp xenwinserver01.cfg xenwinxp01.cfg
Hau egin ondoren, konfigurazio fitxategi berria editatuko dugu.
kernel = '/usr/lib/xen/boot/hvmloader'
builder = 'hvm'
memory = 512
name = 'xenwinxp01'
vcpus = 1
vif = [ 'type=ioemu, bridge=xenbr0' ]
# cdrom = '/dev/sdc0'
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot='d'
sdl = 1
vnc = 0
nographic = 0
disk = [ 'phy:/dev/volgroupxen/xenwinxp01,hda,w','phy:/dev/loop1,ioemu:hdc:cdrom,r']
device_model = '/usr/lib/xen/bin/qemu-dm'
usbdevice='tablet'
Aldatu ditugun parametroak hauek dira:
memory = 512
name = 'xenwinxp01'
boot = 'd'
sdl = 1
vnc = 0
nographic = 0
disk = [ 'phy:/dev/volgroupxen/xenwinxp01,hda,w', 'phy:/dev/loop1,ioemu:hdc:cdrom,r' ]
usbdevice='tablet' (xaguak arazorik ez emateko)
Honekin suposatzen da dena prest dugula. Instalazioa martxan jartzeko linux zerbitzari fisikoan leihoak kargatuta izan behar ditugu, bestela ezin izango ditugu Windows instalatzailearen mezuak ikusi. Gure kasuan linux zerbitzari fisikora VNC bitartez konektatuko gara.
XEN zerbitzari fisikoak X-Window (Gnome) martxan izan behar ditu, eta Remote Desktop erabiltzeko konfiguratua, irudian ikusten den bezala:

Gauzak ondo egin baditugu, VNC erabiliz zerbitzari fisikora konektatu ahal izango gara. Hemen gure zerbitzari fisikoko GNOME mahaigaina (garbia ezta ?)


Hau egin ondoren, ikusiko dugu nola beste leiho bat zabaltzen den Windows berria konfiguratzeko

Orain Windows-en instalazio normala egitea besterik ez dugu. Instalazioa bukatzen denean makina birtualaren konfigurazio fitxategian nographic=1 parametroa komentatu egingo dugu.
#nographic=1
Honela, makina hau automatikoki arrankatu ahal izango dugu, nahiz eta zerbitzari fisikoak Gnome arrankatu ez. Beste era batera esanda, zerbitzari fisikoan X-Window ez da martxan egon behar Windows makina birtuala martxan jarri ahal izateko.
3. Aukera aurreratuak
3.1. Makina birtualen kopiak egin
Lan ederra egin dugu Makina birtualaren instalazioa egiten. Demagun orain sortu dugunaren antzerako beste makina birtual bat behar dugula beste zerbaiterako. Prozesu guztia errepikatu beharko dugu ? Ez horixe, orain arte egindako lana aprobetxatuko dugu.
Aurrez egindako instalazioaren kopia bat egingo dugu, eta aurrerantzean antzerako makina birtual bat behar dugunean, aurrez egindako instalazioan oinarrituko gara.
LVM-ak erabiltzen ari garenez, lehenengo makina birtualak erabiltzen duen bolumen logikoaren shapshot (argazkia) bat sortuko dugu.
Klonatu nahi dugun bolumenak duen neurria jakin behar dugu. Gure kasuan 10 GB.
root@IMH01XEN01:~# lvdisplay
--- Logical volume ---
LV Name /dev/volgroupxen/xenwinxp01
VG Name volgroupxen
LV UUID 9U95Sb-SjSS-28cw-0wUG-3rCe-eX81-xHEppQ
LV Write Access read/write
LV Status available
# open 0
LV Size 10,00 GB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:8
Tarteko bolumen bat sortuko dugu kopia egin ahal izateko. Bukaeran bolumen hau ezabatu egingo dugu. Bolumenari WindowsArgazkia deituko diogu.
root@IMH01XEN01:~# lvcreate -L 10G -s -n WindowsArgazkia /dev/volgroupxen/xenwinxp01
Logical volume "WindowsArgazkia" created
Makina birtual berriak xenwinxp02 izena izango du, beraz bere bolumen logikoak izango duen izena hau da: /dev/volgroupxen/xenwinxp02
root@IMH01XEN01:~# lvcreate -L 10G -n xenwinxp02 volgroupxen
Logical volume "xenwinxp02" created
Orain snapshot-en dugun argazkia, sortu berri dugun bolumenean kopiatuko dugu. Denbora behar du, baina bukatzen denean dena kopiatuta izango dugu.
root@IMH01XEN01:~# dd if=/dev/volgroupxen/WindowsArgazkia of=/dev/volgroupxen/xenwinxp02
20971520+0 records in
20971520+0 records out
10737418240 bytes (11 GB) copied, 1070,87 s, 10,0 MB/s
Snapshot-etik beste LVM batera kopiatu beharrean irudia ISO fitxategi batera kopiatu nahi badugu, komandoa hau izango litzateke.
root@IMH01XEN01:~# dd if=/dev/volgroupxen/WindowsArgazkia of=/home/pedro/xenwinxp02.img
20971520+0 records in
20971520+0 records out
10737418240 bytes (11 GB) copied, 387,568 s, 27,7 MB/s
Hau egin ondoren gogoan izan bitartean erabili dugun snapshot hori ezabatzea:
root@IMH01XEN01:~# lvremove /dev/volgroupxen/WindowsArgazkia
Do you really want to remove active logical volume "WindowsArgazkia"? [y/n]: y
Logical volume "WindowsArgazkia" successfully removed
Egin dugunarekin makina birtual berriaren diskoa klonatu dugu. Zer falta zaigu ? Ba makina birtual berrirako XEN konfigurazio fitxategia sortzea. Horretarako, jatorrizko makinaren konfigurazio fitxategiaren kopia bat egingo dugu:
root@IMH01XEN01:/etc/xen# cp xenwinxp01.cfg xenwinxp02.cfg
Ondoren fitxategia editatu, eta erreferentziak ondo jarri:
root@IMH01XEN01:/etc/xen# cat xenwinxp02.cfg
kernel = '/usr/lib/xen/boot/hvmloader'
builder = 'hvm'
memory = 512
name = 'xenwinxp02'
vcpus = 1
vif = [ 'type=ioemu, bridge=xenbr0' ]
# cdrom = '/dev/sdc0'
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot='d'
sdl = 1
vnc = 0
# nographic=1 Makina martxan jartzerakoan leihoak ez abiarazteko
# eta horrela kontsolatik abiarazi ahal izango dugu
nographic = 1
disk = [ 'phy:/dev/volgroupxen/xenwinxp02,hda,w','phy:/dev/loop1,ioemu:hdc:cdrom,r']
device_model = '/usr/lib/xen/bin/qemu-dm'
usbdevice='tablet'
Orain makina birtuala martxan jarriko dugu:
root@IMH01XEN01:/etc/xen# xm create xenwinxp02.cfg
Using config file "./xenwinxp02.cfg".
Started domain xenwinxp02
Kontutan izan makina honek DHCP bidez hartuko duela IP helbidea, beraz DCHP zerbitzuak zein IP ematen dion begiratu, eta bere MAC helbidea erabiliz IP finko bat konfiguratuko diogu.
Azkenik, kontutan izan Windows birtual hau beste baten klona dela, beraz Windows birtual barruan PCaren izena aldatu egin behar dugu, jatorrizkoaren izen berdina baitauka, eta honek arazoak emango lituzke Windows sarean.
Hau ondo egiteko:
- PCaren Izena aldatu eta Dominiotik atera (Workgroup taldean sartuz).
- Berrabiarazi eta PCaren administratzaile lokalarekin sartu.
- Berriro dominioan sartu eta berrabiarazi (berriro ere).
Arazorik egon ez bada, Windows birtualaren klon birtuala erabiltzeko moduan zaude.
3.2. VMWARE-tik XEN-era makina birtuala migratu
Hasieran esan dugu VMWare-kin ere zerbait egina dugula. Orain dela ia bi urte Linux Debian baten gainean doako VMWare Server produktua instalatu genuen, eta instalazio horretan makina birtual batzuk genituen lanean. Makina hauek XEN-era migratzea erraza da.
Egin beharreko lehenengo gauza VMWare zerbitzarian (linux debian makina fisikoa) qemu instalatzea da:
vmware01:~# apt-get install qemu
Hau egin ondoren karpeta bat sortuko dugu bertan lan egiteko:
vmware01:/home/vmware# mkdir vmwaretoxen
vmware01:/home/vmware# cd vmwaretoxen/
vmware01:/home/vmware/vmwaretoxen#
Klonatzera goazen makina birtuala itzalita egon behar da, beraz lehenengo bertan sartu eta halt bat egin behar da. Ez badezu egiten, errorea emango du.
Ondoren klonatzen hasiko gera:
# vmware-vdiskmanager -r /home/vmware/VirtualMachines/DebianEtch/DebianEtch.vmdk -t 0 temporary_image.vmdk
Using log file /tmp/vmware-root/vdiskmanager.log
Creating a monolithic growable disk 'temporary_image.vmdk'
Convert: 100% done.
Virtual disk conversion successful.
Orain XEN-ekin bateragarria den IMG irudia sortuko dugu:
vmware01:/home/vmware/vmwaretoxen# qemu-img convert -f vmdk temporary_image.vmdk -O raw xen_bateragarria.img
Hau egin ondoren, lortu dugun xen_bateragarria.img klona Xen zerbitzari fisikora kopiatuko dugu scp bidez, eta XEN zerbitzarian erabili ahal izango dugu.
3.3. Linux zerbitzari fisiko bat birtual bihurtu
Demagun aspalditik instalatuta eta martxan duzun linux zerbitzari bat birtualizatu nahi duzula, baina arazoak dituzu zerbitzari horrek duen guztia berriro eskuz instalatzeko.
Aukera bat zerbitzari fisikoa birtualizatzea izan daiteke. Nik horretarako Virt-P2V tresna erabili dut, eta bat ere arazorik gabe hiru zerbitzari zahar XEN-era klonatu ditut.
Virt-P2V "Live CD" bat da, eta hau da egin beharreko guztia:
- Klonatu nahi duzun zerbitzarian CD-a sartu eta berrabiarazi.
- aterako zaizun menuan zure XEN zerbitzariaren IP helbidea sartu, ssh konexioa konfiguratu (erabiltzailea eta pasahitza) eta sortuko duen irudia XEN zerbitzarian non utzi behar duen esan (karpeta),
- kafetxo bat hartuz zain egon ssh bidez sistema klonatu arte. Bueno, denbora dexente beharko duenez, hobe kafe hori hartu eta lanean jarraitzea, seguru baduzula eta beste zereginik. ;-)
Ikusten duzuen moduan, oso erraza da.
Prozesu osoa bukatu ondoren, konfiguratu diozun XEN zerbitzariko karpetan bi fitxategi utziko dizkizu:
- Irudi bat IMG formatuan
- Konfigurazio xml bat.
Nik IMG irudia bakarrik erabiltzen det, eta sortu duen konfigurazio xml-a ezabatu egiten det. Lehen ikusi ditugun adibideak erabiliz, nik neuk sortzen det konfigurazio berri bat irudi hori XEN barruan erabiltzeko.
3.4. Zerbitzari birtual bat IMG formatutik LVM formatura bihurtu
Demagun zerbitzari birtual bat IMG irudi formatuan dugula eta nahiago dugula LVM formatuan izan. Hau da gure Hylafax fax zerbitzariaren kasua. Bere konfigurazio fitxategian begiratzen badegu, hau ikusiko dugu:
disk = [ 'tap:aio:/etc/xen/irudiak/XenHylafax20090126.img,hda,w']
Lehenengo bolumen logiko berri bat sortu IMG irudiak duen neurriarekin, gure kasuan 4,1 Gb:
#lvcreate -L 4,1G -n XenHylafax volgroupxen
Gero IMG horretan dagoen zerbitzari birtuala geratu kopia egiten jarri aurretik. Behin geratu dugunean, dd komandoa erabiliz kopiatu:
dd if= /etc/xen/irudiak/XenHylafax20090126.img of=/dev/volgroupxen/XenHylafax bs=16M
Kopia bukatzen denean, konfigurazio fitxategia aldatu eta lehen IMG irudia konfiguratuta zegoen lekuan, LVM bolumena jarri:
disk = [ 'phy:/dev/volgroupxen/XenHylafax,hda,w']
eta berriro makina birtuala arrankatu.
Erraza, ezta ?
3.5. Azkeneko ikutuak
root@IMH01XEN01:/etc/xen# ln -s /etc/xen/XenNagios.cfg /etc/xen/auto/Hau ez badugu jartzen, eskuz abiatu beharko ditugu makina birtualak
4. Kreditua, baimenak eta inkesta
4.1. Kreditua eta baimenak
Egilea: Pedro Arreitunandia
Data: 2009ko ekainaren 1a (2009ko abenduaren 9an publikatua)
Baimena: Creative Commons by-sa/2.0
Eskerrak eman nahi dizkiot IBEX enpresako Iñigo Losada-ri irakatsi dizkigun guztiengatik.
Honi buruzko edozein iruzkin edo galdera egiteko, erantzun post honi.