Servidor de virtualització KVM sobre Ubuntu

De Cacauet Wiki
Dreceres ràpides: navegació, cerca

Basat en Ubuntu Server 12.04. Avantatges:

  • Funciona out-of-the box a l'instal·lació (servidor de virtualització)
  • Free software
  • Té interfície gràfica virt-manager
  • Relativament fàcil de configurar amb RAID i LVM per seguretat i backups.

Hi ha altres opcions:

  • VMware (pagant)
  • Debian (possibles problemes de drivers?)
  • Proxmox/Debian: gestió via web molt potent però complicat per instal·lar-ho amb RAID i LVM (seguretat).


Servidor[modifica]

  • Màquina host: Ubntu Server LTS (sense entorn gràfic).
  • És important configurar la xarxa en Bridge per poder-nos connectar a la màquina en mode gràfic si ens cal (per exemple per un Windows XP i demés).
  • Seguretat:
  • Per configurar els sistemes de seguretat és millor fer-ho a l'instal·lació del SO:
    • Crear particions iguals als 2 discs sense punt de muntatge ( /dev/sda1, /dev/sdb1, /dev/sda2, ...)
      Es recomana 3 particions mínimes a cada disc que farem servir després pel root (/), intercanvi i dades.
    • Crear RAIDs software aparellant les particions pertinents ( /dev/md0 = sda1+sdb1 , /dev/md1 = sda2+sdb2 , ... )
    • Crear volum físic LVM per la partició de dades (vol1).
    • Crear volum lògic (vol1) i posar-ho a l'arrel (/vol1). Pot ocupar tot l'espai de md1
      MOLT IMPORTANT: el volum lògic NO pot ocupar tot l'espai del volum físic. Hem de deixar un espai sense utilitzar per poder realitzar més tard el snapshot.

La via fàcil: snapshots amb imatges qcow2[modifica]

Si utilitzem imatges qcow2 és molt còmode fer snapshots del nostre disc virtual.

http://wiki.qemu.org/Documentation/CreateSnapshot

En realitat és això:

$ qemu-img create -f qcow2 -b centos-cleaninstall.img snapshot.img

Script backup amb snapshot LVM (per imatges RAW)[modifica]

Amb imatges de disc virtual tipus RAW no podem fer snapshots. Per poder-ho fer, podem utilitzar la funcionalitat de snapshot del sistema d'arxius LVM.

Suposant que tenim el volum lògic a /vol1 , crearem un snapshot i el copiarem a la màquina remota. Finalment desfarem el snap.

# creem snapshot del volum (15GB pero es pot fer de mes si cal)
lvcreate -s -n snap -L 15g vol1/vol1
# muntem el snap per copiar
mount /dev/vol1/snap /mnt
# timestamp inici
touch /mnt/inici_backup.txt
scp /mnt/inici_backup.txt root@backupserver:/path/to/backup/dir
# backup (-C per comprimir la imatge)
scp -C /mnt/vm1.img root@backupserver:/path/to/backup/dir
# desfem el snapshot
umount /mnt
lvremove -f /dev/vol1/snap

Millorant backups amb sparse files[modifica]

Sparse files és un mode de storage que permet que els espais amb zeros no es guardin al disc, ocupant menys espai real (encara que al fer un ls ens digui l'espai reservat del fitxer, ocuparà menys espai real).

Aquests articles ens poden ajudar:

Així, aquest mode ens ajudarà a fer una còpia de la imatge del disc virtual ocupada, i no tot el disc "pre-alocat" que tenim per la VM.

Val a dir que el format qcow2 ja ho fa sol.

Sembla ser que NFS permet la gestió d'aquests arxius sparse. Rsync també ho permet mitjançant algunes opcions, i scp no ho permet.

Finalment sembla aconsellable muntar una carpeta NFS remota per transferir el sparse file de la imatge de disc.

Primer cal omplir de zeros (i buidar-los després) del disc de la VM (oju): (veure el 1r article)

# dd if=/dev/zero of=zerofile bs=100M
# sync
# rm zerofile

Muntem un directori per NFS com s'indica aquí: https://help.ubuntu.com/12.04/serverguide/network-file-system.html

Directori NFS a /mnt/remotebackup

I podem fer un script, similar a l'anterior, per copiar la imatge al servidor remot. A més, afegirem un control del volum NFS remot (no s'executarà si hi ha algun error). Abans caldrà instal·lar el patquet rpcbind per disposar de la instrucció rpcinfo:

# comprovar que la connexio NFS esta disponible
# substituir amb la IP de la maquina remota de backups pertinent
rpcinfo -t 10.5.5.55 nfs > /dev/null 2>&1
if [ $? -eq 0 ]; then
  echo Connexió NFS extern per backups disponible, endavant amb la copia.
else
  echo Connexio NFS extern erroni. Abortant operacio.
  exit
fi
# creem snapshot del volum (15GB pero es pot fer de mes si cal)
lvcreate -s -n snap -L 45g vol1/vol1
# muntem el snap per copiar
mount /dev/vol1/snap /mnt/snap
# timestamp inici
touch /mnt/remotebackup/inici_backup.txt
# backup
cp --sparse=always /mnt/snap/vm1.img /mnt/remotebackup
# timestamp final
touch /mnt/remotebackup/final_backup.txt
# desfem el snapshot
umount /mnt/snap
lvremove -f /dev/vol1/snap

NOTA: Està clar que sparse files millorarà l'espai ocupat per la còpia, però no està tan clar pel què fa a la velocitat de la operació global per la transferència NFS. Potser seria més eficient utilitzant RSYNC.

Client (Desktop)[modifica]

Ara és molt fàcil, només cal instal·lar:

  • virt-manager : GUI pel Desktop (gestió molt més fàcil)
    # apt-get install virt-manager

Links antics (amb l'anterior ja va):

Inicialització[modifica]

  • Posar a l'usuari principal del servidor KVM dins el grup libvirt (així podrem gestionar remotament les VMs).
  • Iniciar virt-manager al client i configurar connexió per ssh.
  • Crear storage al vol1 (volum lògic de dades).
  • Anul·lar el storage per defecte (no podriem fer backups i estaria a la mateixa partició que el sistema).
  • Crear VMs, vigilant:
    • Xarxa virtual ha d'apuntar a br0, si no estarà en NAT i serà inaccessible als clients.
    • Les imatges de HDD han d'estar al vol1 (vigilar storage) per poder fer backups en calent després.