OpenVZ Install · 6 min read · Nov 25, 2025
Installazione e utilizzo di OpenVZ su Ubuntu 13.04 (AMD64)
Installazione e utilizzo di OpenVZ su Ubuntu 13.04 (AMD64)
Versione 1.0
Autore: Falko Timme
Seguimi su Twitter
In questo HowTo descriverò come preparare un server Ubuntu 13.04 per OpenVZ. Con OpenVZ puoi creare più server virtuali privati (VPS) sullo stesso hardware, simile a Xen e al progetto Linux Vserver. OpenVZ è il ramo open-source di Virtuozzo, una soluzione di virtualizzazione commerciale utilizzata da molti fornitori che offrono server virtuali. La patch del kernel OpenVZ è concessa in licenza sotto la licenza GPL, e gli strumenti a livello utente sono sotto la licenza QPL.
Questo howto è inteso come una guida pratica; non copre i fondamenti teorici. Questi sono trattati in molti altri documenti sul web.
Questo documento viene fornito senza alcuna garanzia di alcun tipo! Voglio dire che questo non è l’unico modo per impostare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non rilascio alcuna garanzia che questo funzionerà per te!
1 Nota preliminare
Sto usando un sistema x86_64 (amd64) qui. Se sei su un sistema i386, alcuni comandi saranno leggermente diversi.
2 Installazione di OpenVZ
Per Ubuntu 13.04, non c’è un kernel OpenVZ nei repository ufficiali. Pertanto, dobbiamo installare OpenVZ dai pacchetti RPM ufficiali del progetto OpenVZ (vedi Installare il kernel da RPM su Debian 6.0) - con supporto ploop
2.1 Installazione dai pacchetti RPM ufficiali del progetto OpenVZ
Scarica l’ultima versione di vzkernel, vzctl, ploop e vzquota dai pacchetti RPM da http://wiki.openvz.org/Download/kernel/rhel6 e http://wiki.openvz.org/Download/utils, ad esempio come segue::
cd /tmp
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-2.6.32-042stab076.8.x86_64.rpm
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-devel-2.6.32-042stab076.8.x86_64.rpm
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-4.3.1-1.x86_64.rpm
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-core-4.3.1-1.x86_64.rpm
wget http://download.openvz.org/utils/ploop/1.7/ploop-1.7-1.x86_64.rpm
wget http://download.openvz.org/utils/ploop/1.7/ploop-lib-1.7-1.x86_64.rpm
wget http://download.openvz.org/utils/vzquota/3.1/vzquota-3.1-1.x86_64.rpm
Installa i seguenti pacchetti…
apt-get install fakeroot alien libcgroup1… e converti i pacchetti RPM in pacchetti DEB:
fakeroot alien --to-deb --scripts --keep-version vz*.rpm ploop*.rpmInstalla i pacchetti DEB come segue:
dpkg -i vz*.deb ploop*.deb Successivamente, dobbiamo assicurarci che il kernel corretto (il kernel OpenVZ) venga avviato quando riavvii il sistema. Nell’output dell’ultimo comando, dovresti vedere qualcosa del genere:
Impostazione di vzkernel (2.6.32-042stab076.8) …
update-initramfs: Generazione /boot/initrd.img-2.6.32-042stab076.8
ATTENZIONE: impossibile aprire /lib/modules/2.6.32-042stab076.8/modules.builtin: Nessun file o directory di questo tipo
ATTENZIONE: impossibile aprire /tmp/mkinitramfs_I0VIfE/lib/modules/2.6.32-042stab076.8/modules.builtin: Nessun file o directory di questo tipo
Generazione grub.cfg …
Trovata immagine linux: /boot/vmlinuz-3.8.0-19-generic
Trovata immagine initrd: /boot/initrd.img-3.8.0-19-generic
Trovata immagine linux: /boot/vmlinuz-2.6.32-042stab076.8
Trovata immagine initrd: /boot/initrd.img-2.6.32-042stab076.8
Trovata immagine memtest86+: /memtest86+.bin
fatto
Questo significa che c’è anche un altro kernel sul sistema (3.8.0), e il kernel openVZ (2.6.32) non è il primo nell’elenco. Quindi, per rendere il kernel OpenVZ il kernel predefinito, abbiamo due opzioni - regolare il kernel predefinito in GRUB (raccomandato) o rimuovere il/i kernel non-VZ.
Per regolare il kernel predefinito in GRUB, apri /etc/default/grub…
vi /etc/default/grub… e modifica la riga GRUB_DEFAULT (il conteggio inizia da 0; il nostro OpenVZ è il terzo kernel nel sottomenu Opzioni avanzate per GRUB di Ubuntu (che è la seconda opzione nel menu di avvio dopo il kernel 3.8.0), quindi dobbiamo inserire “1>2” qui (tra virgolette) - puoi trovare ulteriori informazioni sui sottomenu GRUB qui: https://help.ubuntu.com/community/Grub2/Submenus):
| [...] GRUB_DEFAULT="1>2" [...] |
Aggiorna GRUB successivamente:
update-grubPer rimuovere il kernel predefinito, esegui…
apt-get remove linux-image linux-image-3.8.0-19-generic… e aggiorna GRUB:
update-grubOra che ci siamo assicurati che il kernel corretto si avvii, possiamo procedere.
Successivamente dobbiamo controllare che stiamo usando UUID invece dei nomi dei dispositivi in /etc/fstab perché altrimenti il sistema potrebbe non avviarsi con il kernel openVZ. Esegui…
blkid… per scoprire gli UUID dei tuoi dispositivi/partizioni:
root@server1:/tmp# blkid
/dev/sda1: UUID=”9b8299f1-b2a2-4231-9ba1-4540fad76b0f” TYPE=”ext2”
/dev/sda5: UUID=”M83xtW-GofR-FFaa-myo1-T4Gw-grKe-Kg1Etc” TYPE=”LVM2_member”
/dev/mapper/server1–vg-root: UUID=”a5a6e916-64e1-4af9-8bd4-32491d7edcac” TYPE=”ext4”
/dev/mapper/server1–vg-swap_1: UUID=”a68ae8a2-c2cd-4e92-af08-a71661f8f719” TYPE=”swap”
root@server1:/tmp#
Apri /etc/fstab:
vi /etc/fstabIl mio originale /etc/fstab appare come segue (come puoi vedere, l’UUID della partizione /boot è già in uso, ma per / e swap, sono in uso i nomi dei dispositivi):
| # /etc/fstab: informazioni statiche sul file system. # # Usa 'blkid' per stampare l'identificatore univoco universale per un # dispositivo; questo può essere utilizzato con UUID= come un modo più robusto per nominare i dispositivi # che funziona anche se i dischi vengono aggiunti e rimossi. Vedi fstab(5). # # |
Modificalo in modo che vengano utilizzati gli UUID per tutte le partizioni:
| # /etc/fstab: informazioni statiche sul file system. # # Usa 'blkid' per stampare l'identificatore univoco universale per un # dispositivo; questo può essere utilizzato con UUID= come un modo più robusto per nominare i dispositivi # che funziona anche se i dischi vengono aggiunti e rimossi. Vedi fstab(5). # # |
Assicurati che OpenVZ si avvii automaticamente all’avvio:
update-rc.d vz defaults
update-rc.d vzeventd defaults
Successivamente dobbiamo collegare alcune librerie:
ln -s /usr/lib64/libvzctl-4.3.1.so /usr/lib
ln -s /usr/lib64/libploop.so /usr/lib
Se desideri utilizzare i contenitori ploop, fai questo:
apt-get install partedInoltre, apri /etc/init.d/vz…
vi /etc/init.d/vz… e aggiungi la riga mkdir $VARLOCK/ploop per assicurarti che la directory /var/lock/ploop venga ricreata dopo un riavvio:
| #!/bin/sh # Copyright (C) 2000-2009, Parallels, Inc. Tutti i diritti riservati. # # Questo programma è software libero; puoi ridistribuirlo e/o modificarlo # secondo i termini della GNU General Public License come pubblicato da # la Free Software Foundation; o della versione 2 della Licenza, o # (a tua scelta) di qualsiasi versione successiva. # # Questo programma è distribuito nella speranza che possa essere utile, # ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di # COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la # GNU General Public License per ulteriori dettagli. # # Dovresti aver ricevuto una copia della GNU General Public License # insieme a questo programma; in caso contrario, scrivi alla Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # Script di avvio OpenVZ, utilizzato per distribuzioni correlate a redhat e debian. ### # chkconfig: 2345 96 20 # descrizione: Script di avvio OpenVZ. ### ### INIZIO INFORMAZIONI INIT # Fornisce: vz # Richiesta di avvio: $network $remote_fs $syslog # Richiesta di arresto: $network $remote_fs $syslog # Dovrebbe iniziare: sshd vzeventd # Dovrebbe fermarsi: sshd vzeventd # Avvio predefinito: 2 3 4 5 # Arresto predefinito: 0 1 6 # Breve descrizione: Script di avvio OpenVZ # Descrizione: Script di avvio OpenVZ. ### FINE INFORMAZIONI INIT # Questa riga è necessaria per ingannare /etc/init.d/rc che si aspetta una parola d'azione . /usr/libexec/vzctl/scripts/initd-functions mkdir $VARLOCK/ploop [...] |
Crea un collegamento simbolico da /vz a /var/lib/vz per fornire compatibilità retroattiva:
ln -s /vz /var/lib/vzApri /etc/sysctl.conf e assicurati di avere le seguenti impostazioni:
vi /etc/sysctl.conf| [...] net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1 [...] |
Se hai bisogno di modificare /etc/sysctl.conf, esegui
sysctl -p dopo.
Il seguente passaggio è importante se gli indirizzi IP delle tue macchine virtuali provengono da una sottorete diversa rispetto all’indirizzo IP del sistema host. Se non lo fai, la rete non funzionerà nelle macchine virtuali!
Apri /etc/vz/vz.conf e imposta NEIGHBOUR_DEVS su all:
vi /etc/vz/vz.conf| [...] # Controlla quali interfacce inviare richieste ARP e modificare le tabelle APR su. NEIGHBOUR_DEVS=all [...] |
Installa vzdump:
apt-get install vzdumpInfine, riavvia il sistema:
rebootSe il tuo sistema si riavvia senza problemi, allora tutto va bene!
Esegui
uname -re il tuo nuovo kernel OpenVZ dovrebbe apparire:
root@server1:~# uname -r
2.6.32-042stab076.8
root@server1:~#
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.