piątek, 3 maja 2013

Parawirtualizacja (monitor maszyn wirtualnych) przy pomocy XEN na Debian Squeeze


Xen jest warstwą oprogramowania pracującego bezpośrednio na fizycznym sprzęcie komputera, zastępując tym samym system operacyjny. Na warstwie tak stworzonego oprogramowania możemy uruchomić wiele systemów operacyjnych jednocześnie. Xen wspiera obecnie m.in. Linuksa, NetBSD, Solaris czy Windows, które mogą pracować na nim równolegle, jako systemy goście. Xen pozwala na uruchomienie tych systemów nie tylko w trybie pełnej wirtualizacji lecz co najważniejsze w trybie parawirtualizacji, która jest obecnie jedną z najwydajniejszych technik wirtualizacji. Ponadto hypervisor Xen jest rozwijany na licencji GNU GPL, co pozwala na korzystanie z niego za darmo, również w celach komercyjnych.

Xen udostępnia dwa odmienne rodzaje wirtualizacji: pełną wirtualizację (wspieraną sprzętowo) oraz parawirtualizację, czyli tzw lekka wirtualizacja, która to jest flagową innowacją Xena.


W klasycznych technikach pełnej wirtualizacji VMM udostępnia dla VM wirtualny sprzęt identyczny z fizycznym. Dzięki temu maszyny wirtualne niejako „myślą”, że działają bezpośrednio na normalnym, fizycznym sprzęcie. Możemy uruchamiać je bez ich modyfikacji. Mogą być to więc dowolne systemy, zarówno Linux jak i MS Windows.

Do emulacji sterowników w trybie HVM, Xen korzysta (wewnętrznie) z innego projektu - QEMU, który to dostarcza wirtualnej maszynie emulowane sterowniki. Wszystkie instrukcje uprzywilejowane, takie jak: dostęp do pamięci, operacje dyskowe, komenda zatrzymania systemu, muszą być przechwytywane i zmodyfikowane tak, aby dotyczyły wyłącznie jednego środowiska. Przechwytywanie i programowa obsługa (emulacja) kompletu tych instrukcji jest realizowana programowo (a nie sprzętowo), co skutkuje słabą wydajnością tego rozwiązania.

Wykorzystywana jest przy użyciu nowych procesorów wspierających wirtualizację. Działa podobnie jak pełna wirtualizacja, z tym że instrukcje uprzywilejowane procesora nie muszą być emulowane programowo (co komplikuje i spowalnia obsługę wirtualnych maszyn), lecz są obsługiwane bezpośrednio przez procesor, który dzięki zaimplementowanemu wsparciu wirtualizacji zachowuje się tak, jakby był kilkoma procesorami działającymi równolegle. Wydajność tego rozwiązania jest więc dużo lepsza niż poprzedniego.

Jest tym co wyróżnia Xena spośród innych produktów. W odróżnieniu do pełniej wirtualizacji, technika parawirtualizacji osłabia nieco podejście tworzenia pełnej iluzji fizycznego sprzętu dla VM. W tym przypadku wirtualna maszyna ma dostęp do pewnej części rzeczywistych, fizycznych zasobów komputera poprzez specjalne API. Wszystkie odwołania do tych zasobów są jednak weryfikowane przez nadzorcę. API to zajmuje się podziałem fizycznych zasobów pomiędzy maszyny wirtualne. Aby VM potrafiła się komunikować z takim API, musi zostać wcześniej zmodyfikowana, tak aby „wiedziała”, że nie pracuje bezpośrednio na fizycznym sprzęcie.1 Po takiej modyfikacji nie będzie próbowała wykonywać zastrzeżonych poleceń samodzielnie, lecz przekaże je do API, instrukcje uprzywilejowane są parawirtualizowane. Wadą tego rozwiązania jest utrudnienie instalacji VM. Sterowniki urządzeń instalowanego systemu operacyjnego muszą potrafić współpracować z Xenem. Zaletą natomiast wysoka wydajność dzięki ograniczeniu środowiska, które trzeba symulować.


Przed zainstalowaniem Xena czyli nadzorcy (hypervisora) na sprzęcie, powinniśmy sprawdzić jakie udogodnienia wykorzystywane przez Xena wspiera procesor. Aby sprawdzić czy CPU wspiera rozszerzenie:
• PAE, wpisujemy w konsoli:

Jeśli egrep nic nie zwróci, oznacza to, że CPU może maksymalnie obsłużyć 4GB RAMu. Uniemożliwi nam to uruchomienie większej ilości VM na jednym komputerze.

• wsparcie wirtualizacji sprzętowej - instrukcje Intel-VT (VMX) lub AMD-V (SVM) (wirtualizacja sprzętowa):



 Inną metodą sprawdzenia czy w BIOSie zostały włączone opcje wirtualizacji jest wydanie komendy:



Jeśli wynikiem jest jedno lub kilka wystąpień hvm-*, oznacza to, że w BIOSie wirtualizacja jest aktywowana

 Sprawdzenia instrukcji w /proc/cpuinfo można dokonać jedynie przed instalacją hypervisora Xen, ponieważ tylko wtedy mamy dostęp do fizycznego procesora. Po uruchomieniu jądra Xen (hypervisora) w /proc/cpuinfo nie zobaczymy już rzeczywistego procesora. Flagi vmx/svm nie będą widoczne.

Ponad to Xen pracuje na platformach wieloprocesorowych oraz wspiera Hyper-Threading Technology.



1) Wymagania wstępne:

Zainstalujmy Debiana Squeeze, w wersji 64-bitowej, oczywiście procesor który posiadamy musi wspierać wirtualizację (inaczej nici z zainstalowania XEN'a), do tego nasz system nazwiemy server1.example.local, ustawmy IP na 192.168.0.100.

2) Instalacja XEN: 

apt-get install xen-hypervisor xen-linux-system xen-utils xenstore-utils xenwatch xen-tools

Poniższe kroki wykonujemy jeżeli instalujemy system jako maszynę wirtualną bez LVM (łączenie w partycje rozproszonych wolnych przestrzeni na dyku / dyskach, które mogą znajdować się w różnych lokacjach), jeżeli będzie to instalacja LVM te kroki pomijamy.


nano /etc/modules

dodajemy

loop max_loop=64

Następnie edytujemy

vi /etc/xen/xend-config.sxp

dodajemy / odkomentowujemy:

(network-script 'network-bridge antispoof=yes')

Pozostałe wiersze zawierające network-script komentujemy

(vif-script vif-bridge)

następnie

reboot

po uruchomieniu sprawdzamy czy XEN się poprawnie zainstalował:

uname -r



Startujemy XEN

xm dmesg

Jeżeli dostaniemy w odpowiedzi coś takiego:


WARNING! Can't find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?

Oznacza to, że XEN działa, ale nie będziemy mogli uruchomić maszyn wirtualnych. Dlatego wykonamy poniższe kroki:


mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2

ponownie reboot, oraz xm dmesg, powinniśmy uzyskać w odpowiedzi więc informacji na temat naszego środowiska:

XEN) Xen version 4.0.1 (Debian 4.0.1-2) (waldi@debian.org) (gcc version 4.4.5 (Debian 4.4.5-10) ) Wen May 01 14:04:06 UTC 2013
(XEN) Bootloader: GRUB 1.98+20100804-14
(XEN) Command line: placeholder
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 1 MBR signatures
(XEN)  Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN)  0000000000000000 - 000000000009f000 (usable)
(XEN)  000000000009f000 - 00000000000a0000 (reserved)
(XEN)  00000000000e0000 - 0000000000100000 (reserved)
(XEN)  0000000000100000 - 00000000affa0000 (usable)
(XEN)  00000000affa0000 - 00000000affae000 (ACPI data)
(XEN)  00000000affae000 - 00000000afff0000 (ACPI NVS)
(XEN)  00000000afff0000 - 00000000b0000000 (reserved)
(XEN)  00000000fec00000 - 00000000fec01000 (reserved)
(XEN)  00000000fee00000 - 00000000fef00000 (reserved)
(XEN)  00000000ff700000 - 0000000100000000 (reserved)
(XEN)  0000000100000000 - 0000000140000000 (usable)
(XEN) ACPI: RSDP 000FA310, 0014 (r0 ACPIAM)
(XEN) ACPI: RSDT AFFA0000, 0044 (r1 052608 RSDT1415 20080526 MSFT       97)
(XEN) ACPI: FACP AFFA0200, 0084 (r1 052608 FACP1415 20080526 MSFT       97)
(XEN) ACPI: DSDT AFFA0450, 960C (r1  1AAAA 1AAAA000        0 INTL 20051117)
(XEN) ACPI: FACS AFFAE000, 0040
(XEN) ACPI: APIC AFFA0390, 0080 (r1 052608 APIC1415 20080526 MSFT       97)
(XEN) ACPI: MCFG AFFA0410, 003C (r1 052608 OEMMCFG  20080526 MSFT       97)
(XEN) ACPI: OEMB AFFAE040, 0073 (r1 052608 OEMB1415 20080526 MSFT       97)
(XEN) ACPI: HPET AFFA9A60, 0038 (r1 052608 OEMHPET0 20080526 MSFT       97)
(XEN) ACPI: INFO AFFAE0C0, 0124 (r1 052608 AMDINFO  20080526 MSFT       97)
(XEN) ACPI: NVHD AFFAE1F0, 0284 (r1 052608  NVHDCP  20080526 MSFT       97)
(XEN) ACPI: SSDT AFFA9AA0, 028A (r1 A M I  POWERNOW        1 AMD         1)
(XEN) System RAM: 3839MB (3931388kB)
(XEN) Domain heap initialised
(XEN) Processor #0 15:11 APIC version 16
(XEN) Processor #1 15:11 APIC version 16
(XEN) IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 2600.088 MHz processor.
(XEN) Initing memory sharing.
(XEN) HVM: ASIDs enabled.
(XEN) HVM: SVM enabled
(XEN) AMD-Vi: IOMMU not found!
(XEN) I/O virtualisation disabled
(XEN) AMD: Disabling C1 Clock Ramping Node #0
(XEN) Total of 2 processors activated.
(XEN) ENABLING IO-APIC IRQs
(XEN)  -> Using new ACK method
(XEN) checking TSC synchronization across 2 CPUs:
(XEN) CPU#0 had -2 usecs TSC skew, fixed it up.
(XEN) CPU#1 had 2 usecs TSC skew, fixed it up.
(XEN) Platform timer is 25.000MHz HPET
(XEN) Allocated console ring of 16 KiB.
(XEN) Brought up 2 CPUs
(XEN) *** LOADING DOMAIN 0 ***
(XEN)  Xen  kernel: 64-bit, lsb, compat32
(XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x16ba000
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN)  Dom0 alloc.:   0000000138000000->000000013c000000 (921455 pages to be allocated)
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN)  Loaded kernel: ffffffff81000000->ffffffff816ba000
(XEN)  Init. ramdisk: ffffffff816ba000->ffffffff8323b600
(XEN)  Phys-Mach map: ffffffff8323c000->ffffffff83963b78
(XEN)  Start info:    ffffffff83964000->ffffffff839644b4
(XEN)  Page tables:   ffffffff83965000->ffffffff83986000
(XEN)  Boot stack:    ffffffff83986000->ffffffff83987000
(XEN)  TOTAL:         ffffffff80000000->ffffffff83c00000
(XEN)  ENTRY ADDRESS: ffffffff81509200
(XEN) Dom0 has maximum 2 VCPUs
(XEN) Scrubbing Free RAM: .done.
(XEN) Xen trace buffers: disabled
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen is relinquishing VGA console.
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 176kB init memory.
(XEN) MCE: MSR 417 is not MCA MSR
(XEN) MCE: MSR 417 is not MCA MSR 







3) Maszyny wirtualne:


Przy tworzeniu maszyn wirtualnych wykorzystamy napisane w PHP narzędzie xen-tools. Po instalacji mamy domyślną konfigurację naszych maszyn wirtualnych, oczywiście możemy to zmienić:

nano /etc/xen-tools/xen-tools.conf

Zmieńmy jedynie poniższe opcje, pozostałe możemy zostawić jako domyślne:


[...]
dir = /home/xen #Miejsca składowania obrazów maszyn
[...]
# lvm = vg0
[...]
dist   = `xt-guess-suite-and-mirror --suite` # Domyślne dystrybujce do zainstalowania
[...]
gateway    = 192.168.0.1
netmask    = 255.255.255.0
broadcast  = 192.168.0.255
[...]
passwd = 1
[...]
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
[...]
mirror = `xt-guess-suite-and-mirror --mirror`
[...]
serial_device = hvc0 #default
[...]
disk_device = xvda #default
[...]



Utworzymy katalog dla xen:

mkdir /home/xen

Utworzymy pierwszy wirtualny system:


xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev

W odpowiedzi powinniśmy otrzymać:


General Information
--------------------
Hostname       :  xen1.example.com
Distribution   :  squeeze
Mirror         :  http://ftp.de.debian.org/debian/
Partitions     :  swap            256Mb (swap)
                  /               4Gb   (ext3)
Image type     :  sparse
Memory size    :  256Mb
Kernel path    :  /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path    :  /boot/initrd.img-2.6.32-5-xen-amd64

Networking Information
----------------------
IP Address 1   : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
Netmask        : 255.255.255.0
Broadcast      : 192.168.0.255
Gateway        : 192.168.0.1


Creating partition image: /home/xen/domains/xen1.example.com/swap.img
Done

Creating swap on /home/xen/domains/xen1.example.com/swap.img
Done

Creating partition image: /home/xen/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /home/xen/domains/xen1.example.com/disk.img
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: udev
        File: /etc/xen-tools/role.d/udev
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done


Logfile produced at:
         /var/log/xen-tools/xen1.example.com.log

Installation Summary
---------------------
Hostname        :  xen1.example.com
Distribution    :  squeeze
IP-Address(es)  :  192.168.0.101
RSA Fingerprint :  81:d1:7a:44:3b:07:41:3a:0f:46:d5:d5:30:bc:26:43
Root Password   :  N/A


Jeżeli chcemy zainstalować inną dystrybucję wykonajmy poniższe polecenie:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu


Jeżeli chcemy użyć jako domyślnego jądra Ubuntu musimy zakomentować:
 kernel = /boot/vmlinuz-`uname -r` oraz initrd =/boot/initrd.img-`uname -r`

Powinniśmy mieć plik konfiguracyjny:

cat /etc/xen/xen1.example.com.cfg



#
# Configuration file for the Xen instance xen1.example.com, created
# by xen-tools 4.2 on Fri Mar 25 15:56:51 2011.
#

#
#  Kernel + memory size
#
kernel      = '/boot/vmlinuz-2.6.32-5-xen-amd64'
ramdisk     = '/boot/initrd.img-2.6.32-5-xen-amd64'

vcpus       = '1'
memory      = '256'

#
#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                  'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w',
                  'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w',
              ]


#
#  Physical volumes
#


#
#  Hostname
#
name        = 'xen1.example.com'

#
#  Networking
#
vif         = [ 'ip=192.168.0.101,mac=00:16:3E:E8:61:97' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'


Dodatkowo jeżeli mamy procesor dwu lub czterordzeniowy (czy też z większą ilością) możemy ustawić tak XEN'a aby wykorzystywał możliwości jakie dają:

nano /etc/xen/xen1.example.com.cfg

Odnajdujemy wiersz:

vcpus       = '1'

i zamieniamy '1' na 2, 4 lub inną wartość prezentującą liczbę rdzeni.

Startujemy naszą maszynę:

xm create /etc/xen/xen1.example.com.cfg

W odpowiedzi otrzymamy:


Using config file "/etc/xen/xen1.example.com.cfg".
Started domain xen1.example.com (id=1)

Możemy zalogować się do naszej maszyny poprzez konsole:

xm console xen1.example.com

lub poprzez SSH  przy pomocy 192.168.0.101

Możemy również sprawdzić jakie maszyny mamy uruchomione w naszym środowisku:

xm list

Otrzymamy w odpowiedzi (o ile mamy tylko jedną ):


Name                      ID   Mem VCPUs      State   Time(s)
Domain-0                  0  2811     2     r-----    137.2
xen1.example.com          1   256     1     -b----      1.7


Jeżeli chcemy wyłączyć maszynę:

xm shutdown xen1.example.com

Aby maszyna startowała automatycznie wraz ze starem systemu (głównego):


mkdir /etc/xen/auto
ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

Pozostałe ważne dla pracy przy XEN'ie polecenia:


xm create -c /path/to/config - Start maszyny wirtualnej,
xm shutdown - Zatrzymanie maszyny wirtualnej,
xm destroy - Wyłączenie maszyny, dość siłowe (tak jak przy wyciągnięciu wtyczki),
xm list - Wylistowanie wszystkich maszyn,
xm console -Zalogowanie się do maszyny,
xm help - Pomoc

Możemy wylistować maszyny stworzone przy pomocy:
xen-list-images

Wykonanie polecenie zawiera mało, ale za to ważne informacje:


Name: xen1.example.com
Memory: 256
IP: 192.168.0.101

To na tyle, jeżeli chodzi o instalowanie środowiska jako zwykłej maszyny. Dalej instalacja na dyskach LVM. 






4) Tworzenie maszyn z wykorzystaniem LVM'a:


Przechowywanie maszyn na zwykłych dyskach jest dobre jedynie w przypadku testów (czyli teraz:)), w środowisku produkcyjnym lepiej mieć możliwość rozszerzania przestrzeni dyskowej szczególnie w nagłych przypadkach, temu właśnie służy LVM (więcej po kliknięciu na link). Przyjmijmy że posiadamy dysk 500GB, z czego 100GB jest obecnie wykorzystywane, pozostała przestrzeń jest wolna, możemy ją wykorzystać do utworzenia na niej naszych maszyn. 

Możemy sprawdzić ja zajętość miejsca ma się na naszym dysku:

vgdisplay

Możemy sprawdzić bardziej dokładne informacje o naszym dysku:

lvdisplay

Teraz będziemy postępować podobnie jak przy tworzeniu zwykłych maszyn wirtualnych:


nano /etc/xen-tools/xen-tools.conf

[...]
# dir = /home/xen # Komentoujemy
[...]
lvm = vg0 3Usuwamy komentarz
[...]
dist   = `xt-guess-suite-and-mirror --suite` # Domyślnie instalowana dystrybucja
[...]
gateway    = 192.168.0.1
netmask    = 255.255.255.0
broadcast  = 192.168.0.255
[...]
passwd = 1
[...]
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
[...]
mirror = `xt-guess-suite-and-mirror --mirror`
[...]
serial_device = hvc0 #default
[...]
disk_device = xvda #default
[...]


Utwórzmy maszynę opartą na Debianie:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev 

Otrzymamy informacje na temat utworzonej maszyny:


eneral Information
--------------------
Hostname       :  xen1.example.com
Distribution   :  squeeze
Mirror         :  http://ftp.de.debian.org/debian/
Partitions     :  swap            256Mb (swap)
                  /               4Gb   (ext3)
Image type     :  full
Memory size    :  256Mb
Kernel path    :  /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path    :  /boot/initrd.img-2.6.32-5-xen-amd64

Networking Information
----------------------
IP Address 1   : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
Netmask        : 255.255.255.0
Broadcast      : 192.168.0.255
Gateway        : 192.168.0.1


Creating swap on /dev/vg0/xen1.example.com-swap
Done

Creating ext3 filesystem on /dev/vg0/xen1.example.com-disk
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: udev
        File: /etc/xen-tools/role.d/udev
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done


Logfile produced at:
         /var/log/xen-tools/xen1.example.com.log

Installation Summary
---------------------
Hostname        :  xen1.example.com
Distribution    :  squeeze
IP-Address(es)  :  192.168.0.101
RSA Fingerprint :  6b:88:61:9a:ea:8a:7b:0d:24:34:ae:ee:2e:75:d6:53
Root Password   :  N/A

Jeżeli chcemy utworzyć maszynę opartą na Ubuntu - Maverik:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu

Otrzymamy ponownie informację opisującą utworzoną maszynę. następnie możemy sprawdzić jak zmieniła się zajętość naszego dysku:

vdisplay 


--- Logical volume ---
  LV Name                /dev/vg0/root
  VG Name                vg0
  LV UUID                0dXvE5-gjHP-0q7c-qpq6-veOx-faSg-p11vUp
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                93.13 GiB
  Current LE             23841
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

  --- Logical volume ---
  LV Name                /dev/vg0/swap_1
  VG Name                vg0
  LV UUID                FqnT46-fLHS-NLqC-XGOR-fNPe-NYyT-TEw8bR
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                3.72 GiB
  Current LE             953
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1

  --- Logical volume ---
  LV Name                /dev/vg0/xen1.example.com-swap
  VG Name                vg0
  LV UUID                TIc1fp-Lfkm-Ulm9-ElaP-zM4F-LEjc-cVw2Jk
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                256.00 MiB
  Current LE             64
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:2

  --- Logical volume ---
  LV Name                /dev/vg0/xen1.example.com-disk
  VG Name                vg0
  LV UUID                ocZI2U-drBa-1iCC-DMy1-toWk-5hex-utJ4FA
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:3


Dodatkowo możemy sprawdzić w pliku konfiguracyjnym parametry naszej maszyny:

cat /etc/xen/xen1.example.com.cfg


#

# Configuration file for the Xen instance xen1.example.com, created
# by xen-tools 4.2 on Fri Mar 25 16:56:49 2011.
#

#
#  Kernel + memory size
#
kernel      = '/boot/vmlinuz-2.6.32-5-xen-amd64'
ramdisk     = '/boot/initrd.img-2.6.32-5-xen-amd64'

vcpus       = '1'
memory      = '256'

#
#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                  'phy:/dev/vg0/xen1.example.com-disk,xvda2,w',
                  'phy:/dev/vg0/xen1.example.com-swap,xvda1,w',
              ]


#
#  Physical volumes
#


#
#  Hostname
#
name        = 'xen1.example.com'

#
#  Networking
#
vif         = [ 'ip=192.168.0.101,mac=00:16:3E:E8:61:97' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'



Widzimy dwie partycje wykorzystywane przez maszynę (główną oraz swap):


disk        = [
                  'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w',
                  'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w',
              ]

Dodatkowo jeżeli mamy procesor dwu lub czterordzeniowy (czy też z większą ilością) możemy ustawić tak XEN'a aby wykorzystywał możliwości jakie dają:

nano /etc/xen/xen1.example.com.cfg

Odnajdujemy wiersz:

vcpus       = '1'

i zamieniamy '1' na 2, 4 lub inną wartość prezentującą liczbę rdzeni.

Startujemy naszą maszynę:

xm create /etc/xen/xen1.example.com.cfg

W odpowiedzi otrzymamy:

Using config file "/etc/xen/xen1.example.com.cfg".
Started domain xen1.example.com (id=1)

Możemy zalogować się do naszej maszyny poprzez konsole:

xm console xen1.example.com

lub poprzez SSH  przy pomocy 192.168.0.101

Możemy również sprawdzić jakie maszyny mamy uruchomione w naszym środowisku:

xm list

Otrzymamy w odpowiedzi (o ile mamy tylko jedną ):


Name                      ID   Mem VCPUs      State   Time(s)
Domain-0                  0  2811     2     r-----    137.2
xen1.example.com          1   256     1     -b----      1.7


Jeżeli chcemy wyłączyć maszynę:

xm shutdown xen1.example.com

Aby maszyna startowała automatycznie wraz ze starem systemu (głównego):


mkdir /etc/xen/auto
ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

Pozostałe ważne dla pracy przy XEN'ie polecenia:


xm create -c /path/to/config - Start maszyny wirtualnej,
xm shutdown - Zatrzymanie maszyny wirtualnej,
xm destroy - Wyłączenie maszyny, dość siłowe (tak jak przy wyciągnięciu wtyczki),
xm list - Wylistowanie wszystkich maszyn,
xm console -Zalogowanie się do maszyny,
xm help - Pomoc

Możemy wylistować maszyny stworzone przy pomocy:
xen-list-images

Wykonanie polecenie zawiera mało, ale za to ważne informacje:


Name: xen1.example.com
Memory: 256
IP: 192.168.0.101

W wolnej chwili postaram się jeszcze opisać, najważniejsze narzędzie całego systemu XEN czyli xen-tools.




Brak komentarzy:

Prześlij komentarz