Implementazione di un server di virtualizzazione con KVM

giugno 12th, 2011 / Commenti disabilitati / by admin

Nel precedente articolo “Introduzione alla virtualizzazione con KVM” sono stati introdotti gli aspetti base della virtualizzazione basata su KVM.
In questo articolo vedremo come implementare una completa soluzione di Virtualizzazione basata su KVM e Debian.

In particolare useremo Debian Squeeze, l’attuale release stable di Debian.

Prerequisiti
Per utilizzare KVM è necessario avere un processore dotato di estensioni per la virtualizzazione, per verificare che siano presenti è sufficiente lanciare il seguente comando:

# egrep -c ‘(vmx|svm)’ /proc/cpuinfo
8
Se il comando (come nell’esempio) restituisce “1″ o un numero maggiore le estensioni sono state rilevate, mentre se restituisce 0, significa che il vostro processore non dispone di tali estensioni, quindi dovrete usare una soluzione differente come ad esempio Xen o VirtualBox.

Nel caso in cui vogliate creare VirtualMachine con un quantitativo di RAM superiore ai 2 GB è necessario avere un processore con architettura X86-64. Anche in questo caso possiamo estrarre questa informazione dal file /proc/cpuinfo:

# egrep -c ‘ lm ‘ /proc/cpuinfo
8
Anche in questo caso, se il comando (come nell’esempio) restituisce un numero diverso da 0, il vostro processore potrà eseguire software a 64 bit.

L’ulteriore componente in gioco è il kernel del vostro sistema, che deve essere compilato con il supporto ai 64 bit, per controllare è sufficiente lanciare ‘uname’:

# uname -m
x86_64
che dovrà restituire appunto “x86_64″.
Nel caso il vostro processore sia a 64 bit ma sistema operativo installato a 32, non preoccupatevi, non è necessario effettuare una nuova installazione. Linux infatti è in grado di far girare uno userland a 32 bit su un kernel a 64 bit e nei repository Debian per l’architettura i386 è presente proprio il pacchetto che ci interessa, installabile con un colpo di Apt:

# apt-get install linux-image-2.6-amd64
Al contrario delle estensioni per la virtualizzazione, non avere un processore x86_64 non pregiudica la funzionalità di KVM, semplicemente si potranno creare macchine virtuali con al massimo 2 Gb di RAM, quantitativo più che sufficiente per macchine virtuali di test.

Come ultimo prerequisito è necessario procurarsi un client VNC da installare sulla propria workstation, in questo caso si può proprio dire che uno vale l’altro, l’uso che se ne farà è davvero semplice e non richiede alcuna caratteristica avanzata.

Installazione e configurazione
Il processo di installazione è davvero molto semplice:

# apt-get install qemu-kvm libvirt-bin
APT scaricherà tutti i pacchetti necessari per preparare il vostro sistema alla virtualizzazione.

È possibile fare in modo che un utente non privilegiato possa creare e gestire le VM semplicemente aggiungendo l’utente al gruppo ‘libvirt’:

# adduser fpedrini libvirt
ed effettuare nuovamente la login al sistema per acquisire il nuovo gruppo.

Per verificare che tutto sia funzionante è necessario utilizzare il comando virsh, parte del pacchetto libvirt-bin:

# virsh –connect qemu:///system list
che mostrerà un output simile al seguente:

Id Name State
———————————-

#
virsh è una shell interattiva che permette di gestire il proprio ambiente di virtualizzazione indipendentemente dall’Hypervisor (vedi precedente articolo) utilizzato, di cui comunque parleremo in maniera approfondita più avanti.

Come ultimo passo, per fare in modo che le virtual machine possano connettersi alla stessa rete presso cui il server è collegato, sarà necessario creare un bridge. Viceversa è possibile sfruttare le reti interne gestite da virsh via libvirt, ma questo tipo di configurazione non è trattata in questo articolo.
Per creare un bridge è necessario installare il pacchetto bridge-utils:

# apt-get install bridge-utils
E’ quindi sufficiente modificare la configurazione delle interfacce di rete in /etc/network/interfaces, creando una nuova stanza all’interno del file e fare in modo che l’interfaccia primaria diventi il bridge (per esempio br0):

auto br0
iface br0 inet static
address 192.168.0.100
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
Oltre alle normali opzioni (address/network/broadcast/netmask e gateway) sono presenti anche le opzioni usate per la creazione del bridge, e la più importante è bridge_ports, che indica al sistema quale interfaccia fisica deve essere usata per la costruzione del bridge.

Riavviando il servizio di networking:

# /etc/init.d/networking restart
il bridge verrà attivato.

Creazione della prima Macchina Virtuale
Una volta installati i vari pacchetti necessari per la virtualizzazione e configurata la rete è possibile installare la prima virtual machine, sfruttando il comando virt-install.

Virt-install e’ un tool della suite di libvirt che permette di automatizzare i passaggi di base necessari alla creazione della VM, come ad esempio la creazione del file che fungerà da disco virtuale o la configurazione del file XML che contiene la definizione della Virtual Machine.

Se ad esempio volessimo installare una VM che faccia girare una nuova istanza di Debian Squeeze, il comando da lanciare sarà simile al seguente:

# virt-install –connect qemu:///system -n squeeze-vm -r 512 –vcpus=2 –disk path=/virtuals/squeeze-vm10.img,size=10 -c /dev/cdrom –vnc –noautoconsole –os-type linux –os-variant debiansqueeze –accelerate –hvm –network=bridge:br0
Quello che all’inizio può sembrare un comando difficile e complesso, si rivela in realtà una lista di opzioni abbastanza facile da ricordare quando se ne conosce il significato:

–connect qemu:///system indica a virt-install quale deve essere l’hypervisor target
-n indica il nome della Virtual Machine, in questo caso squeeze-vm
-r indica il quantitativo della ram virtuale in megabytes
–vcpus=2 indica il quantitativo di cpu virtuali da assegnare alla VM. Test prestazionali indicano che su processori multicore come quelli odierni, assegnare più di due vcpu ad un sistema guest non porta ad alcun aumento di performance. Il numero di processori dedicati infatti serve semplicemente a far capire al sistema guest che sta girando in un ambiente SMP. Ci penserà l’hypervisor a dividere il carico sui core del sistema host
–disk-path=/virtuals/squeeze-vm,size=10 indica a virt-install dove creare l’immagine per il disco virtuale e la sua dimensione. Può anche essere usato un dispositivo a blocchi (come ad esempio /dev/sdb1, la prima partizione del secondo disco del sistema host o un volume LVM), in questo caso l’opzione size non avrà alcun effetto.
-c /dev/cdrom indica a virt-install il path dell’immagine di installazione del sistema guest. È possibile utilizzare anche un normale file .iso
–vnc indica a virt-install di abilitare la console VNC non appena la macchina virtuale è stata creata.
–os-type linux –os-variant debiansqueeze indicano a virt-install che tipo di sistema operativo verrà installato sul guest
–accelerate –hvm indica a virt-install che il guest dovrà sfruttare l’accelerazione fornita da KVM. Ricordiamo che in realtà Qemu e KVM sono legati a doppio filo e il secondo può essere visto come un acceleratore per Qemu. inoltre la seconda opzione specifica che il guest dovrà essere un sistema completamente virtualizzato (e non paravirtualizzato come succederebbe con Xen)
–network=bridge:br0 indica a virt-install quale sarà il bridge da usare per connettere questa virtual machine alla rete
Una volta premuto invio, l’output si presenterà in maniera simile alla seguente:

Starting install…
Creating domain… | 0 B 00:00
Domain installation still in progress. Waiting for installation to complete.
a questo punto collegandosi mediante un client VNC (ad esempio vncviewer) al server è possibile completare l’installazione via console, come se si trattasse di una normale installazione Debian.

Dal momento che VNC non è un protocollo cifrato, è preferibile utilizzare un tunnel SSH (come spiegato in questo articolo) dalla propria workstation al server di virtualizzazione, puntando quindi il proprio client VNC alla porta aperta dal tunnel su localhost.

Gestione delle Virtual Machine
Gestire le virtual machine è possibile sempre mediante la comoda shell interattiva virsh di cui è stato fatto cenno poco sopra.

Virsh è il tool principe per la gestione delle macchine virtuali in quanto permette di eseguire con semplicità anche i compiti più complessi tramite una comoda interfaccia testuale.

Per lanciare virsh sarà necessario lanciare il comando:

# virsh –connect qemu:///system
Si presenterà quindi una vera e propria shell interattiva:

Welcome to virsh, the virtualization interactive terminal.

Type: ‘help’ for help with commands
‘quit’ to quit

virsh #
Per ottenere la lista dei comandi disponibili è sufficiente scrivere help:

virsh # help
Commands:

help print help
attach-device attach device from an XML file
attach-disk attach disk device
attach-interface attach network interface
autostart autostart a domain
capabilities capabilities
cd change the current directory
connect (re)connect to hypervisor
….
version show version
vncdisplay vnc display
snapshot-create Create a snapshot
snapshot-current Get the current snapshot
snapshot-delete Delete a domain snapshot
snapshot-dumpxml Dump XML for a domain snapshot
snapshot-list List snapshots for a domain
snapshot-revert Revert a domain to a snapshot
I comandi disponibili per virsh sono moltissimi e permettono di gestire qualsiasi aspetto di una macchina virtuale, dal suo stato, alla gestione dei dischi virtuali, fino alla gestione delle reti interne.

I comandi sicuramente più utilizzati sono quelli relativi all’esecuzione di un guest, cioè list,start, shutdown e reboot, destroy, suspend e resume.

Tutti questi comandi risultano abbastanza autoesplicativi e, ad eccezione di list tutti necessitano del nome del sistema guest su cui dovranno agire. Il comando list invece accetta due parametri: –all e –inactive, che agiranno come filtri per visualizzare rispettivamente tutte le virtual machine o i soli guest inattivi, se invocato senza alcun parametro, verrà visualizzato l’elenco delle macchine virtuali avviate.

Come detto sopra, i comandi risultano abbastanza chiari, ma è bene fare attenzione ad un paio di dettagli, vediamo con ordine:

start è sicuramente il più semplice, permette di avviare la virtual machine. In aggiunta, è utile citare il comando autostart che permette di comunicare a libvirt di avviare automaticamente le virtual machine all’avvio del sistema.
shutdown permette di inviare al sistema guest un segnale di shutdown, simulando ciò che accade sulle macchine fisiche quando viene premuto il tasto di accensione
reboot invia alla macchina virtuale il segnale di reboot che avvierà un processo di riavvio pulito del sistema.
destroy fa in modo che il processo della virtual machine venga ucciso. Dal punto di vista della virtual machine questo è l’equivalente di un blackout, la corrente viene interrotta bruscamente. Ovviamente come succede per le macchine reali, questo comando potrebbe creare inconsistenze sul filesystem del guest anche se ovviamente non causerà alcun danno reale all’hardware
suspend fa in modo che l’esecuzione della virtual machine venga interrotta. La ram rimarrà comunque occupata, ma la macchina virtuale non occuperà più alcuna risorsa relativa a CPU, HD e rete fino al resume.
resume permette di far uscire la virtual machine dallo stato di ibernazione attivato con suspend
Menzione particolare meritano anche i comandi save e restore.
Save richiede, oltre al nome della virtual machine anche un parametro aggiuntivo, cioè il filename dove salvare lo stato del sistema guest. Al contrario di suspend, questo comando permette di salvare tutto ciò che concerne la virtual machine (ram, registri del processore, interrupts, eccetera, eccetera…) in un file, e terminare il processo del sistema guest. Questo fa si che una Virtual Machine possa essere spostata completamente da un host all’altro senza che il sistema e le applicazioni al suo interno ne risentano minimamente.
Restore, come la sua controparte richiede come parametro aggiuntivo il file da cui leggere lo stato della virtual machine da ripristinare.

Conclusioni
Questo articolo, per quanto lungo, rimane sempre e comunque una rapida introduzione al vasto argomento della virtualizzazione, tematica che grazie ai recenti miglioramenti di libvirt e dei tool a corredo sta diventando sempre più vasta e interessante.

Ciò nonostante credo che usando come base le informazioni qui contenute si possano creare ambienti di virtualizzazione in grado di competere (e in parecchi casi persino surclassare) le soluzioni di virtualizzazione proprietarie più blasonate.

Basti pensare che i grandi player del mondo della virtualizzazione (Amazon, RackSpace e Google, giusto per citare i più grandi) utilizzano soluzioni basate proprio sui software descritti in questo articolo.

L’autore di questo articolo e’ Francesco Pedrini, che lo ha scritto il 9 giugno 2011 alle 10:30, ed incluso nella categoria KVM, Virtualizzazione, con questi tag: KVM, Virtualizzazione.

Tags: , , ,

Controllare la sessione di login

marzo 22nd, 2011 / Commenti disabilitati / by admin

quando si esegue il login su lunix esso identifica una particolare identità che a privilegi restrizioni identificata da nome utente e password che ogli volta che entra linux memorizza il suo accesso la sua disconnessione il tempo di oprativita e dove ci si logga di preciso

per poter ottenere queste informazioni si usa il comando $ id
$id
uid=501(nomeutente) gid=105(group) grups=105(gruppi di appartenenze)

Shell Cookies

marzo 22nd, 2011 / Commenti disabilitati / by admin

con questo post voglio aprire una serie di post dedicati all uso della shell nei sistemi linux la scell di cui ci occuperemo e la bash che è la più comune e anke la più utilizzata perche integrata nella maggior parte dei sistemi oprativi linux

quando si apre la prima volta un terminale fisico o virtuale la sintassi appare questa:
username@hostname $
il simbolo dopo host name puo anche essere il # che si distingue dal $ per il fatto che il primo è il propt didefault dell utente root e il senconto per l’utente normale.

Tags: ,

vediamo se riesco a pagarmi il sito..

marzo 22nd, 2011 / Commenti disabilitati / by admin

fino ad oggi il sito nessuno74.con che risiede in un server di aruba all interno della directory telaiolaterina.it e come dominio regitrato
attraverso google si è molto lasciato andare solo per prove di eventuali nuovi cms o a prove di nuovi moduli o script da oggi per ho cominciato

ad inserirci un po di pubblicita per provare a vedere se è facile come dicono.

ringrazio per le dritte i podcast degli amici di caffe2.0 e digitalia ke continuo ad ascoltare dal mio fidato ed innarestabile ipod ma dovro
cominciare anke a popolare con più attenzione anke il sito perke le pubblicità da sole non fanno accessi.

Tags: , , , ,

Cambiare il nome delle schede di rete

agosto 31st, 2010 / Commenti disabilitati / by admin

Venerdì 28 Maggio 2010 09:56 Amministratore (Alberto) Chi possiede due o più schede di rete si ritroverà le schede numerate secondo un ordine di rilevazione che potrebbe non essere quello sperato. La prima scheda ethernet rilevata assumerà nome eth0, la seconda eth1 e così via; vedremo quindi come riordinare le schede di rete a nostro piacimento e persino assegnargli nomi differenti arbitrariamente.

Nelle precedenti versioni di Ubuntu e in molte altre distribuzioni linux veniva usato il file di configurazione /etc/iftab ma nelle ultime versioni il lavoro viene svolto da udev, un sistema che si occupa delle rilevazioni hardware accoppiate a delle regole.

La regola che si occupa della configurazione di rete è posta su /etc/udev/rules.d/70-persistent-net.rules e richiede unicamente l’indirizzo MAC (Media Access Control) e il nome da assegnare alla scheda.

Prima di apportare modifiche alla regola di udev osserviamo come rilevare il nome attuale e l’indirizzo MAC di ciascuna scheda. All’interno di una finestra di terminale scriviamo il comando ifconfig -a e osserviamo un risultato similare al seguente:

eth0 Link encap:Ethernet HWaddr 00:20:ED:6D:04:05
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth1 Link encap:Ethernet HWaddr 00:80:C8:F2:42:02
inet addr:192.168.3.5 Bcast:192.168.3.255 Mask:255.255.255.0
BROADCAST MULTICAST MTU:1500 Metric:1Possiamo notare che la prima scheda chiamata eth0 possiede indirizzo MAC 00:20:ED:6D:04:05 mentre la seconda eth1 avrà 00:80:C8:F2:42:02. Annotati questi numeri apriamo il file delle regole con:

gksudo gedit /etc/udev/rules.d/70-persistent-net.rulesL’organizzazione del file è molto semplice e a parte i commenti si troveranno delle righe simili:

# PCI device 0×10ec:0×8139 (8139too)
SUBSYSTEM==”net”, DRIVERS==”?*”, ATTRS{address}==”00:20:ed:6d:04:05″, NAME=”eth0″

# PCI device 0×10ec:0×8029 (ne2k-pci)
SUBSYSTEM==”net”, DRIVERS==”?*”, ATTRS{address}==”00:80:c8:f2:42:02″, NAME=”eth1″Basterà sostituire il nome della scheda (eth0 e eth1) con i nomi che vogliamo vengano assegnati, ad esempio rinumerando la prima eth1 e la seconda come eth0.

Sebbene sia possibile assegnare anche nomi arbitrari quali rete0 o nic1, si raccomanda di lasciare i nomi ethN poiché alcuni programmi si aspettano di trovar nomi del genere e potrebbero comportarsi in maniera inaspettata.

Apportate le modifiche, salvare il file e riavviare il sistema per utilizzare le nuove schede di rete. Ricordarsi naturalmente di assegnare gli indirizzi alle schede prima di utilizzarle, soprattutto se vi si è cambiato nome.

Tags: , ,

Criteri Password W2008R2

agosto 10th, 2010 / Commenti disabilitati / by admin

Se siamo in un ambiente Active Directory l’abilitazione o la disabilitazione della complessità delle password va eseguita all’interno della Default Domain Policy.
Se abbiamo installato il Group Policy Management Console possiamo lanciarlo tramite il comando gpmc.msc, altrimeniti apriamo lo snap-in Active Directory Users and Computers, tasto destro sul nome del dominio e scegliamo properties, andiamo nel tab Group Policy e dopo aver seleziona la GPO Default Domain Policy clicchiamo il pulsante Edit.
Espandiamo il percorso Computer Configuration\Windows Settings\Security Settings\Account Policies\Password Policy e troviamo la policy che ci interessa: Password must meet complexity requirements.
Se configuriamo la policy come Enabled forziamo la complessità della password, se scegliamo Disabled non forziamo nessun vincolo.

Fonte:http://sistarelli.com/

Tags: , ,

gpedit.msc

maggio 19th, 2010 / Commenti disabilitati / by admin

Command Linux

aprile 21st, 2010 / Commenti disabilitati / by admin

ALCUNI UTILI COMANDI DI GESTIONE DEI FILE LINUX
cat Visualizza il contenuto di un file
cd Cambia la directory corrente
chgrp Cambia il proprietario del gruppo per un file
chmod Cambia le autorizzazioni di un file
chown Cambia il proprietario di un file
cp copia un file o una directory
diff Confronta il contenuto di un file
diff3 Confronta il contenuto di tre file
find Trova un file sul disco rigido
grep Trova un file con il contenuto specifico
less Visualizza il contenuto di un file sullo schermo una pagina alla volta
ls Elenca i nomi dei file in una directory
mkdir Crea una nuova directory
mv Cambia la posizione di un file. Può essere utilizzato per cambiare il nome di un file.
pwd Mostra il percorso della directory corrente
rmdir Rimuove una directory
touch Aggiorna le date di ultimo accesso/modifica di un file.

ALCUNI UTILI COMANDI DI GESTIONE DEGLI ACCOUNT LINUX

env Imposta o visualizza le variabili di ambiente.
groupadd Aggiunge un nuovo gruppo
groups Visualizza l’elenco dei gruppi esistenti
passwd Cambia password
quota Visualizza lo spazio su disco utilizzato e disponibile per l’account
su Passa al super user o a un altro account utente
unset Rimuove una variabile di ambiente
useradd Aggiunge un nuovo account utente
userdel Elimina un account utente
whoami Visualizza l’account corrente

ALCUNI UTILI COMANDI DI GESTIONE DEI PROCESSI DI STAMPA DI LINUX

Ipr Invia un file alla coda della stampante
Iprm Rimuove un file dalla coda della stampante
Ipq Visualizza informazioni sui processi nella coda

ALCUNI UTILI COMANDI DI VARIO GENERE DI LINUX

whereis Trova la posizione di un programma
tar Inserisce e recupera i file da un file di archivio
ftp Trasferisce i file da un computer all’altro
clear Cancella la schermata
date Visualizza la data e l’ora corrente
gzip Comprime i file
gunzip Decomprime i file

Tags:

quinto potere

aprile 20th, 2010 / Commenti disabilitati / by admin

Lei ha osato interferire con le primordiali forze della Natura, signor Beale, E io non lo ammetto! È chiaro? Lei crede di aver fermato solo una trattativa di affari, e invece non è così. Gli arabi hanno portato miliardi di dollari fuori da questo paese e ora ce li devono riportare. È il flusso e riflusso,l’alta e bassa marea, il giusto equilibrio ecologico. Lei, signor Beale, è un vecchio che pensa in termini di “nazioni” e di “popoli”… Non vi sono nazioni, non vi sono popoli; non vi sono russi, non vi sono arabi; non vi sono Terzi Mondi non c’è nessun Ovest. Esiste soltanto un Unico e Solo Sistema dei Sistemi: uno, vasto e immane. Interdipendente intrecciato, multivariato, multinazionale, dominio dei dollari: petroldollari, elettrodollari, multidollari, sterline, yen, deutchmark, rubli! È il Sistema Internazionale Valutario che determina la totalità della vita su questo pianeta. Questo è l’ordine delle cose, oggi. Questa è l’atomica, sub–atomica e galattica struttura delle cose oggigiorno. E lei ha interferito con le primordiali forze della natura! E lei dovrà espiare. Capisce quello che le dico Signor Beale? Lei si mette sul suo piccolo teleschermo a 21 pollici e sbraita parlando d’ “America” e di “democrazia”… Non esiste, l’America, non esiste la democrazia!! Esistono solo IBM, ITT, AT&T, DUPONT, DOW, Union Carbide, Exxon.… Sono queste le nazioni del mondo oggi. Di cosa crede che parlino i Russi nei loro consigli di Stato, di Carlo Marx? Tirano fuori i diagrammi di programmazione lineare, le teorie di decisione statistica, le possibili soluzioni i probabili prezzi e costi delle loro transazioni e dei loro investimenti… Proprio come noi. Non viviamo più in un mondo di nazioni e di ideologie. Il mondo è un insieme di corporazioni inesorabilmente regolato dalle immutabili spietate leggi del business. Il mondo è un business, Signor Beale! Lo è stato fin da quando l’uomo è uscito dal magma. E i nostri figli vivranno per vedere questo mondo perfetto: una vasta, ecumenica, società finanziaria per la quale tutti gli uomini lavoreranno per creare un profitto comune, nella quale tutti avranno una partecipazione azionaria. E ogni necessità sarà soddisfatta… ogni angoscia tranquillizzata… ogni noia superata.»

NOCEX birthday

marzo 25th, 2010 / Commenti disabilitati / by admin