La parola d’ordine è…ALLINEAMENTO! Vmware, Netapp ed NFS…

Posted on 14 marzo 2011 di

0


Come da ogni sacrosanto “Best Practice” che potrete trovare in qualsiasi forum di vmware e netapp (od altri storage), quando decidete di migrare dalla classica infrastruttra con datastore in fibra (scsi) ad una più flessibile ed efficace con datastore NFS (magari netapp a 10GB con tutti vantaggi del caso)…la parola d’ordine è ALLINEAMENTO.

Si, perchè per rendere più snelle le operazioni di I/O e non farle ripetere inutilmente, và allineato il filesystem del sistema operativo della macchina virtuale con quello dello storage NFS.

Nel nostro caso abbiamo dovuto migrare le VMs al nuovo storage (con storage vmotion, vmotion o riregistrandole sul nuovo ambiente poichè sono cambiati anche gli esx)…ma ciò comporta un lavoro che và preventivato per allineare i sistemi operativi ai 64k del filesystem NFS di netapp. In sostanza se i blocchi dello storage, dei vmdk e dei sistemi operativi (ntfs ad esempio) sono allineati le operazioni di I/O saranno fatte una sola volta (velocità massima) altrimenti 2 volte (performance peggiori ovviamente).

Qual’è la via più breve? Bella domanda. Di sicuro un tool come vOptimizer di Quest Software è tra i più gettonati poichè riesce a fare una serie di ottimizzazioni e tornare indietro in caso di failure in modo automatico. Ma costa un 500 euro per 2 core e funziona bene con ESX (parla direttamente con la Service Console)  ma meno bene con ESXi (crea un boot cd che però ha limitazioni di rete nella comunicazione con l’esx ed il sistema operativo). In oltre il software soffre l’abilitazione del CBT sulle VMs.

Volendo risparmiare qualche soldo ma spendendo sicuramente più tempo per le verifiche varie si può usare il tool che Netapp mette a disposizione gratuitamente e chiamato MBRALIGN.

Bisogna installare una macchina linux virtuale sulla lan nfs dei votri esx/esxi ed installare il pacchetto di Netapp. A questo punto vanno montati i datastore NFS sulla macchina linux.

Una volta fatto ciò potete lanciare prima un MBRSCAN su una directory contente una VM (spenta) e vedere il risultato (vmdk allineati o no ai 64k), ed in caso un MBRALIGN che fà anche un backup dei vostri vmdk originali in caso che il sistema operativo non riparta dopo l’allineamento (possibilità che  non è così remota).

Io, per velocizzare il tutto, mi sono sviluppato uno script sh che mi dà sia un livello di sicurezza in più, backuppandomi l’intera directory della VM e ricordandomi tutti gli step che devo eseguire per i controlli. Mi dà anche una velocità maggiore poichè mi chiede di allineare fino a 4 dischi per VM in una volta sola (invece con il comando classico dovrei allineare e verificare un disco per volta). Se la Vm ha meno di quattro dischi qualche step dello script fallirà ovviamente ma solo perchè non ha in input i dati…ma ciò non comporta assolutamente nessun problema. Inoltre lo step finale che vi chiede di inserire un cdrom con le chiavi windows-netapp è solo un reminder: infatti mi sono fatto una iso autopartente che, una volta allineati i dischi su una macchina windows, posso montare per cambiare i valori raccomdati da netapp nel registro windows e riguardo ai timeout.

Vi lascio lo script qui sotto: basta copiarlo ed incollarlo sul desktop della vostra linux machine (dopo che avete installato i comandi di netapp e dopo che avete montato i datastore nfs) su un file con estensione .sh (poi fate click 2 volte ed eseguitelo…seguendo le istruzioni).

#!/bin/bash
function pause(){
read -p "$*"
}
echo -e '\E[33;44m'
echo "Benvenuto nel programma per allineare i vmdk sui datastore nfs netapp. Unico prerequisito è che tu abbia montato i datastore nfs di interesse in questa macchina linux, fallo quindi se non lo hai già fatto e ricordati di dare ai mount point il prefisso 'nfs'."
pause 'Premi invio per continuare...'
echo "Questi sono i datastore NFS montati attualmente qui:"
ls /mnt/nfs*
echo "Inserisci il percorso del datastore nfs da analizzare (esempio /mnt/nfs_hi):"
read DATASTORE
echo "Spera di aver scritto bene, hai scelto:" $DATASTORE
echo "Inserisci la cartella della VM nel datastore nfs da analizzare:"
read VM
echo "Spera di aver scritto bene, hai scelto:" $VM
pause 'Premi invio per continuare...'
echo "Questi sono i VMDK che puoi analizzare in "$DATASTORE"/"$VM
ls -l $DATASTORE/$VM | grep flat.vmdk
echo "Inserisci il primo disco flat.vmdk da analizzare:"
read DISCO1
echo "Inserisci il secondo disco flat.vmdk da analizzare (se non presente invio a vuoto):"
read DISCO2
echo "Inserisci il terzo disco flat.vmdk da analizzare (se non presente invio a vuoto):"
read DISCO3
echo "Inserisci il quarto disco flat.vmdk da analizzare (se non presente invio a vuoto):"
read DISCO4
pause "Sei pronto? Per lanciare mbrscan su sui dischi premi invio:"
sudo mbrscan $DATASTORE/$VM/$DISCO1
sudo mbrscan $DATASTORE/$VM/$DISCO2
sudo mbrscan $DATASTORE/$VM/$DISCO3
sudo mbrscan $DATASTORE/$VM/$DISCO4
pause 'Se i dischi sono allineati puoi chiudere questa finestra, altrimenti premi invio per continuare'
pause 'RICORDA CHE LA VM DEVE ESSERE SPENTA, premi invio per continuare'
pause "Sei pronto? Per lanciare mbralign sulla COPIA della VM chiamata: "$DATASTORE"/"$VM"-aligned"
sudo cp -rav $DATASTORE/$VM $DATASTORE/$VM-aligned
sudo mbralign $DATASTORE/$VM-aligned/$DISCO1
sudo mbralign $DATASTORE/$VM-aligned/$DISCO2
sudo mbralign $DATASTORE/$VM-aligned/$DISCO3
sudo mbralign $DATASTORE/$VM-aligned/$DISCO4
pause "Per verificare con mbrscan l'allineamento di questi dischi premi invio:"
sudo mbrscan $DATASTORE/$VM-aligned/$DISCO1
sudo mbrscan $DATASTORE/$VM-aligned/$DISCO2
sudo mbrscan $DATASTORE/$VM-aligned/$DISCO3
sudo mbrscan $DATASTORE/$VM-aligned/$DISCO4
pause "Se tutto ok, rinomino la cartella originale in -OLD ed a quella nuova applico il nome corretto, premi invio per continuare"
sudo mv $DATASTORE/$VM $DATASTORE/$VM-OLD
sudo mv $DATASTORE/$VM-aligned $DATASTORE/$VM
pause "***ATTENZIONE*** Accendi la macchina virtuale "$DATASTORE"/"$VM" e verifica che è tutto ok. Inoltre inserisci il cdrom per le chiavi windows-netapp, premi invio per continuare"
echo -n "Vuoi cancellare i backup dei dischi su "$DATASTORE"/"$VM"? Rispondi 'y' altrimenti 'n' e poi invio :"
read RISPOSTA
if [ ${RISPOSTA} = "y" ]
then
sudo rm -v $DATASTORE/$VM/*mbralign-backup
else
echo "Ok, ricorda di cancellare i backup manualmente"
fi
echo -n "Vuoi cancellare anche la directory "$DATASTORE"/"$VM"-OLD? Rispondi 'y' altrimenti 'n' e poi invio :"
read RISPOSTA
if [ ${RISPOSTA} = "y" ]
then
sudo rm -rv $DATASTORE/$VM-OLD
else
echo "Ok, ricorda di cancellare la directory manualmente"
fi
pause 'FATTO, premi invio per chiudere'

Annunci