Diferència entre revisions de la pàgina «Servidor de virtualització KVM sobre Ubuntu»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «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-manag…».)
 
 
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren)
Línia 18: Línia 18:
 
** Xarxa: https://help.ubuntu.com/community/KVM/Networking#Creating_a_network_bridge_on_the_host
 
** Xarxa: https://help.ubuntu.com/community/KVM/Networking#Creating_a_network_bridge_on_the_host
 
* Seguretat:
 
* Seguretat:
** RAID: per si falla un disc
+
** RAID: per si falla un disc. RAID1 és la opció més senzilla
 +
*** Comandes RAID1: [[RAID]]
 
*** comandes mdadm i per saber l'estat <pre>$ cat /proc/mdstat</pre>
 
*** comandes mdadm i per saber l'estat <pre>$ cat /proc/mdstat</pre>
 
*** resize: http://www.evilbox.ro/linux/ubuntu-raid1-resize/
 
*** resize: http://www.evilbox.ro/linux/ubuntu-raid1-resize/
Línia 24: Línia 25:
 
*** https://wiki.ubuntu.com/Lvm
 
*** https://wiki.ubuntu.com/Lvm
 
*** https://help.ubuntu.com/community/SettingUpLVM-WithoutACleanInstall
 
*** https://help.ubuntu.com/community/SettingUpLVM-WithoutACleanInstall
 +
*** Mirar el script al final per fer els backups
 
* Per configurar els sistemes de seguretat és millor fer-ho a l'instal·lació del SO:
 
* 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, ... )
+
** 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.
 
**: 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 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 físic LVM per la partició de dades (vol1).
** Crear volum lògic (vol1) i posar-ho a l'arrel (/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 ===
 +
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) ===
 +
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.
 +
<syntaxhighlight lang="bash">
 +
# 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
 +
</syntaxhighlight>
 +
 
 +
=== Millorant backups amb sparse files ===
 +
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:
 +
* http://rwmj.wordpress.com/2010/10/19/tip-making-a-disk-image-sparse/
 +
* http://serverfault.com/questions/66338/how-do-you-synchronise-huge-sparse-files-vm-disk-images-between-machines
 +
 
 +
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 <u>de la VM</u> (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 <code>rpcbind</code> per disposar de la instrucció <code>rpcinfo</code>:
 +
<syntaxhighlight lang="bash">
 +
# 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
 +
</syntaxhighlight>
 +
 
 +
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) ==
 
== Client (Desktop) ==

Revisió de 16:34, 27 oct 2014

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.