Premessa
Un server datato che occorre tenere in produzione per gestire un vecchio sito web, un server smtp per la reportistica, un server proxy per il filtraggio e l’analisi della navigazione per un numero limitato di utenze – sono tutte applicazioni che possono essere convertite in altrettante macchine virtuali riducendo consumi energetici, ingombro e necessità di manutenzione fisica. Tuttavia la conversione non è semplice specie se il sistema operativo non è supportato ovvero se il server in questione ha un guasto di qualche tipo, ovviamente non riguadante il/i dischi rigidi.
Virtualizzazione di macchine fisiche
I principali software di virtualizzazione(VmWare, VirtualBox, VirtualPC) offrono versioni gratuite dei loro prodotti. Esistono quindi controparti open source come qemu, KVM o Xen.
Chi si trova ad avere a che fare con server eterogenei ha talvolta la necessità di convertire una macchina fisica in macchina virtuale. Come procedere?
Convertire un sistema operativo Linux attraverso qemu-img
VmWare Converter è la soluzione, sempre gratuita, di VmWare per la conversione di macchine fisiche. Per quanto riguarda l’ambiente Linux supporta come destinazione solo Server ESX Server, il quale richiede hardware specifico.
dd e quemu-img
Per superare questo ostacolo, ci viene in aiuto uno strumento di qemu, qemu-img, che si occupa di convertire immagini disco tra vari formati di macchine virtuali.
- creare su un disco differente una immagine di tutto l’ahrd disk della macchina fisica da convertire, in modo da conservare anche le informazioni sulla tabella delle partizioni del disco di partenza, che poniamo essere /dev/sda:
dd=/dev/sda of=/immaginedisco.dd
- effettuare la conversione con qemu-img
qemu-img convert immaginedisco.dd -O vmdk immaginedisco.vmdk
Creazione della VM
- Creare una macchina virtuale impostando come hard disk il file ottenuto dalla conversione [immaginedisco.vmdk ], e facendo il boot della suddetta macchina virtuale da una linux live – ad es. livecd di ubuntu o knoppix
- effettuato il boot, montare il disco e aggiornare grub come segue [chi si trova invece davanti LILO deve seguire un approccio lievemente differente che non illustro - non mi ricordo più
]
sudo -i
mkdir server
mount /dev/sda1 server/
mount -t proc none server/proc
mount -o bind /dev server/dev
chroot server /bin/bash
- Occorre poi aggiornare gli UUID dei dischi rigidi, per ogni partizione da montare é necessario ricavare l’UUID con il comando che segue per poi aggiornare /etc/fstab ed il parametro kopt in /boot/grub/menu.lst (in questo caso la partizione è /dev/sda1)
sudo vol_id --uuid /dev/sda1
- Quindi rigenerare la configurazione di grub
update-grub
grub-install /dev/sda1
Configurazione dell’hardware virtuale
- Clean-up vari: verificare eventuali personalizzazioni di periferiche effettuare in /etc/udev/rules.d/
Nel mio caso in 70-persistent-net-rules: è stato necessario cancellare tutto l’hw di rete considerando che il mac address delle schede di rete cambia nella trasformazione in macchina virtuale. Se si hanno più schede di rete, al primo boot sarà possibile personalizzare la configurazione udev delle schede.
- Commentare poi i moduli non necessari in
/etc/modules
- disattivare gli eventuali smartmontools quindi togliere acpid e acpi-support
update-rc.d -f smartmontools remove
update-rc.d -f acpid remove
apt-get purge acpid acpi-support
apt-get autoremove
Prima esecuzione
- Riavviare la macchina virtuale direttamente dal disco configurato sopra, togliendo l’eventuale ISO o cd usato per il precedente boot. Verificare che tutto funzioni
e nstallare ora i vmware tools correnti attivando dal menu di VmWare Workstation l’opzione relativa. Se abbiamo convertito una macchina server, potrebbe essere ncessario montare il supporto per i vmware tools:
mount /dev/cdrom /mnt
cd ~
tar -xvzf /mnt/vmwareX
cd vmwareX
. ./vmware-install.pl
Conclusioni
- Attraverso strumenti open source è possibile aggirare le limitazioni di VmWare Converter ottenendo una VM corrispondente alla macchina fisica.