Curs 4 - API de virtualizareelf.cs.pub.ro/saisp/wiki/_media/srisp_curs-04.pdfSRISP Curs 4, API de...

Post on 05-Jul-2018

243 views 0 download

transcript

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