Progetto

Generale

Profilo

LinuxOpenVZHowto » Cronologia » Versione 39

Simone Piccardi, 15-02-2011 17:12

1 36 Simone Piccardi
h1. Come creare un ambiente "virtualizzato" con _OpenVZ_ su Lenny
2 1 Amministratore Truelite
3 26 Amministratore Truelite
Il supporto per "OpenVZ":http://wiki.openvz.org/ è presente in Debian a partire da _Etch_. Come per Vserver la tecnologia dei _container_ usata da "OpenVZ":http://wiki.openvz.org/, 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.
4 1 Amministratore Truelite
5 26 Amministratore Truelite
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. 
6 1 Amministratore Truelite
7 26 Amministratore Truelite
h2. Installazione sistema ospite (HN)
8
9 36 Simone Piccardi
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 dello stesso sulla macchina ospite (il cosiddetto _Hardware Node_, o HN) con il comando:
10 33 Christopher R. Gabriel
11 1 Amministratore Truelite
<pre>
12 26 Amministratore Truelite
aptitude install linux-image-openvz-686
13 1 Amministratore Truelite
</pre>
14 33 Christopher R. Gabriel
15 36 Simone Piccardi
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 26 Amministratore Truelite
17 36 Simone Piccardi
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 34 Christopher R. Gabriel
19 26 Amministratore Truelite
<pre>
20 1 Amministratore Truelite
ln -s /var/lib/vz /vz
21 26 Amministratore Truelite
</pre>
22 1 Amministratore Truelite
23 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:
24 34 Christopher R. Gabriel
25 26 Amministratore Truelite
<pre>
26 1 Amministratore Truelite
# ps aux| grep vz
27
root      2488  0.0  0.0      0     0 ?        S    15:20   0:00 [vzmond]
28 26 Amministratore Truelite
</pre>
29 34 Christopher R. Gabriel
30 1 Amministratore Truelite
e controllando lo stato con:
31 34 Christopher R. Gabriel
32 26 Amministratore Truelite
<pre>
33 1 Amministratore Truelite
# vzlist -a
34 7 Amministratore Truelite
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
35 26 Amministratore Truelite
</pre>
36 34 Christopher R. Gabriel
37 9 Amministratore Truelite
che sarà vuoto non essendo stato creato alcun VE.
38 1 Amministratore Truelite
39 26 Amministratore Truelite
h2. Creazione di un Virtual Environment da un template
40
41 36 Simone Piccardi
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 creare come vedremo più avanti, o scaricare già pronti da "questo sito":http://download.openvz.org/template/precreated/. Nel caso si usi un _template_ giù pronto questo dovrà essere salvato nella directory @/var/lib/vz/template/cache@, ad esempio per una Debian si potrà fare: 
42 1 Amministratore Truelite
43 35 Christopher R. Gabriel
<pre>
44 26 Amministratore Truelite
cd /vz/template/cache
45 1 Amministratore Truelite
wget http://download.openvz.org/template/precreated/debian-5.0-x86.tar.gz
46 26 Amministratore Truelite
</pre>
47 35 Christopher R. Gabriel
48 5 Amministratore Truelite
(nel caso si è scaricata è la versione per 686, si usi quella a 64 bit per macchine a 64 bit). 
49 9 Amministratore Truelite
50 36 Simone Piccardi
Dopo di che la creazione di un VE da 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 (nel caso di Lenny è @DEF_OSTEMPLATE="debian"@) che indica il _template_ di default da usare se non se ne indica esplicitamente uno per nome. Si tenga presente però che questo 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: 
51 35 Christopher R. Gabriel
52 26 Amministratore Truelite
<pre>
53 5 Amministratore Truelite
ln -s debian-5.0-x86.tar.gz debian.tar.gz
54 26 Amministratore Truelite
</pre>
55 5 Amministratore Truelite
56 26 Amministratore Truelite
A questo punto si potrà creare un nuovo VE indicando semplicemente un numero intero (quello che in gergo viene chiamato *VEID*) che serve ad identificare univocamente ciascuna macchina; nel nostro caso questo può essere creato semplicemente con il comando:
57 35 Christopher R. Gabriel
58 26 Amministratore Truelite
<pre>
59 1 Amministratore Truelite
# vzctl create 100 
60
Creating VE private area (debian)
61
Performing postcreate actions
62 5 Amministratore Truelite
VE private area was created
63 26 Amministratore Truelite
</pre>
64 35 Christopher R. Gabriel
65 1 Amministratore Truelite
che usa il VEID 100; una volta creato lo potrà far partire con il comando:
66 35 Christopher R. Gabriel
67 26 Amministratore Truelite
<pre>
68 1 Amministratore Truelite
# vzctl start 100 
69
Starting VE ...
70
VE is mounted
71
Setting CPU units: 1000
72
Configure meminfo: 65536
73
VE start in progress...
74 26 Amministratore Truelite
</pre>
75 35 Christopher R. Gabriel
76 1 Amministratore Truelite
verificarne l'attività con:
77 35 Christopher R. Gabriel
78 26 Amministratore Truelite
<pre>
79 1 Amministratore Truelite
# vzlist -a
80
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
81
       100          8 running -               -                               
82 26 Amministratore Truelite
</pre>
83 35 Christopher R. Gabriel
84 1 Amministratore Truelite
entrarci con:
85 35 Christopher R. Gabriel
86 26 Amministratore Truelite
<pre>
87 1 Amministratore Truelite
# vzctl enter 100
88
entered into VE 100
89
vzserver:/#
90 26 Amministratore Truelite
</pre>
91 35 Christopher R. Gabriel
92 1 Amministratore Truelite
fermarlo con:
93
94 35 Christopher R. Gabriel
<pre>
95 12 Amministratore Truelite
# vzctl stop 100
96
Stopping VE ...
97 1 Amministratore Truelite
VE was stopped
98
VE is unmounted
99 26 Amministratore Truelite
</pre>
100 35 Christopher R. Gabriel
101 37 Simone Piccardi
Come si può notare dalla lista precedente in questo modo però il nostro VE non è dotato né di un indirizzo IP né di un nome; una serie di proprietà delle singole macchine possono infatti essere specificate sia in sede di creazione con @vzctl create@, che successivamente con il comando @vzctl set@, passando a questi comandi delle opportune opzioni. Ad esempio per impostare un hostname si può creare un VE direttamente con il comando: 
102 35 Christopher R. Gabriel
103 1 Amministratore Truelite
<pre>
104 26 Amministratore Truelite
vzctl create 100  --hostname testlenny
105 1 Amministratore Truelite
</pre>
106 35 Christopher R. Gabriel
107 24 Amministratore Truelite
oppure una volta creato senza nome lo si può impostare con:
108 35 Christopher R. Gabriel
109 26 Amministratore Truelite
<pre>
110 1 Amministratore Truelite
vzctl set 100 --hostname testlenny --save
111 26 Amministratore Truelite
</pre>
112 35 Christopher R. Gabriel
113 36 Simone Piccardi
dove senza il @--save@ il comando effettua una assegnazione temporanea (effettuabile solo a VE attivo), mentre con @--save@ la configurazione viene registrata in maniera permanente e può essere fatta in qualunque momento. Effettuata questa configurazione la si potrà controllare con: 
114 35 Christopher R. Gabriel
115 26 Amministratore Truelite
<pre>
116 20 Amministratore Truelite
# vzlist -a
117 1 Amministratore Truelite
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
118
       100          5 running -               testlenny
119 26 Amministratore Truelite
</pre>
120 1 Amministratore Truelite
121
Se infine si vuole che il nuovo VE sia lanciato automaticamente all'avvio della macchina, si dovrà attivarne la partenza in maniera esplicita con:
122
123 35 Christopher R. Gabriel
<pre>
124 1 Amministratore Truelite
vzctl set 103 --onboot yes --save
125 26 Amministratore Truelite
</pre>
126 1 Amministratore Truelite
127
h2. Configurazione della rete
128
129 36 Simone Piccardi
Una delle caratteristiche più interessanti di _OpenVZ_ (in particolare rispetto a _Vserver_) è quella di consentire una separazione netta della rete fra i vari VE. Il default è quello che fa ricorso ad una speciale interfaccia virtuale, @venet@ che opera a livello di routing IP diretto. E' possibile anche usare una interfaccia virtuale ethernet, veth, che realizza una comunicazione diretta fra interfacce ethernet, su cui torneremo più avanti. 
130 1 Amministratore Truelite
131 36 Simone Piccardi
h3. Configurazione di rete con @venet@
132 1 Amministratore Truelite
133 36 Simone Piccardi
La configurazione più comune è quella realizzata attraverso l'uso di una interfaccia virtuale @venet@, in questo caso la gestione degli indirizzi assegnati ai singoli VE è possibile solo dalla macchina ospite. Questo può comportare alcuni problemi nella fornitura di alcuni servizi (in particolare in questo l'interfaccia non è in grado di supportare pienamente IPv6) ma ha il grosso vantaggio di non consentire alle macchine virtuali di modificare i propri indirizzi IP o eseguire operazioni di basso livello sull'interfaccia, che in caso di cessione a terzi dell'amministrazione delle macchine virtuali sono un bonus di sicurezza.
134 26 Amministratore Truelite
135 36 Simone Piccardi
La configurazione della rete di un VE in questo caso viene effettuata attraverso il comando @vzctl set@ che di default usa l'interfaccia @venet@; per assegnare un IP ad un VE è sufficiente eseguire il comando:
136 31 Simone Piccardi
137 26 Amministratore Truelite
<pre>
138 1 Amministratore Truelite
vzctl set 100 --ipadd 192.168.0.100  --save
139
</pre>
140 26 Amministratore Truelite
141 35 Christopher R. Gabriel
da ripetere quante volte si vuole per assegnare ulteriori indirizzi che saranno aggiunti alla lista, questi potranno essere rimossi completamente con il comando: 
142 10 Amministratore Truelite
143 35 Christopher R. Gabriel
<pre>
144 26 Amministratore Truelite
vzctl set 100 --ipdel all --save
145 1 Amministratore Truelite
</pre>
146 35 Christopher R. Gabriel
147 36 Simone Piccardi
o singolarmente, specificando l'indirizzo IP al posto della parola chiave @all@.
148 1 Amministratore Truelite
149 36 Simone Piccardi
L'utilizzo di questa impostazione ha due effetti, nel sistema ospite verrà creata, all'avvio di ciascun VE, una rotta statica per ciascuno degli IP ad esso assegnati, i quali a loro volta, all'interno del VE, verranno impostati sulle interfacce virtuali @venet0:0@, @venet0:1@, ecc. configurate in modalità punto-punto con se stesse.
150 31 Simone Piccardi
151 36 Simone Piccardi
I meccanismo fa sì che pacchetti inviati dalla macchina ospite verso l'interfaccia venet vengano automaticamente instradati al VE che ha quell'indirizzo, mentre viceversa i pacchetti inviati dal VE verso quell'interfaccia emergono da questa sulla macchina ospite. L'interfaccia @venet@ fa sostanza da router ma il meccanismo a prima vista risulta abbastanza strano in quanto nel passaggio da macchina ospite a VE non c'è nessun hop; inoltre se si controlla la tabella di instradamento dentro un container si troverà qualcosa del tipo: 
152 31 Simone Piccardi
153 35 Christopher R. Gabriel
<pre>
154 1 Amministratore Truelite
# route -n
155 10 Amministratore Truelite
Kernel IP routing table
156 1 Amministratore Truelite
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
157
192.0.2.1       0.0.0.0         255.255.255.255 UH    0      0        0 venet0
158
0.0.0.0         192.0.2.1       0.0.0.0         UG    0      0        0 venet0
159
</pre>
160 26 Amministratore Truelite
161 36 Simone Piccardi
che fa riferimento ad un indirizzo che non è assegnato a nessuna interfaccia, si tratta infatti dell'impostazione di un default gateway fittizio (uno qualunque facente riferimento all'interfaccia @venet0@ funzionerebbe lo stesso), che serve solo a dirigere i pacchetti in uscita verso gli altri indirizzi all'interfaccia @venet0@, da cui emergeranno nella macchina ospite. 
162 31 Simone Piccardi
163 1 Amministratore Truelite
Questo meccanismo piuttosto complesso ha però il risultato di rendere ogni VE del tutto indipendente dagli altri, e consente di impostare delle regole di firewall all'interno dei singoli VE senza dover essere costretti, come avveniva con VServer, a gestire le regole esclusivamente a livello di sistema ospite. 
164
165
Una volta assegnato l'IP al nostro container il resto della configurazione deve essere effettuato sulla macchine ospite, che deve occuparsi di instradarlo correttamente verso internet, per questo una delle configurazioni essenziali è l'abilitazione del reinoltro dei pacchetti, da farsi manualmente con il comando:
166 35 Christopher R. Gabriel
167 26 Amministratore Truelite
<pre>
168 1 Amministratore Truelite
echo 1 > /proc/sys/net/ipv4/ip_forward
169 26 Amministratore Truelite
</pre>
170 35 Christopher R. Gabriel
171 36 Simone Piccardi
e da impostare permanentemente inserendo in @/etc/sysctl.conf@ la riga: 
172 35 Christopher R. Gabriel
173 26 Amministratore Truelite
<pre>
174 20 Amministratore Truelite
net.ipv4.ip_forward=1
175 26 Amministratore Truelite
</pre>
176 1 Amministratore Truelite
177 36 Simone Piccardi
Viene inoltre consigliato, quando si effettua la configurazione di VE con IP pubblico proprio, di abilitare il _proxy arp_ per l'interfaccia della macchina ospite dietro la quale operano, questo si fa manualmente con il comando:
178 1 Amministratore Truelite
179 35 Christopher R. Gabriel
<pre>
180 26 Amministratore Truelite
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
181 21 Amministratore Truelite
</pre>
182 26 Amministratore Truelite
183 36 Simone Piccardi
e si imposta in modo permanentemente inserendo in @/etc/sysctl.conf@ la riga: 
184 35 Christopher R. Gabriel
185 1 Amministratore Truelite
<pre>
186 26 Amministratore Truelite
net.ipv4.conf.eth0.proxy_arp=1
187 1 Amministratore Truelite
</pre>
188 26 Amministratore Truelite
189 1 Amministratore Truelite
Il primo caso è quello in cui per i VE si utilizzano degli IP privati, in questo caso perché internet sia raggiungibile occorrerà effettuare un opportuno NAT degli stessi, per cui si dovrà impostare anche:
190 22 Amministratore Truelite
191 1 Amministratore Truelite
<pre>
192 26 Amministratore Truelite
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
193 1 Amministratore Truelite
</pre>
194 22 Amministratore Truelite
195 39 Simone Piccardi
196 1 Amministratore Truelite
A parte la configurazione degli indirizzi e dell'instradamento, un'altra configurazione necessaria a consentire l'uso della rete ai singoli VE è quella del DNS, che può essere effettuata con il comando:
197
198
<pre>
199 35 Christopher R. Gabriel
vzctl set 100 --nameserver IP.PUB.DEL.DNS --save
200 1 Amministratore Truelite
</pre>
201 39 Simone Piccardi
202
e quella del dominio locale in cui eseguire le ricerche, effettuabile con:
203
204
<pre>
205
vzctl set 100 --searchdomain dominio.local --save
206
</pre>
207
208
che sono i comandi che consentono di creare le opportune direttive in @/etc/sysctl.conf@.
209 1 Amministratore Truelite
210 26 Amministratore Truelite
211 36 Simone Piccardi
h3. Configurazione di rete con @veth@
212 1 Amministratore Truelite
213
Come accennato questa modalità di gestione della rete è leggermente meno efficiente e più complessa rispetto alla precedente, ma consente di delegare al VE la gestione di una vera e propria interfaccia ethernet virtuale, sulla quale compiere tutte le operazioni volute. Inoltre in caso di macchine dotate di più interfacce di rete consente anche di associare un VE ad una interfaccia o all'altra, ottenendo una separazione delle rispettive reti.
214
215 26 Amministratore Truelite
Questa modalità è alternativa alla precedente, e non si deve pertanto assegnare un IP dall'HN, ma farlo direttamente all'interno del VE, come una macchina reale; per questo, qualora esso fosse presente, occorre rimuoverlo preventivamente con il comando: 
216 1 Amministratore Truelite
217 35 Christopher R. Gabriel
<pre>
218 1 Amministratore Truelite
vzctl set 100 --ipdel all --save
219 26 Amministratore Truelite
</pre>
220 31 Simone Piccardi
221 36 Simone Piccardi
inoltre occorre anche eliminare il _template_ del file @/etc/network/interfaces@ usato dai singoli VE, che si ritrova a partire dai file relativi a ciascuno di essi posti in @/vz/private/VEID/@. Una volta fatto questo si potrà passare alla creazione di una interfaccia ethernet virtuale da assegnare al container VEID con il comando: 
222 1 Amministratore Truelite
223 35 Christopher R. Gabriel
<pre>
224 26 Amministratore Truelite
vzctl set VEID --netif_add ethN --save
225 1 Amministratore Truelite
</pre>
226 31 Simone Piccardi
227 36 Simone Piccardi
Una volta eseguito il comando sull'hardware node sarà disponibile una nuova interfaccia virtuale @vethVEID.N@ corrispondente alla interfaccia @ethN@ in modo che ogni pacchetto inviato sulla prima uscirà sulla seconda e viceversa. Si possono poi anche specificare ulteriori dettagli, la sintassi completa del comando precedente infatti è: 
228 1 Amministratore Truelite
229
<pre>
230 35 Christopher R. Gabriel
vzctl set VEID --netif_add <ifname>[,<mac>,<host_ifname>,<host_mac>,<bridge>] --save
231 26 Amministratore Truelite
</pre>
232 22 Amministratore Truelite
233 36 Simone Piccardi
che consente di impostare sia MAC address che nome sia per l'interfaccia nel VE che nell'HN (cosa che in genere non si fa mai, utilizzando i default del comando) ed infine un eventuale _bridge_ (che invece è la configurazione consigliata) attraverso il quale usare l'interfaccia. 
234 35 Christopher R. Gabriel
235 36 Simone Piccardi
Benché sia possibile usare direttamente le varie interfacce virtuali @vethVEID.N@ assegnandovi gli indirizzi usati all'interno del VE corrispondente ed instradandovi i pacchetti, in realtà la modalità più comoda e più pulita per utilizzare questa modalità di gestione della rete è quella di usare un _bridge_ sull'HN per associare ad una interfaccia ethernet reale le varie interfacce virtuali, senza doversi preoccupare di effettuare instradamenti; con questa modalità il quinto parametro del comando precedente consente di indicare agli script di inizializzazione della rete a quale _bridge_ associare l'interfaccia ethernet virtuale del proprio VE.
236 1 Amministratore Truelite
237 36 Simone Piccardi
Per questa modalità occorre però configurare il proprio hardware node per usare le interfacce in bridging, per questo occorre anzitutto installare il pacchetto @bridge-utils@, dopo di che si dovrà effettuare impostare l'HN per usare il _bridge_ invece dell'interfaccia fisica, nel caso di Debian questo potrà essere fatto usando un @/etc/network/interfaces@ come il seguente: 
238 1 Amministratore Truelite
239 35 Christopher R. Gabriel
<pre>
240 1 Amministratore Truelite
auto br0
241 9 Amministratore Truelite
iface br0 inet static
242
      address 192.168.1.1
243 1 Amministratore Truelite
      netmask 255.255.255.0
244 26 Amministratore Truelite
      bridge_ports eth0
245 1 Amministratore Truelite
      bridge_maxwait 5
246 26 Amministratore Truelite
</pre>
247 1 Amministratore Truelite
248 36 Simone Piccardi
Una volta configurata la rete dell'HN per usare il bridge @br0@ al posto dell'interfaccia fisica @eth0@, si potranno creare le interfacce virtuali dei VE configurando l'associazione al bridge utilizzando un comando come il seguente: 
249 1 Amministratore Truelite
250 35 Christopher R. Gabriel
<pre>
251
vzctl set 100 --netif_add eth0,,,,br0 --save
252 31 Simone Piccardi
</pre>
253
254 36 Simone Piccardi
Perché l'associazione sia automatica però questo non è sufficiente, deve anche essere indicato agli script di configurazione della rete delle macchine virtuali di utilizzare questa configurazione; allo scopo è sufficiente creare il file @/etc/vz/vznet.conf@ con il seguente contenuto: 
255 35 Christopher R. Gabriel
256 38 Simone Piccardi
<pre>
257 15 Amministratore Truelite
#!/bin/bash
258 26 Amministratore Truelite
EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
259 1 Amministratore Truelite
</pre>
260 35 Christopher R. Gabriel
261 36 Simone Piccardi
che utilizza lo script citato per effettuare automaticamente l'associazione della interfaccia ethernet virtuale @veth100.0@ creata dal comando precedente al bridge @br0@ quando il VE viene avviato, e per disassociarla quando questo viene fermato. Lo script si incarica anche di eseguire le opportune chiamate a @sysctl@ per abilitare i necessari parametri associati all'interfaccia.
262 26 Amministratore Truelite
263 36 Simone Piccardi
Con questa configurazione si potrà poi passare a configurare la rete all'interno del VE come se l'interfaccia eth0 in esso presente fosse una normale interfaccia ethernet; avendo associato la corrispondente @veth100.0@ al bridge i pacchetti verranno automaticamente fatti uscire sulla scheda di rete fisica @eth0@ dell'hardware node come se provenissero da un ramo di rete ethernet associato a questa appunto tramite il bridge. 
264 1 Amministratore Truelite
265 25 Amministratore Truelite
h2. Configurazione delle proprietà di un VE
266 26 Amministratore Truelite
267 36 Simone Piccardi
Una delle caratteristiche più interessanti di OpenVZ è quella di un controllo estremamente dettagliato sulle risorse che si possono assegnare ai vari VE. In particolare tutta una serie di risorse sono associate a dei _bean counters_ che ne tracciano l'utilizzo, sui quali poi si possono imporre soft ed hard limit. Ciascuna di queste risorse è identificata da un nome, e se ne può anche controllare l'utilizzo, le impostazioni e l'eventuale superamento dei limiti nel file @/proc/user_beancounters@. 
268 32 Simone Piccardi
269 26 Amministratore Truelite
Ad esempio se la RAM disponibile in un VE è insufficiente, e se ne vuole aumentare la disponibilità con un limite fra 512M e 1G si potrà utilizzare il comando:
270 1 Amministratore Truelite
271
<pre>
272 26 Amministratore Truelite
vzctl set 100 --privvmpages 512M:1G --save
273 1 Amministratore Truelite
</pre>
274
275 36 Simone Piccardi
se non si vogliono imporre limiti si potrà usare il valore speciale @unlimited@ al posto del valore numerico. 
276 32 Simone Piccardi
277 36 Simone Piccardi
Oltre alle risorse associate ai _bean counters_ si possono impostare limiti anche su altre risorse generiche come lo spazio disco operando allo stesso modo con ulteriori parametri; se ad esempio si vuole impostare un limite sullo spazio disco totale si potrà usare il comando: 
278 35 Christopher R. Gabriel
279 1 Amministratore Truelite
<pre>
280
vzctl set 100 --save --diskspace 10G
281 7 Amministratore Truelite
</pre>
282 1 Amministratore Truelite
283 36 Simone Piccardi
e dopo averlo utilizzato il VE vedrà il valore impostato come totale, anche in seguito all'esecuzione del comando @df@. 
284 32 Simone Piccardi
285 10 Amministratore Truelite
286 36 Simone Piccardi
h2. Creazione manuale di un _template_
287 26 Amministratore Truelite
288 36 Simone Piccardi
Nel caso si voglia creare un proprio template si potrà, nel caso di Debian, ricorrere a @deboostrap@, in questo caso il primo passo è installarlo nel sistema ospite con:
289 35 Christopher R. Gabriel
290 26 Amministratore Truelite
<pre>
291 1 Amministratore Truelite
aptitude install deboostrap
292
</pre>
293 35 Christopher R. Gabriel
294 1 Amministratore Truelite
poi si potrà creare un ambiente iniziale con:
295 35 Christopher R. Gabriel
296 8 Amministratore Truelite
<pre>
297 26 Amministratore Truelite
debootstrap --arch amd64 lenny /var/lib/vz/private/100 http://ftp.it.debian.org/debian
298 1 Amministratore Truelite
</pre>
299 35 Christopher R. Gabriel
300 1 Amministratore Truelite
(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:
301 35 Christopher R. Gabriel
302 8 Amministratore Truelite
<pre>
303 26 Amministratore Truelite
vzctl set 100 --applyconfig vps.basic --save
304 1 Amministratore Truelite
</pre>
305 35 Christopher R. Gabriel
306 36 Simone Piccardi
inoltre occorrerà aggiungere alla configurazione del VE la variabile @OSTEMPLATE@ con: 
307 35 Christopher R. Gabriel
308 26 Amministratore Truelite
<pre>
309 8 Amministratore Truelite
echo 'OSTEMPLATE="debian"' >> /etc/vz/conf/100.conf
310 1 Amministratore Truelite
</pre>
311 35 Christopher R. Gabriel
312 8 Amministratore Truelite
infine si potrà configurare la rete come visto in precedenza per poter operare all'interno dello stesso.
313
314 36 Simone Piccardi
Prima di avviare il nuovo VE occorrerà però eseguire alcune correzioni per adattare quanto installato da deboostrap ad 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@, e cancellare tutti gli pacchetti non necessari (come quanto relativo ad @udev@ e a al kernel), questo si può ottenere con i comandi: 
315 35 Christopher R. Gabriel
316 26 Amministratore Truelite
<pre>
317 8 Amministratore Truelite
sed -i -e '/getty/d' /var/lib/vz/private/100/etc/inittab
318
sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /var/lib/vz/private/100/etc/*syslog.conf
319 10 Amministratore Truelite
rm -f /var/lib/vz/private/100/etc/mtab
320 8 Amministratore Truelite
ln -s /proc/mounts /var/lib/vz/private/100/etc/mtab
321 26 Amministratore Truelite
</pre>
322 14 Amministratore Truelite
323 36 Simone Piccardi
A questo punto si potrà far partire il nostro VE e completare le operazioni di aggiornamento e pulizia dal suo interno, per questo si eseguano i comandi:
324 35 Christopher R. Gabriel
325 26 Amministratore Truelite
<pre>
326 8 Amministratore Truelite
apt-get update
327 13 Amministratore Truelite
apt-get upgrade
328 8 Amministratore Truelite
apt-get clean
329 1 Amministratore Truelite
dpkg --purge module-init-tools
330 8 Amministratore Truelite
apt-get remove --purge XXX (lista di altra roba da completare)
331 1 Amministratore Truelite
update-rc.d -f klogd remove
332 8 Amministratore Truelite
</pre>
333
334 1 Amministratore Truelite
e si rimuova tutto quello ritenuto non necessario. 
335 35 Christopher R. Gabriel
336 8 Amministratore Truelite
Una volta completata la pulizia all'interno si potrà uscire e passare alla creazione del _template_, per questo però occorre prima rimuovere i dati di indirizzo e DNS inseriti per consentire al nostro VE di accedere ad internet, per questo si faccia:
337 1 Amministratore Truelite
338 35 Christopher R. Gabriel
<pre>
339 26 Amministratore Truelite
vzctl stop 100
340 1 Amministratore Truelite
vzctl set 100 --ipdel all --save
341 18 Amministratore Truelite
echo > /vz/private/100/etc/resolv.conf
342
rm /vz/private/100/etc/hostname
343
</pre>
344 35 Christopher R. Gabriel
345 1 Amministratore Truelite
e poi si potrò creare l'immagine del _template_ con:
346 35 Christopher R. Gabriel
347 26 Amministratore Truelite
<pre>
348 18 Amministratore Truelite
cd /vz/private/100/
349
tar --numeric-owner -zcf /vz/template/cache/debian-5.0-x86_64-minimal.tar.gz .
350 1 Amministratore Truelite
</pre>
351 35 Christopher R. Gabriel
352 1 Amministratore Truelite
ed a questo punto una volta creato il link simbolico:
353 35 Christopher R. Gabriel
354 26 Amministratore Truelite
<pre>
355 18 Amministratore Truelite
ln -sf debian-5.0-x86_64-minimal.tar.gz debian.tar.gz
356 1 Amministratore Truelite
</pre>
357 35 Christopher R. Gabriel
358 1 Amministratore Truelite
si potrà creare un nuovo VE con:
359 35 Christopher R. Gabriel
360 1 Amministratore Truelite
<pre>
361 26 Amministratore Truelite
vzctl create 101
362 1 Amministratore Truelite
</pre>
363 35 Christopher R. Gabriel
364 1 Amministratore Truelite
e verificare che funziona con:
365 35 Christopher R. Gabriel
366 26 Amministratore Truelite
<pre>
367 1 Amministratore Truelite
vzctl start 101 
368 26 Amministratore Truelite
vzctl enter 101 
369 1 Amministratore Truelite
</pre>
370
371
372 26 Amministratore Truelite
h2. Dump e backup
373 1 Amministratore Truelite
374 36 Simone Piccardi
Un'altro programma molto utile per la gestione dei VE è @vzdump@, il pacchetto Debian è disponibile solo da Squeeze, ma può essere facilmente installato (almeno fino alla versione 1.2.4-2) anche su Lenny. Il comando consente di creare un dump di un VE, anche attivo, che può essere poi facilmente ripristinato con il comando @vzrestore@.
375 26 Amministratore Truelite
376 36 Simone Piccardi
Esistono tre modalità diverse di eseguire il comando, ma quelle realmente significative sono due. La migliore è quella attivata con l'opzione @--snapshot@ ma richiede che i file siano stati installati su un volume logico e che sia disponibile LVM ed in tal caso il dump sarà fatto senza downtime. L'altra alternativa è usare @--suspend@, in tal caso verranno fatti due cicli di rsync sospendendo la macchina solo per il secondo ciclo, in modo da minimizzare il downtime. Questo secondo metodo ha il vantaggio che si può usare sempre, ma porta ad un limitato tempo di fermo per la macchina.
377 26 Amministratore Truelite
378 1 Amministratore Truelite
Per eseguire un dump basta indicare il VEID del VE che si vuole salvare, non indicando nulla saranno salvati tutti quelli presenti. Ad esempio si potrà salvare la precedente macchina virtuale con:
379 35 Christopher R. Gabriel
380 26 Amministratore Truelite
<pre>
381 1 Amministratore Truelite
vzdump --snapshot 101
382
</pre>
383 35 Christopher R. Gabriel
384 36 Simone Piccardi
e verranno creati un @.tar@ ed un @.log@ in @/var/lib/vz/dump/@, con nomi nella forma: 
385 35 Christopher R. Gabriel
386 26 Amministratore Truelite
<pre>
387 1 Amministratore Truelite
vzdump-openvz-VEID-YYYY_MM_DD-HH_MM_SS
388 26 Amministratore Truelite
</pre>