Curs 4API de virtualizare
Servicii de ret,ea pentru ISP
18 martie 2010
SRISP Curs 4, API de virtualizare 1/29
Outline
Virtualizare
libvirt
VIX API
Concluzii
Intrebari
SRISP Curs 4, API de virtualizare 2/29
Not, iuni de virtualizare (recapitulare)
I nod (host node, hardware node)
I hypervisor
I mas, ina virtuala (guest)
I paravirtualizare, virtualizare completa, emulare
I virtualizare cu suport hardware, virtualizare la nivelul SO
SRISP Curs 4, API de virtualizare 3/29
Solut, ii de virtualizare
I VMware Workstation, Server, VirtualBox, VirtualPC
I Xen, VMware ESX, Hyper-V, Oracle VM
I OpenVZ, lxc, Linux V-Server, Container/Zone
I KVM, qemu, UML
SRISP Curs 4, API de virtualizare 4/29
Interfet,e de gestiune a solut, iilor de virtualizare
I graficeI integrate ın cadrul aplicat, iei (VMware, VirtualBox)I Virtual Machine Manager (libvirt Python)I Proxmox Virtual Environment
I CLII qemuI vzctlI virsh (libvirt)I vmware-cmd
SRISP Curs 4, API de virtualizare 5/29
API de virtualizare
I automation API
I VMware VIX API
I VirtualBox API
I Xen API
I libvirt
SRISP Curs 4, API de virtualizare 6/29
Outline
Virtualizare
libvirt
VIX API
Concluzii
Intrebari
SRISP Curs 4, API de virtualizare 7/29
libvirt
I interact, iune cu solut, ii de virtualizare (ın principal Linux)
I C API, binding-uri ın alte limbaje
I suport init, ial/principal pentru Xen, Qemu, KVM
I suport pentru LXC, OpenVZ, VMware ESX/GSX, VirtualBox(drivere)
I daemon de control (libvirtd) acolo unde este cazul – nuexista hypervisor (Qemu, KVM)
SRISP Curs 4, API de virtualizare 8/29
Instalare
I # apt-get install libvirt0 libvirt-bin
libvirt-dev libvirt-doc virtinst
I libvirt-bin – daemon libvirt(/etc/default/libvirt-bin)
I virtinst – comenzi pentru creare/clonare de mas, ini virtuale
SRISP Curs 4, API de virtualizare 9/29
Connection URI
I identificarea driverului s, i, eventual, a sistemului de la distant, a
I test:///default – test
I xen:/// – Xen
I qemu:///system, qemu:///session – Qemu, KVM
I openvz:///system – OpenVZ
I openvz://example.com/system – remote connection
SRISP Curs 4, API de virtualizare 10/29
Drivers
I delegarea implementarii unui driver specifici unei solut, ii devirtualizare
I selectat pe baza URI-ului
I Xen, QEMU, LXC, test, OpenVZ, VirtualBox, VMware ESX,OpenNebula
SRISP Curs 4, API de virtualizare 11/29
virsh
I interfat, a de comanda a mas, inilor virtuale
I construita peste libvirt
I virsh <command> <domain-id>
I $ sudo virsh -c openvz:///system list
I $ sudo virsh -c openvz:///system
Welcome to virsh, the virtualization interactive
terminal.
...
I comenzi utile: start, shutdown, reboot, create, setmem,setvcpus, console
SRISP Curs 4, API de virtualizare 12/29
Basic API
I virConnectPtr – structura de date pentru conexiuni
I virDomainPtr – structura de date pentru domenii
I virErrorPtr – pentru lucrul cu errori
I import libvirt – Python
I #include <libvirt/libvirt.h>, #include<libvirt/virterror.h> – C
SRISP Curs 4, API de virtualizare 13/29
Python example
1 import libvirt
2 import sys
3
4 # check /usr/share/pyshared/libvirt.py5
6 if name ==’ main ’:
7 conn=libvirt.open(’openvz:///system’)
8 print ’Listing running domains’
9 for id in conn.listDomainsID():
10 dom = conn.lookupByID(id)
11 print "id: ", id, "name: ", dom.name()
12
13 dom = conn.lookupByID(100)
14
15 print "stopping domain 100 ... ",
16 sys.stdout.flush()
17 dom.shutdown()
18 print "done"
19
20 print "starting domain 100 ... ",
21 sys.stdout.flush()
22 dom.create()
23 print "done"
SRISP Curs 4, API de virtualizare 14/29
C example
I Demo
SRISP Curs 4, API de virtualizare 15/29
C example Makefile
1 CFLAGS = -Wall -g
2 LDLIBS = -lvirt
3
4 all: openvz-list-start-stop
5
6 openvz-list-start-stop: openvz-list-start-stop.o
7
8 openvz-list-start-stop.o: openvz-list-start-stop.c
9
10 clean:11 -rm -f openvz-list-start-stop openvz-list-start-stop.o *∼
SRISP Curs 4, API de virtualizare 16/29
Outline
Virtualizare
libvirt
VIX API
Concluzii
Intrebari
SRISP Curs 4, API de virtualizare 17/29
VIX API
I http://www.vmware.com/support/developer/vix-api/
I VMware Virtualization API
I automatizare, gestiune s, i interact, iune cu mas, inile virtuale
I VMware ESX/GSX, Workstation, Player, vCenter
I C, Perl, COM (Visual Basic, C#)
I Linux & Windows
I versiunea 1.8, 1.10 beta
SRISP Curs 4, API de virtualizare 18/29
Instalare
I descarcare de pe site-ul VIX API (trebuie sa va ınregistrat, i)
I sudo bash VMware-VIX-1.8.1-207905.x86_64.bundle
I pentru dezinstalare: vmware-installer -u vmware-vix
I pentru operat, ii de interact, iune este nevoie de VMware Toolspe sistemul guest
I instalat ın /usr/lib/vmware-vix/
I documentat, ie s, i exemple ın /usr/share/doc/vmware-vix/
I acces local la documentat, ie:file:///usr/share/doc/vmware-vix/index.html
SRISP Curs 4, API de virtualizare 19/29
Interfat,a CLI
I similara virsh – permite gestiunea mas, inilor virtualeI vmware-cmd
I pentru versiuni serverI doar pentru gestiune (pornire, oprire, adaugare de discuri)I nu ofera comenzi de interact, iune cu sistemul guest
I vmrunI construita peste VIX APII gestiunea completa s, i interact, iunea cu mas, inile virtuale
SRISP Curs 4, API de virtualizare 20/29
Funct, ionalitat, i VIX API
I identificarea mas, inii virtuale se realizeaza prin caleacompleta catre fis, ierul .vmx
I listare mas, ini virtuale porniteI vmrun -T ws list
I pornirea mas, inii virtualeI vmrun -T ws start /path/to/vmx
I oprirea mas, inii virtualeI vmrun -T ws stop /path/to/vmx
I snapshotI vmrun -T ws snapshot /path/to/vmx snapshotName
I listarea proceselor dintr-o mas, ina virtualaI vmrun -T ws -gu username -gp password
listProcessesInGuest /path/to/vmx
SRISP Curs 4, API de virtualizare 21/29
VIX API – Not, iuni de baza
I object-based, se folosesc handle-uri (VixHandle)
I VixHost_abcd – operat, ii pe host
I VixVM_abcd – operat, ii pe guest
I operat, ii asincrone – folosire VixJob_Wait pentru
I VixError, VixJob_GetError, Vix_GetErrorText as, teptare
SRISP Curs 4, API de virtualizare 22/29
Elemente VIX API
I succesiunea obis,nuita a operat, iilorI VixHost_RegisterVMI VixHost_ConnectI VixVM_PowerOnI VixVM_LoginInGuestI work, workI VixVM_LogoutFromGuestI VixVM_PoweroffI Vix_ReleaseHandleI VixHost_UnregisterVM
SRISP Curs 4, API de virtualizare 23/29
Makefile pe Linux
1 CFLAGS = -Wall -g
2 CPPFLAGS = -I/usr/include/vmware-vix
3 LDLIBS = -lvixAllProducts -ldl
4
5 all: powerOn
6
7 powerOn: powerOn.c
8
9 clean:10 -rm -f powerOn powerOn.o *∼
SRISP Curs 4, API de virtualizare 24/29
Exemplu C
I demo din samples
SRISP Curs 4, API de virtualizare 25/29
Outline
Virtualizare
libvirt
VIX API
Concluzii
Intrebari
SRISP Curs 4, API de virtualizare 26/29
Cuvinte cheie
I virtualizare
I interfet,e de gestiune a MV
I API de virtualizare
I libvirt
I connection URI
I virsh
I libvirtd
I virConnectPtr,virDomainPtr
I VIX API
I vmware-cmd
I vmrun
I fis, ier .vmx
I handle de VIX API
SRISP Curs 4, API de virtualizare 27/29
Link-uri utile
I http://libvirt.org/
I http://www.ibm.com/developerworks/linux/library/
l-libvirt/
I http://www.vmware.com/support/esx21/doc/
vmware-cmd.html
I http:
//www.vmware.com/pdf/vix180_vmrun_command.pdf
I http://www.vmware.com/support/developer/vix-api/
I http://www.vmware.com/support/developer/vix-api/
vix18_reference/
SRISP Curs 4, API de virtualizare 28/29
Outline
Virtualizare
libvirt
VIX API
Concluzii
Intrebari
SRISP Curs 4, API de virtualizare 29/29
Top Related