Progetto

Generale

Profilo

LinuxOpenVZHowto » Cronologia » Versione 7

Amministratore Truelite, 09-11-2009 19:43

1 1 Amministratore Truelite
[[TracNav(TOC)]]
2
3
= Come creare un ambiente "virtualizzato" con OpenVZ su Lenny =
4
5 2 Amministratore Truelite
Il supporto per [http://wiki.openvz.org/ OpenVZ] è presente in Debian a partire da ''Etch''. Come per Vserver la tecnologia dei ''container'' usata da [http://wiki.openvz.org/ OpenVZ], pur non fornendo una macchina virtuale vera e propria, consente  un uso estremamente efficiente delle risorse, permettendo creare una serie di sistemi indipendenti, chiamati ''virtual-environment'' (da qui in breve VE), 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 1 Amministratore Truelite
7
Ovviamente non trattandosi di una tecnologia di virtualizzazione, 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 7 Amministratore Truelite
== Installazione sistema ospite ==
10
11 3 Amministratore Truelite
Come accennato OpenVZ è 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:
12 1 Amministratore Truelite
{{{
13
aptitude install linux-image-openvz-686
14
}}}
15 2 Amministratore Truelite
alternativamente, se la macchina è stata installata a 64 bit, si dovrà installare il pacchetto {{{linux-image-openvz-amd64}}}. L'installazione del kernel installa automaticamente anche i tool di base necessari alla gestione delle macchine contenute.
16
17 4 Amministratore Truelite
Su Debian tutti i file di OpenVZ e dei VE vengono mantenuti sotto {{{/var/lib/vz/}}}, ma per compatibilità con altre versioni è suggerito creare un link simbolico sotto la radice come:
18
{{{
19
ln -s /var/lib/vz /vz
20
}}}
21
22 2 Amministratore Truelite
Una volta installato il tutto occorrerà riavviare la macchina per utilizzare il nuovo server, eseguito il riavvio si potrà verificare il funzionamento del sistema verificando che in processo di controllo sia attivo:
23
{{{
24
# ps aux| grep vz
25
root      2488  0.0  0.0      0     0 ?        S    15:20   0:00 [vzmond]
26
}}}
27
e controllando lo stato con:
28
{{{
29
# vzlist -a
30
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
31 1 Amministratore Truelite
}}}
32 3 Amministratore Truelite
che sarà vuoto non essendo stato creato alcun VE.
33 1 Amministratore Truelite
34 7 Amministratore Truelite
== Creazione di un Virtual Environment da un template ==
35
36 4 Amministratore Truelite
Il passo successivo è quello di installare un primo VE, per questo tornano estremamente utili i ''template'', degli scheletri di sistema da cui si può creare in maniera rapida e semplice un nuovo VE; si tratta in sostanza di archivi (in formato {{{.tar.gz}}}) che contengono l'immagine del filesystem di un intero sistema. Questi si possono scaricare già pronti da 
37
[http://download.openvz.org/template/precreated/ questo sito] e basta scaricarli nella directory {{{/var/lib/vz/template/cache}}}, ad esempio per una Debian si dovrà fare:
38
{{{
39
cd /vz/template/cache
40
wget http://download.openvz.org/template/precreated/debian-5.0-x86.tar.gz
41
}}}
42 5 Amministratore Truelite
(questa è la versione per 686, si usi quella a 64 bit per macchine a 64 bit). 
43 1 Amministratore Truelite
44 6 Amministratore Truelite
Dopo di che la creazione di un ''template'' può essere eseguita semplicemente con il comando {{{vzctl create}}}, questo in genere fa riferimento al file di configurazione generale di OpenVZ {{{/etc/vz/vz.conf}}} in cui viene definita la variabile {{{DEF_OSTEMPLATE="debian"}}} che indica il template di default da usare se non se ne indica esplicitamente uno per nome. Questo però fa riferimento ad un file con lo stesso nome sotto {{{/vz/template/cache}}} per cui se si è scaricato il file precedente occorrerà creare un link simbolico con:
45 5 Amministratore Truelite
{{{
46
ln -s debian-5.0-x86.tar.gz debian.tar.gz
47
}}}
48
49
A questo punto si potrà creare un nuovo VE indicandone semplicemente il numero identificativo (quello che in gergo viene chiamato '''VEID'''), nel nostro caso questo può essere creato semplicemente con il comando:
50
{{{
51
# vzctl create 100 
52
Creating VE private area (debian)
53
Performing postcreate actions
54
VE private area was created
55
}}}
56
che usa il VEID 100; una volta creato lo potrà far partire con il comando:
57
{{{
58
# vzctl start 100 
59
Starting VE ...
60
VE is mounted
61
Setting CPU units: 1000
62
Configure meminfo: 65536
63
VE start in progress...
64
}}}
65
verificarne l'attività con:
66
{{{
67
# vzlist -a
68
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
69
       100          8 running -               -                               
70
}}}
71
entrarci con:
72
{{{
73
# vzctl enter 100
74
entered into VE 100
75
vzserver:/#
76
}}}
77
fermarlo con:
78
{{{
79
# vzctl stop 100
80
Stopping VE ...
81
VE was stopped
82
VE is unmounted
83
}}}
84 1 Amministratore Truelite
85 7 Amministratore Truelite
== Configurazione della rete ==
86
87 6 Amministratore Truelite
Come si può notare dalla lista precedente in questo modo però il nostro VE non è dotato né di rete né di un nome, tutte queste proprietà possono essere specificate sia in sede di creazione, tramite opportune opzioni, che in seguito con il comando {{{vzctl set}}}, ad esempio per creare una macchina con IP {{{192.168.0.101}}} e nome {{{prova101}}} si potrà fare:
88
{{{
89
vzctl create 101 --ipadd 192.168.0.101  --hostname prova101
90
}}}
91 1 Amministratore Truelite
mentre per impostare nome ed IP alla macchina creata in precedenza sarà sufficiente:
92
{{{
93 7 Amministratore Truelite
vzctl set 100 --ipadd 192.168.0.100  --save
94
vzctl set 100 --hostname prova100 --save
95
}}}
96
ed inoltre si dovrà importare anche un DNS con:
97
{{{
98
vzctl set 100 --nameserver IP.PUB.DEL.DNS --save
99
}}}
100
101
102
103
Il meccanismo di default di funzionamento della rete infatti è attraverso l'interfaccia virtuale {{{vunet0}}}, che consente una connessione punto-punto fra il VE e la macchina ospite. La configurazione è abbastanza i pacchetti vengono instradati automaticamente su detta interfaccia e da detta interfaccia emergono sulla macchina ospite, che crea una rotta per la stessa. 
104
105
Se l'IP assegnato alla macchina interna è pubblico i due passi illustrati sono sufficienti, altrimenti occorrerà anche eseguire le ulteriori configurazioni:
106
{{{
107
echo 1 > /proc/sys/net/ipv4/ip_forward
108
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
109
}}}
110
111
112
incompleto...
113
114
115
== Creazione manuale di un template ==
116
117
Nel caso si voglia creare un template si potrò, nel caso di Debian, ricorrere a {{{deboostrap}}}, in questo caso il primo passo è installarlo nel sistema ospite con:
118
{{{
119
aptitude install deboostrap
120
}}}
121
poi si potrà creare un ambiente iniziale con:
122
{{{
123
debootstrap --arch amd64 lenny /var/lib/vz/private/100 http://ftp.it.debian.org/debian
124
}}} 
125
(si usi il valore di architettura adeguato alla propria macchina). Questo preparerà i file per un VE con id 100; una volta completato il comando occorrerà generare una opportuna configurazione per lo stesso con:
126
{{{
127
vzctl set 100 --applyconfig vps.basic --save
128
}}}
129
inoltre occorrerà aggiungere la variabile {{{OSTEMPLATE}}} con:
130
{{{
131
echo 'OSTEMPLATE="debian"' >> /etc/vz/conf/100.conf
132
}}}
133
infine si potrà configurare la rete come visto al punto precedente.
134
135
Prima di avviare il nuovo VE occorrerà però eseguire alcune correzioni per un ambiente che non corrisponde ad una vera macchina, in particolare si dovranno rimuovere le console virtuali da {{{/etc/inittab}}}, bloccare la scrittura sincrona sul syslog ed usare {{{/proc/mounts}}} al posto di {{{/etc/mtab
136
}}}, questo si può ottenere con i comandi:
137
{{{
138
sed -i -e '/getty/d' /var/lib/vz/private/100/etc/inittab
139
sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /var/lib/vz/private/100/etc/*syslog.conf
140
rm -f /var/lib/vz/private/100/etc/mtab
141
ln -s /proc/mounts /var/lib/vz/private/100/etc/mtab
142 6 Amministratore Truelite
}}}