Progetto

Generale

Profilo

Actions

LinuxVserverHowto » Cronologia » Versione 11

« Precedente | Versione 11/13 (diff) | Successivo »
Simone Piccardi, 23-12-2010 16:06


Come creare un ambiente "virtualizzato" con linux-vserver su Lenny

Il supporto per linux-vserver è presente in Debian a partire da Etch. La tecnologia dei container usata da linux-vserver, pur non fornendo una macchina virtuale vera e propria, consente però un uso estremamente efficiente delle risorse, permettendo creare una serie di sistemi indipendenti, i virtual-server, che girano sotto lo stesso kernel, utilizzando lo stesso filesystem ed un unico stack di rete, che pur non essendo macchine virtuali in senso stretto, nella gestione ordinaria possono essere tranquillamente considerate come tali.

Ovviamente non trattandosi di una tecnologia di virtualizzazione, linux-vserver non consente di installare un virtual-server con un sistema operativo diverso, come Windows. Qualora si abbiano di queste esigenze si dovrà ricorrere a tecnologie alternative come Xen o KVM.

Come accennato linux-vserver è supportato a partire da Debian Etch, una volta installato il sistema base (queste note fanno riferimento alla versione distribuita con Lenny), si dovrà installare il kernel modificato per l'uso di linux-vserver, con il comando:

aptitude install linux-image-vserver-686

alternativamente, se la macchina ha più di 2Gb di RAM, si dovrà installare il pacchetto linux-image-vserver-686. Per la gestione dei virtual-server si dovranno inoltre installare i pacchetti:

aptitude install util-vserver vserver-debiantools

Una volta completata l'installazione si riavvi la macchina con il nuovo kernel (in genere questo avviene automaticamente se si usa GRUB), si potrà verificare che questo è avvenuto correttamente se si otterrà qualcosa del tipo:

root@vserver:~# uname -r
2.6.26-1-vserver-686

A questo punto il sistema ospite è pronto e si può passare alla creazione dei propri virtual-server, se però si effettuano le operazioni via rete usando ssh per collegarsi al sistema ospite è opportuno modificarne la configurazione. Questo è dovuto al fatto che quando si crea un virtual-server e gli si assegna un indirizzo IP in realtà viene comunque usato lo stack TCP/IP della macchina ospite, per cui se su questa esiste un processo che ascolta sull'indirizzo generico (come è il default per sshd) questo riceverà tutte le connessioni, anche per gli IP gestiti poi dai vari virtual-server.

Per questo motivo, qualora si debbano far operare dei servizi sul sistema ospite, questi vanno configurati in modo da metterli in ascolto esplicitamente sull'indirizzo IP ad essa assegnato. Dato che in una configurazione ordinaria non vi è nessuna necessità di attivare sul sistema ospite altri servizi di rete a parte sshd, ci limiteremo a riportare le istruzioni per la configurazione di quest'ultimo, che è tutto sommato immediata; basta infatti modificare il file /etc/ssh/sshd_config ed impostare esplicitamente una riga con qualcosa del tipo:

ListenAddress 192.168.1.38

(usando l'indirizzo IP del sistema ospite), dopo di che si potrà riavviare il servizio.

A questo punto si potrà procedere alla creazione dei virtual-server, nel caso di Debian a questo scopo ci viene incontro il comando newvserver, che altro non è che una interfaccia semplificata al comando vserver, per creare un primo virtual server di test si potrà pertanto usare il comando:

newvserver --hostname vtestlenny --domain fi.trl --ip 192.168.1.202/24

Il comando utilizza deboostrap per creare un un nuovo virtual-server con nome vtestlenny assengnandogli l'indirizzo IP 192.168.1.202/24, se non si specifica niente altro verrà installata una altra Lenny, ma esistono una serie di opzioni del comando che consentono di modificare il sistema installato, le più importanti delle quali sono riportate nella seguente tabella:

Opzione Significato
--dist distribuzione da installare, il default è lenny, si può specificare una versione qualunque di Debian
--interface interfaccia di rete da usare, il default è eth0

Questo significa che se si vuole installare un server con Etch basterà eseguire al posto del precedente il comando:

newvserver --hostname vtestetch --domain fi.trl --ip 192.168.1.203/24 --dist etch

Inoltre si può usare il file /etc/vservers/newvserver-vars come file di configurazione per il comando newvserver, questo altro non è che un segmento di codice shell dove definire delle opportune variabili, che poi modificano il comportamento del comando.

Come accennato newvserver non è che una interfaccia semplificata al comando vserver, il programma di gestione dei virtual-server. Con questo si possono creare macchine virtuali in maniera generica, così come cancellarle, copiarle, e compiere ogni tipo di operazione sulle stesse. Il comando ha la sintassi generale:

vserver <nomevserver> <operazione> [opzioni]

dove le principali operazioni sono riassunte nella seguente tabella:

Operazione Significato*
build Crea un nuovo ''virtual-server''
delete Rimuove un ''virtual-server'' (e cancella i relativi file)
start Avvia un ''virtual-server''
stop Ferma un ''virtual-server'' (con uno shutdown)
enter Entra in un ''virtual-server''

Si tenga presente che tutti i virtual-server vengono installati sotto /var/lib/vservers, in altrettante directory con il nome degli stessi. Se non si dispone di sufficiente spazio su /var sarà necessario usare un link simbolico per portare la suddetta directory su un'altro filesystem.

Si tenga presente che se si vuole che un virtual-server venga automaticamente avviato nella procedura di boot è necessario che sia presente ed installato (come per default) lo script di avvio util-vserver, con questo tutto quello che serve è marcare i virtual-server da avviare con qualcosa del tipo:

echo "default" > /etc/vservers/vtestlenny/apps/init/mark
<pre>
none    /proc        proc    defaults        0 0
none    /tmp        tmpfs    size=16m,mode=1777    0 0
none    /dev/pts    devpts    gid=5,mode=620        0 0
</pre>
togliendo ad esempio la seconda riga.

<pre>
<pre>
vserver:~# vserver vtestetch hashify
Failed to initialize unification for vserver
</pre>
inoltre per poter utilizzare il comando il _virtual-server_ deve essere attivo, in sostanza, per ricapitolare, occorrerà che siano stati eseguiti i comandi:
<pre>
mkdir /etc/vservers/vtestetch/apps/vunify
vserver vtestetch start
vserver vtestetch hashify
</pre>
<pre>
<pre>
find /var/lib/vservers/.hash -type f -links 1 -print0 | xargs -0 rm
</pre>
da inserire eventualmente all'interno di un _cron job_.

Aggiornato da Simone Piccardi oltre 13 anni fa · 11 revisions