Virtualitzant amb Linux I

Segurament coneixes la virtualització i és probable que hagis començat en aquest món des d’una màquina Windows amb VirtualBox i tota la pesca. Però si estàs a Linux hi ha una manera millor de fer-ho, tot i que té la seva teoria. En aquest post precisament explorarem això: la virtualització des de Linux amb KVM, Qemu i Libvirt (i virt-manager).

La virtualització és un procès pel qual, partint d’un hardware, es crea una abstracció i sobre aquesta capa d’abstracció podem crear màquines virtuals amb sistemes operatius, xarxes, dispositius d’emmagatzematge,… El software que fa d’interfície perquè les màquines virtuals accedeixin al hardware i tinguin els recursos físics que toca s’anomena hipervisor.

Val a dir que aquestes màquines virtuals són completament aïllades unes d’altres, tot i córrer sobre el mateix hardware.

Tot això potser sona una mica abstracte de moment però quedarà més clar al explicar el funcionament d’aquest.

  • Optimització de recursos

    Podem executar vàries màquines virtuals dins una sola màquina física i podem modificar els recursos que volem que tingui cada màquina virtual.

  • Flexibilitat i escalabilitat

    En qualsevol moment podem modificar els recursos de la màquina virtual sempre que tinguem recursos físics disponibles (augmentar la RAM o el número de processadors,…). També sol ser molt més senzill fer-ne backups, snapshots, i altres utilitats crítiques en servidors empresarials.

  • Aïllament i seguretat

    Com que les màquines són completament independents entre elles, si una queda compromesa o falla per qualsevol motiu no té perquè afectar al funcionament de les altres.

KVM està integrat al kernel de Linux, pel que aprofita directament les capacitats del kernel a l’hora de virtualitzar. Això ofereix un rendiment i una eficiència molt alts.

Combinant el rendiment de KVM amb la flexibilitat de QEMU, s’aconsegueix millor emulació de hardware i més compatibilitats per les màquines virtuals.

Libvirt ofereix una API unificada per la gestió de màquines virtuals, facilitant-ne la seva administració gràcies a altres eines que la utilitzen (com virt-manager).

Aquestes solucions són solucions més segures que altres alternatives. A més, compten amb una gran comunitat tant de desenvolupadors com d’usuaris i també consten de molta documentació. I un altre punt a favor és el cost, ja que totes aquests són de codi obert i gratuïtes.

Com a desavantatge, el més important seria la corba d’aprenentatge, ja que mentre altres com VirtualBox t’ho donen tot out-of-the-box, amb aquesta solució t’has d’instal·lar els paquets i configurar-t’ho tot tu mateix, i això requereix més coneixements del sistema i més temps.

KVM és una solució per virtualitzar en Linux que consta de dos drivers: un del kernel (kvm.ko) i un específic pel processador (kvm-intel.ko o kvm-amd.ko). Aquests mòduls permeten a Linux convertir-se en un hipervisor per executar diferents entorns virtuals amb un rendiment molt semblant al del hardware real. KVM gestiona l’accés al processador i a la memòria. És un hipervisor tipus 1 de baix nivell.

És un hipervisor de tipus 2, que s’executa com una aplicació. El principal objectiu d’aquest és emular recursos de hardware com discs durs, USB, vídeo,… És de més alt nivell que KVM.

QEMU pot treballar conjuntament amb KVM per aportar més flexibilitat a l’hora de virtualitzar.

Libvirt és una API que serveix per comunicar-se amb les solucions de virtualització KVM i QEMU. És l’abstracció de les altres dues, és a dir, una manera fàcil de comunicar-se amb elles.

És també genèrica i pot comunicar-se amb varies tecnologies a més de QEMU i KVM com Xen, LXC,…

  • virt-manager

    És una interfície gràfica que interactua amb Libvirt, de manera que com a usuaris podem administrar les màquines sense tocar una tecla.

  • virsh

    Seria l’equivalent a virt-manager però en CLI (línia de comandes).

Per més informació deixo link d’un vídeo molt interessant del creador octetz:

Això ha estat tot, si t’ha estat útil pots compartir-ho o deixar-me un comentari. Ens veiem al següent post!