Questa è una configurazione molto breve e veloce su come rendere operativo il server KVM (The Linux Kernel Virtual Machine).
Perché KVM?
KVM è un hypervisor, proprio come VmWare ESX, Hyper-V e XEN di Microsoft. La cosa grandiosa (come al solito) di KVM, è che fa parte di Linux, il che significa che è gratuito, e le sue prestazioni sono eccellenti. L'utilizzo in un ambiente di produzione come hypervisor autonomo è una scelta eccellente, ha un ingombro ridotto del server host (in termini di esigenze di prestazioni e disco) e può essere amministrato facilmente con altri strumenti come virt-manager.
Ipotesi
Questo breve tutorial presuppone che:- Vuoi eseguire un server KVM con almeno una macchina virtuale guest,
- Il tuo server KVM ottiene un indirizzo IP nella tua rete,
- Le tue macchine virtuali ottengono un indirizzo IP dalla tua rete, quindi puoi utilizzare il bridging invece del natting (l'utilizzo del NATting invece del bridging è un compito facile ma non fa parte di questo howto),
- Puoi usare lvm per l'allocazione dello spazio su disco sul tuo master KVM (anche l'uso di altri metodi di allocazione dello spazio su disco come i file di immagine è facile, ma non fa parte di questo howto) – nota che dovrai installarlo prima di passare attraverso di seguito, se non è già installato sul tuo server.
- Stai usando Ubuntu 10.04 o versioni successive. Dovrebbe essere un server Ubuntu aggiornato con connettività di rete e accesso tramite ssh.
Ringraziamenti
Questa è una breve guida che deve essere rinnovata e lo farà presto, tuttavia nel suo stato attuale è stata presa principalmente all'ingrosso da www.screenage.de, quindi grandi sostegni per l'autore originale, ccm. Sono state apportate modifiche minori per la leggibilità.
Fai funzionare la rete
Per la rete con bridge è necessario installare le utility bridge e modificare la configurazione della rete. Per prima cosa installa il pacchetto:$ sudo apt-get install bridge-utils |
$ sudo brctl addbr br0 |
# The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.1.100 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off |
Assicurati di non dimenticare di impostare "eth0" su "iface eth0 inet manual" come mostrato sopra. Questo è necessario perché vuoi impedire a eth0 di recuperare un indirizzo tramite dhcp ma vuoi comunque che sia lì per il tuo bridge poiché è il livello fisico. Dopo aver configurato il bridge, riavviare la rete (sudo /etc/init.d/networking restart ) o riavviare il server. Se stai già accedendo al tuo server tramite ssh, tieni presente che un'errata configurazione potrebbe bloccarti.
Installa KVM
Ora è il momento di installare kvm e alcune utili applicazioni di supporto:$ sudo apt-get install qemu-kvm ubuntu-vm-builder uml-utilities \ virtinst |
Questo è tutto:ora hai già un server kvm. È ora di...
Installa la tua prima macchina virtuale
Imposteremo un volume logico da 100 Gb per l'ospite, scaricheremo Ubuntu e creeremo una macchina con 2 Gb di Ram e 4 core:
# create an empty 100Gb logical volume sudo lvcreate --size 100G vg0 --name guest1 # download Ubuntu iso (or use one you already have) $ wget http://..../ # create machine $ sudo virt-install --connect qemu:///system -n guest1 -r 2048 \ --vcpus=4 -f /dev/mapper/guest1 --network=bridge:br0 \ --vnc --accelerate -v -c ./SOMEUBUNTUISO.iso \ --os-type=linux --os-variant=ubuntuKarmic --noautoconsole # please note: "ubuntuKarmic" is currently the most recent # virt-install defaults scheme - just use this if in doubt. |
Ottieni una connessione VNC
KVM utilizza VNC per darti un'interfaccia grafica per la tua macchina. La cosa buona di questo è che ti consente di utilizzare programmi di installazione grafici (e sì, anche Windows) senza problemi. Dato che anche il server Ubuntu si avvia in modalità grafica all'inizio, è fantastico usare VNC qui.
Presumo che tu stia lavorando su un server remoto. KVM offre a ogni ospite che avvia una nuova istanza vnc con una nuova porta incrementata. Inizia con 5900. Quindi eseguiamo il tunnel tramite ssh:
ssh user@remotekvmhost -L 5900:localhost:5900 |
Ti connetti al tuo host kvm remoto tramite ssh e apri una porta ssh tunnel fort 5900. Ora avvia il tuo client VNC preferito in locale e lascia che si connetta al display "0" o alla porta 5900 che significa lo stesso in VNC (duh...).
D'ora in poi dovresti vedere il tuo server su un display VNC. Installalo come se installassi tutti gli altri server. La rete è collegata, quindi potresti persino usare dhcp se è offerto nella tua rete.
Assicurati di installare il pacchetto "acpi" all'interno del tuo guest kvm, altrimenti non sarai in grado di fermare il guest dal master (come avviene tramite acpi):
# make sure, "acpi" is installed in the *guest* machine sudo apt-get install acpi |
Dopo l'installazione puoi gestire le tue gue kvm usando i seguenti comandi:
# list running instances $ virsh list # start an instance $ virsh start INSTANCENAME # stop an instance politely $ virsh stop INSTANCE # immediatly destroy a running instance $ virsh destroy INSTANCE # edit the config file for an instance $ virsh edit INSTANCE |
Montaggio dei volumi LVM
Come avrai notato, i volumi lvm del tuo ospite virtuale non possono essere montati direttamente nel master poiché contengono la propria tabella delle partizioni. Se hai bisogno di accedere al filesystem del guest dal master, però, devi creare alcuni nodi del dispositivo. C'è un ottimo strumento chiamato "kpartx" che può creare ed eliminare i nodi del dispositivo per te. È così facile:
# install kpartx $ sudo install kpartx # make sure, virtual gues is switched off! # create device nodes $ sudo kpartx -a /dev/mapper/guest1 # check /dev/mapper for new device nodes and mount/unmount them # after you are done, delete the nodes $ sudo kpartx -d /dev/mapper/guest1 |
Tieni presente che questo metodo funziona anche con altri dispositivi a blocchi come file di immagine contenenti tabelle di partizione. Potresti avere problemi solo quando il tuo volume lvm contiene il proprio lvm. Se questo è il caso, gioca con pvscan, vgscan e lvscan dopo aver usato kpartx. Sii coraggioso, ma tieni presente che il backup dei dati è sempre un'ottima idea.
Interfacce di gestione alternative
Se hai davvero bisogno di una GUI per le tue esigenze di gestione, controlla "virt-manager". Puoi installarlo sul desktop e gestire in remoto le istanze in esecuzione:
$ sudo install virt-manager
Tuttavia, dovresti controllare la pagina "Virtual Machine Manager" di RedHat. Potrebbe essere una buona idea compilare e installare manualmente una versione più recente e fare affidamento sulle istruzioni di installazione. Personalmente preferisco usare la console di testo normale qui, poiché aiuta a essere in grado di agire abbastanza velocemente e da qualsiasi luogo quando si verificano problemi e, naturalmente, non hai il sovraccarico di eseguire X11 sul server.
Conclusione
Al giorno d'oggi è abbastanza facile configurare un server KVM. Poiché gli ospiti abilitati per KVM/libvirt sono abbastanza veloci, è un modo semplice e piacevole anche per ospitare macchine virtuali. Ho eseguito circa una dozzina di macchine virtuali e tre server hardware per due anni senza alcun problema serio.