Virtualizálás Xen-nel Ubuntu 8.04.1 Server-en

2008-09-04 18:46:02
Címkék: xen , ubuntu

Ebben a leírásban nem szentelnék túl sok felesleges szót a Xen elméletére, arra vannak bőven máshol dokumentációk. Itt most a közepébe vágunk, és néhány paranccsal építünk egy virtualizált környezetet. Aztán pedig egy-két használati tapasztalatot írok le.

A kiindulási alap egy teljesen egyszerű Ubuntu 8.04.1 Server disztribúció, OpenSSH szerverrel megtoldva. Alább vázolom, hogy az általam telepített rendszer alatt hogyan van partícionálva a HDD:

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x0000a987

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *         256      262400      131072+  83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2          262656     8651264     4194304+  83  Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3         8651520    17040128     4194304+  82  Linux swap / Solaris
/dev/sda4        17040384   488397056   235678336+   5  Extended
/dev/sda5        17040640   488397056   235678208+  83  Linux

A listán látszik, hogy az 1-es és 2-es partíciókkal problémázik, mert nem a cylinder-hez igazodnak. Ennek egy oka van: a partíciókat 128k-s blokkokhoz igazítottam. Ez azért lehet praktikus, mert a hardveres RAID-ek chunk mérete is beállítható erre az értékre, és így elkerülhető például az, hogy a partíciók blokkjai két külön chunk-ra kerüljenek. A két külön chunk-on elhelyezkedő blokk a redundancia biztosításánál overhead-et jelenthet (mivel nem elég egy chunk-ot kiírni, illetve paritást számolni, egyből kettőt kell).

Továbblépve ezen a kis kitérőn: a rendszernek 4 GB helyet hagytam, mégpedig azért, hogy véletlenül se tudjam semmilyen egyéb nem oda való programmal teleszemetelni, a Xen-nek pedig elég ennyi. Még mielőtt valakinek eszébe jutna, hogy "jaj, nem lesz hely a virtuális lemezeknek", az felejtse el gyorsan, hogy naplózó fájlrendszerre tesz egy másik fájlrendszert, ez ugyanis bőséges overhead-et okozna. Ehelyett LVM-mel szolgáljuk ki majd a guest-eket, az amúgy is flexibilis, méretezhető, és nem hordozható nehezebben, mint egy sima fájl a fájlrendszerünkben.

Két dolog tehát eddig biztosan kell: Xen és LVM2.

# apt-get install ubuntu-xen-server lvm2
# reboot
...
# uname -a
Linux xen01 2.6.24-19-xen #1 SMP Sat Jul 12 00:15:59 UTC 2008 x86_64 GNU/Linux

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1878     2     r-----     13.1

Ezentúl az xm parancsot (xen-manage?) fogjuk használni arra, hogy a virtuális gépeinket kezeljük.

Most pedig hozzunk létre egy LVM volume-ot az első guest-ünknek. Előbb persze kell egy PV (physical volume), amibe tennünk kell egy VG-t (volume group), és csak azután lehet LV-t létrehozni (logical volume), előbbi kettőt csak első esetben kell létrehozni. Ez a három kétbetűs rövidítés hasznunkra lesz a későbbiekben, ha hozzá tesszük az alábbi kulcsszavakat is: display, scan, create, extend, remove, s. Tehát [pv|vg|lv]scan, [pv|vg|lv]s, stb.

# pvcreate /dev/sda5
# vgcreate -s 128m vg01 /dev/sda5
# lvcreate -l 32 -n lv-guest01 vg01

Lám, most már van egy lemezünk, véletlenül pont 4 GB-os (32128m), amit szimpla partícióként kezelhetünk, akár egy */dev/sda1-et. Például tehetünk rá egy ext3-as fájlrendszert rögtön:

# mkfs.ext3 /dev/vg01/lv-guest01
# mount /mnt/guest01 /dev/vg01/lv-guest01
# df -h

A Xen alapvetően nem úgy működik, mint egy VMWare, hogy ad a kezedbe egy grafikus felületet, emulálja a BIOS-t, sőt még a setup-ba is belemehetsz - nem, itt ilyenről nincs szó (de ettől függetlenül lehetséges vele akár Windows-t is futtatni, csak az egy másik leírás lesz...). A Xen vár tőlünk néhány fontos paramétert (szerencsére tárolhatjuk ezt egy config-fájlban is), azután elindítja a guest-et. Az egyik ilyen paraméter, hogy melyik diszken találja a rendszert - ebből következik, hogy itt nincs értelme boot partícónak sem. A lemez egyelőre a korábban létrehozott lv-guest01 azonosítójú LV lesz.

Mivel a lv-guest01 már ext3, fel van mountolva, az alaprendszert a debootstrap-pel "telepítjük".

# cd /mnt/guest01
# debootstrap --arch amd64 hardy /mnt/guest01 http://hu.archive.ubuntu.com/ubuntu

Ezzel már van egy alaprendszerünk, de még nem teljes funkcionalitású, a beállításokhoz az alábbi lépéseket javasolt elvégezni:

# mount --bind /dev /mnt/guest01/dev
# mount -t proc proc /mnt/guest01/proc
# cp /etc/resolv.conf /mnt/guest01/etc/resolv.conf
# cp /etc/network/interfaces /mnt/guest01/etc/network/interfaces
# cp /etc/apt/sources.list /mnt/guest01/etc/apt/sources.list
# mcedit mnt/guest01/etc/hostname
# cp -r /lib/modules/`uname -r` /mnt/guest01/lib/modules/`uname -r`
# chroot /mnt/guest01/ /bin/bash
# apt-get update
# apt-get upgrade
# apt-get install ssh 
# echo -e "/dev/sda1\t/\text3\tdefaults\t1\t2\n" >> /etc/fstab
# passwd
# exit

A rendszer már képes működni, viszont van még egy-két konfig fájl, amit érdemes ízlés szerint szerkeszteni: /etc/network/interfaces, /etc/hostname. Ha ezek megvannak, akkor umount-oljuk a fájlrendszert.

# umount /mnt/guest01/dev /mnt/guest01/proc
# umount /mnt/guest01

Most pedig kell egy paraméterfájl (pl. /mnt/guest01.xen), amit a Xen-nek fogunk átadni, hogy tudja, milyen paraméterekkel futtassa a rendszert, ez körül-belül így néz ki:

kernel      = '/boot/vmlinuz-2.6.24-19-xen'
ramdisk     = '/boot/initrd.img-2.6.24-19-xen'
memory      = '256'

root        = '/dev/sda1 ro'
disk        = [
        'phy:/dev/vg01/guest01,sda1,w',
]

name        = 'guest01'

vif         = [ 'ip=10.0.0.1,mac=00:16:3E:00:00:01' ]

on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
vcpus       = '1'
extra = 'xencons=tty1'

A paraméterek pontos jelentését a Xen manual bizonyára részletesen is elmagyarázza, egy-két fontosabb:

  • memory - a guest által használható memóriamennyiség MB-ban
  • vcpus - a guest által használható virtuális CPU szám
  • kernel - megadható más elérési út is, de akkor figyelni kell arra, hogy a /lib/ ennek megfelelően legyen feltöltve

A rendszer az alábbi parancssal índítható:

# xm create /mnt/guest01.xen

A fenti parancs a háttérben indítja el a guest-et, de lehetőségünk van átvenni a konzolját:

# xm console guest01

Vagy pedig már úgy indítjuk, hogy átvesszük a konzolját (-c kapcsolóval):

# xm create /mnt/guest01.xen -c

Hozzászólás

Olcsó asztali órás rádió Androidból

2017-04-14 22:36:00
14

Konzol kimenet színezés

2017-01-06 13:08:37
0

Windows Event Log bedolgozás MSSQL adatbázisba [update 1]

2015-04-30 22:23:52
0

Az internetadó margójára

2014-11-01 10:39:57
0

A C4nn0N logó

2014-07-26 20:50:32
0

Virtualizálás Xen 4.4-gyel Ubuntu 14.04 alatt (64 bit)

2014-04-30 09:46:38
1

Xen és XenServer előadás

2014-04-17 06:11:00
0

HLDS-V8: Javascripttel programozható HLDS (CS 1.6)

2014-03-15 09:33:53
0

Node.js lazy hibakezelés

2013-08-19 22:08:35
0

Office 2013 animáció kikapcsolása

2013-07-02 08:31:35
1

Node.js ékezetes szövegbevitel konzolból / parancssorból

2013-06-27 07:41:54
0

Egy Counter Strike szerver üzemeltetési tapasztalatai

2013-05-17 14:21:14
7

Hogyan tegyünk grafikus felületet Ubuntu 10.04 Serverre?

2013-05-07 08:19:05
2

Torrent tracker node.js-ben 65 sorban

2013-04-28 10:23:25
0

Hányadik vagyok a Google-ben?

2013-04-24 09:09:01
0

Virtualizálás Xen 4.1-gyel Ubuntu 12.04 alatt (64 bit)

2013-01-22 08:58:15
2

Cloud Backup - Ments a felhőbe

2012-05-02 21:46:13
0

VIP plugin CS 1.6-hoz

2012-04-22 16:35:07
7

Ki az az admin?

2012-03-17 23:45:04
0

Csináltam egy blogot

2011-12-09 15:32:11
2

Az IT szabályozásokról

2009-09-01 17:30:58
0

Twitter - IRC gateway, avagy hogyan twitteljünk irc protokollon

2009-06-05 09:51:47
0

Hogyan lehet blokkolhatatlan hirdetéseket elhelyezni egy weblapon?

2008-10-28 10:56:30
11

Virtualizálás Xen-nel Ubuntu 8.04.1 Server-en

2008-09-04 18:46:02
0

Hogyan tegyünk grafikus felületet Ubuntu 8.04 Serverre?

2008-05-19 20:02:29
0

FAR Manager kedvcsináló I.

2008-05-02 11:41:02
0

Far Manager 1.80 - Open Source

2008-01-04 21:11:19
0

IBM DB2 9.5 Express install Ubuntu 7.10 Serverre

2007-12-19 10:35:03
0

IBM Websphere Application Server 6.1.0.3 Express és WAS Plugin install Ubuntu 7.10 Serverre

2007-12-19 10:33:27
0

Hogyan tegyünk grafikus felületet Ubuntu 7.10 Serverre?

2007-12-11 22:00:17
0

Warezolás, gazemberség?

2007-11-20 21:01:00
0

iSCSI Target és Initiator installálása Ubuntu 6.06.1 LTS-re

2007-10-13 18:23:40
0

Oracle 11g R1 install Ubuntu 6.06.1-re

2007-08-18 14:13:04
0

How to install Oracle 11g R1 on Ubuntu 6.06.1 LTS

2007-08-18 14:13:04
0

Hogyan tegyünk grafikus felületet Ubuntu 6.06.1 Serverre?

2007-08-18 14:09:55
0

Apache2 - WebDAV - Ubuntu 6.06.1 - Windows XP kliens

2007-08-13 19:48:34
0

CVS beállítása Ubuntu 6.06.1-re

2007-05-21 19:39:32
0

IBM DB2 8.2 Express install Debian 4.0-ra (64 bit)

2007-05-15 20:21:33
0

IBM DB2 8.2 Express install Ubuntu 6.06.1-re

2007-05-09 20:47:34
0

Lemez olvasási/írási sebesség tesztelés linux alatt

2007-05-05 20:14:30
0

Oracle Applications tippek 1.

2007-05-03 20:47:55
0

Windows Event Log bedolgozás MSSQL adatbázisba

2007-04-30 21:06:33
0

Oracle tippek 1.

2007-04-30 17:20:25
0

MySQL automatikus backup készítés jelszó felfedése nélkül

2007-04-18 23:42:51
0

LVM - logikai lemezkezelés (skicc)

2007-04-15 19:28:33
0

Counter Strike 1.6 telepítése Ubuntu 6.06.1-re

2007-04-08 12:15:32
0