Progetto

Generale

Profilo

LinuxVserverHowto » Cronologia » Versione 5

Amministratore Truelite, 06-11-2008 20:15

1 1 Amministratore Truelite
[[TracNav(TOC)]]
2 2 Amministratore Truelite
3 1 Amministratore Truelite
= Come creare un ambiente "virtualizzato" con linux-vserver su Lenny =
4
5 2 Amministratore Truelite
Il supporto per [http://linux-vserver.org/ linux-vserver] è presente in Debian a partire da ''Etch''. La tecnologia dei ''container'' usata da [http://linux-vserver.org/ 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.
6
7
Ovviamente non trattandosi di una tecnologia di virtualizzazione, [http://linux-vserver.org/ 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. 
8
9
Come accennato [http://linux-vserver.org/ 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 [http://linux-vserver.org/ linux-vserver], con il comando:
10
{{{
11
aptitude install linux-image-vserver-686
12
}}}
13 3 Amministratore Truelite
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:
14 2 Amministratore Truelite
{{{
15
aptitude install util-vserver vserver-debiantools
16 1 Amministratore Truelite
}}}
17 3 Amministratore Truelite
18
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:
19
{{{
20
root@vserver:~# uname -r
21
2.6.26-1-vserver-686
22
}}}
23
24
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''. 
25
26
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 assegnata. 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:
27
{{{
28
ListenAddress 192.168.1.38
29
}}}
30
(usando l'indirizzo IP del sistema ''ospite''), dopo di che si potrà riavviare il servizio.
31
32
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:
33
{{{
34
newvserver --hostname vtestlenny --domain fi.trl --ip 192.168.1.202/24
35
}}}
36
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:
37
||'''Opzione'''     ||'''Significato'''||
38
|| {{{--dist}}}     || distribuzione da installare, il default è {{{lenny}}}, su può specificare una versione qualunque di Debian ||
39
|| {{{--interface}}}|| interfaccia di rete da usare, il default è {{{eth0}}}
40
41
Questo significa che se si vuole installare un server con ''Etch'' basterà eseguire al posto del precedente il comando:
42
{{{
43
newvserver --hostname vtestetch --domain fi.trl --ip 192.168.1.203/24 --dist etch
44
}}}
45
46
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.
47
48
Come accennato {{{newvserver}}} non è che una interfaccia semplificata al comando {{{vserver}}}, il programma di gestione dei ''virtual-server''
49 4 Amministratore Truelite
50
Si tenga presente che tutti i ''virtual-server'' vengono installati sotto {{{/var/lib/vservers}}}, se non si dispone di sufficiente spazio su {{{/var}}} sarà necessario usare un link simbolico per portare la suddetta directory su un'altro filesystem. 
51 5 Amministratore Truelite
52
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:
53
{{{
54
echo "default" > /etc/vservers/vtestlenny/apps/init/mark
55
}}}
56
57
Una delle caratteristiche più interessanti di [http://linux-vserver.org/ linux-vserver] è la cosiddetta ''Unification'' cioè la possibilità, quando si hanno una serie di file identici all'interno dei singoli ''virtual-server'' di mantenere sul disco una sola copia attraverso l'uso di speciali hard-link. La versione corrente del sistema consente di identificare detti file tramite un hash. La funzionalità deve però essere abilitata per ciascun ''virtual-server'', nel caso di {{{vtestetch}}} ad esempio questo può essere fatto con il comando {{{vserver <nome> vhashify}}}, ma perché questo funzioni deve essere preventivamente creata la directory {{{/etc/vservers/<nome>/apps/vunify}}}, altrimenti si avrà un messaggio di errore del tipo:
58
{{{
59
vserver:~# vserver vtestetch hashify
60
Failed to initialize unification for vserver
61
}}}
62
inoltre per poter utilizzare il comando il ''virtual-server'' deve essere attivo, in sostanza, per ricapitolare, occorrerà che siano stati eseguiti i comandi:
63
{{{
64
mkdir /etc/vservers/vtestetch/apps/vunify
65
vserver vtestetch start
66
vserver vtestetch hashify
67
}}}
68
si tenga presente però che questo meccanismo opera creando i link, ma non cancella quelli non più in uso, pertanto se si vuole ripulire il sistema da file non più utilizzati all'interno di nessun ''virtual-server'' occorrerà cancellarli manualmente, detti file sono mantenuti nella directory {{{/var/lib/vservers/.hash/}}}, per cui sarà sufficiente un comando come:
69
{{{
70
find /var/lib/vservers/.hash -type f -links 1 -print0 | xargs -0 rm
71
}}}
72
da inserire eventualmente all'interno di un ''cron job''.