Gestione di base di OpenVZ
Dopo i precedenti articoli su OpenVZ, ecco le istruzioni basilari per gestire il nodo hardware e le macchine virtuali (container) di OpenVZ. I comandi come si può notare sono simili a quelli disponibili per GNU/Linux, tuttavia è necessario aver installato OpenVZ e le sue utility per poterli adoperare.
Per creare ed avviare un container, eseguire i successivi comandi (CTID è l’ID del container, osname è il nome dell’OS template di quel container, mentre a.b.c.d sta per l’indirizzo IP assegnato al container):
[host-node]# vzctl create CTID --ostemplate osname [host-node]# vzctl set CTID --ipadd a.b.c.d --save [host-node]# vzctl set CTID --nameserver a.b.c.d --save [host-node]# vzctl start CTID
Esempio:
[host-node]# vzctl create 101 --ostemplate fedora-core-5-minimal [host-node]# vzctl set 101 --ipadd 10.1.2.3 --save [host-node]# vzctl set 101 --nameserver 10.0.2.1 --save [host-node]# vzctl start 101
Per controllare se il container è in esecuzione:
[host-node]# vzctl exec CTID ps ax
Per accedere al container si può usare il comando:
[host-node]# vzctl enter CTID entered into container CTID [container]#
Per uscire, invece (VEID è l’ID del virtual environment):
[container]# exit exited from container VEID [host-node]#
Per arrestare il container:
[host-node]# vzctl stop CTID Stopping container ... Container was stopped Container is unmounted
Per distruggere il container:
[host-node]# vzctl destroy CTID Destroying container private area: /vz/private/CTID Container private area was destroyed
Gestione delle risorse
L’amministrazione delle risorse di OpenVZ è possibile grazie a una serie di strumenti che consentono di limitare e controllare ogni container, è necessario usare questi tool se si vuol far convivere più container sullo stesso server.
Ecco le quattro utility principali per il management di OpenVZ.
- User beancounters: regole per limitare o garantire le risorse a un singolo container
- Disk quota: affidare uno spazio disco ben preciso ai contenitori.
- CPU Fair scheduler: uno scheduler per la CPU ottimizzato per OpenVZ.
- I/O priorities for VE e IO Accounting: gestione dell’input-output per ogni guest.
User beancounters
E’ possibile controllare le statistiche del consumo delle risorse di un virtual private server. Queste statisitche possono essere adoperate per capire quali processi occupano risorse eccessive e per la messa a punto del container.
Per vedere i dati si può usare il comando:
# vzctl exec 101 cat /proc/user_beancounters
Per mostrare invece le statistiche relative a tutti i virtual private server in esecuzione sul computer, c’è uno script:
# for res in lockedpages totvmpages ipcshmpages anonshpages rsspages;\
do echo;echo “$res usage for all VEs, in MB:”;cat \
/proc/user_beancounters |grep $res|awk ‘BEGIN{ cur=max=lim=0; } \
{ cur+=$2; max+=$3;lim+=$5 } END {print “held:”,cur*4/1024, “max:”, \
max*4/1024, “limit:”, lim*4/1024}’; done
Per monitorare l’uso della memoria si può adoperare il tool vzmemcheck:
#vzmemcheck -v
l’opzione -v serve a mostrare le informazioni sulla memoria relative ad ogni container e non per il sistema operativo ospitante.
Disk Quota
Disk Quota è una funzione che consente di controllare e tenere sotto controllo la dimensione del filesystem limitando la quantità di spazio disco e il numero di inode che un container può usufruire. OpenVZ permette di porre dei limiti anche allo spazio disco e agli inode (numero di file, directory e link simbolici) adoperati dalla vps.
Per preimpostazione OpenVZ ha già abilitato la gestione delle quote a livello di filesystem ma è possibile attivare anche le quote per ogni container. Tenere conto che non si possono abilitare le quote per i container se sono disabilitate le quote per i filesytem.
All’interno del file /etc/sysconfig/vz si trovano i paramentri da impostare riguardanti le quote disco di OpenVZ.
[ad#midarticlequadr]
Per impostare un limite a un container si usa il comando:
#vzctl set CTID --diskspace $SoftLimit$:$HardLimit$ --save
Esempio:
# vzctl set 101 –diskspace 6G:7G –save
Viene impostata la quota massima di 7 GB al container con id 101, il limite soft è una barriera che consente al container di sforarla solo per brevi periodi.
Per controllare se il meccanismo di gestione delle quote è attivo:
# vzctl exec 101 df -h
Per cambiare il periodo in cui si può sforare la prima barriera di spazio si può adoperare il comando (600 corrisponde a 10 minuti):
# vzctl set 101 –quotatime 600 –save
Allo stesso modo è possibile impostare un numero massimo di file, directory e link simbolici esistenti in un container impartendo il comando:
# vzctl set 101 –diskinodes 90000:91000 –save
CPU Fair scheduler
Lo scheduler della CPU di tipo fair distribuisce i cicli del processore tra le virtual machine e controlla la gestione delle risorse della CPU. Col primo livello, lo scheduler decide a quale macchina virtuale dare il prossimo tempo CPU di elaborazione, tempo che è lungo quanto il valore stabilito in cpuunits. Al secondo livello lo scheduler attribuisce capacità di calcolo a un processo all’interno del container usando le priorità standard dei processi in Linux.
Lo scheduler può essere monitorato usando il file /proc/vz/vestat.
Un’amministratore di OpenVz più stabilire diversi valori di cpuunits per ogni container e il periodo di elaborazione del processore sarà distribuito in base a tale valore. C’è anche la possibilità di assegnare ad un container una percentuale dell’uso della CPU (es: 10%…)
Usando:
# vzctl set 102 –cpuunits 1500 –cpulimit 4 –save
Al container 102 è attribuito al massimo il 4% del tempo cpu in fase di alto carico di lavore del computer. Se il computer non è impegnato ad eseguire ulteriori elaborazioni la macchina virtuale può ottenere più tempo.
Cpuunits è un numero positivo intero che determina la condivisione minima garantita del processore per container. Il totale di CPU power espresso dal parametro CPUUNITS è prodotto dal numero Bogomips moltiplicato per 25. Un processore Intel P3 da 1 GHz equivale a 50.000 cpu units.
Per avere un idea sui parametri Cpuunits e cpulimit da impostare si possono controllare i valori assegnati ad una macchina virtuale usando, sul computer, il comando:
# vzcpucheck
Current CPU utilization: 5166
Power of the node: 73072.5
Priorità I/O per i container
Il supporto alle priorità I/O è stato implementato in OpenVZ a partire dal kernel 2.6.18-028stable021, usando la versione 3.0.16 di vzcrl e adottando lo scheduler CFQ I/O.
L’intervallo delle priorità impostabili va da 0 a 7, più elevato è il numero è maggiore sarà il tempo che un container potrà usufruire dei dispositivi a blocchi:
# vzctl set 101 –ioprio 6 –save
Attribuendo il valore 0, il container ha a disposizione una sola unità di tempo mentre 8 assegna due unità di tempo. Di default il valore dell’unità di tempo è la metà. Il criterio principale per usare questa giovane funzione è impostare una data priorità p1 alla macchina 101 e una priorità maggiore p2 al container 102. Dato che p1<p2, 102 otterrà più tempo per usare I/O.
Prossimamente il resto della guida…