Virtualizzazione · 8 min read · Dec 07, 2025

Xen Su Debian Wheezy Con LVM

Xen Su Debian Wheezy Con LVM

Autore: Jason Norwood-Young jason [at] freespeechpub dot co dot za

Quindi hai bisogno di un server serio. Vuoi un sacco di server, con un paio di sistemi operativi, che eseguono i loro siti folli facendo cose giuste, servendo il mondo e rendendolo un posto migliore. C’è solo un problema: sei povero. Troppo povero per avviare server AWS e server Rackspace senza contare le ore in cui sono attivi, e piangere ogni volta che ricevi la bolletta.

Non preoccuparti - puoi avere ciò che stai cercando, per molto meno di quanto costino quei server cloud, specialmente se hai bisogno che siano attivi 24/7/365. Con la virtualizzazione, puoi usare un grande server per ospitare molti piccoli server. È quasi come avere il tuo cloud!

Questo tutorial copre l’installazione di Xen e della tua prima macchina virtuale su Debian Wheezy. Se stai usando Squeeze, dai un’occhiata al tutorial di Falko Timme, che ho usato come ispirazione per il mio (anche se facciamo le cose in modo leggermente diverso).

0. Scegliere un server su cui eseguire questo

Quindi io uso Hetzner Germania. Perché? Perché sono dannatamente economici. Con un ambiente virtualizzato, ciò che stai cercando è molta memoria. Più memoria hai, più sistemi virtuali puoi stipare lì, e più grandi possono essere. Ho due server da 32 GB, che mi permettono di eseguire circa 8 server tra 1 GB e 4 GB ciascuno senza problemi. Questa non è una raccomandazione di alcun tipo e non ho alcuna relazione con Hetzner a parte il fatto di sborsare i miei soldi guadagnati con fatica a loro ogni mese.

Ciò che stai cercando è un fornitore che ti dia un server root bello e economico, con molta e molta memoria, e la possibilità di riavviare e recuperare da remoto nel caso tu faccia davvero un pasticcio.

1. Installare Xen

Presumo che tu abbia installato Wheezy, che sei loggato come root, e che hai fatto tutti gli aggiornamenti e gli upgrade di apt-get necessari. Quindi iniziamo!

apt-get install xen-linux-system xen-tools

Questo installa Xen, alcune cose ad alta memoria, e i molto utili xen-tools che useremo per creare le nostre immagini virtuali più tardi.

Successivamente vogliamo dire a Xen come gestire la rete. Ho una piccola confessione da fare: non sono un esperto di rete. In effetti, detesto la rete. È la tubatura di Internet, e rifiuto di piegarmi e mostrare la mia crepa da idraulico. E la rete Xen è complicata, con percorsi e ponti strani e chissà cos’altro. Quindi faccio solo la soluzione più semplice, veloce e sporca: la metto in modalità NAT. (No, non so davvero cosa sia il NAT, ma funziona, va bene? Smetti di fare domande.)

pico /etc/xen/xend-config.sxp

Decommenta le seguenti due righe:

    (network-script network-nat)
    (vif-script     vif-nat)

Anche se abbiamo installato Xen, in realtà non è in esecuzione. Xen gira a livello di kernel, il che significa che devi effettivamente avviare Xen.

Prima, dobbiamo dire a Debian di avviare Xen invece del suo solito kernel:

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen update-grub

Poi dobbiamo riavviare:

reboot

So che non vedi l’ora di ssh nel tuo nuovo, fantastico sistema Xen, ma dagli un secondo per riavviarsi.

Va bene, prova ora.

Che ne dici ora?

Sei dentro? Va tutto bene? Bene. Continuiamo.

2. Controllare Xen

Quindi ora vuoi assicurarti che Xen sia effettivamente in esecuzione. Su Squeeze, potevi semplicemente eseguire uname -r, e avresti visto qualcosa come: 2.6.32-5-xen-amd64. Per qualche misteriosa ragione sconosciuta all’umanità, questo non funziona su Wheezy, quindi invece fai questo:

xen dmesg

Dovresti vedere qualcosa come:

(XEN) Xen version 4.1.4 (Debian 4.1.4-3+deb7u1) ([email protected]) (gcc version 4.7.2 (Debian 4.7.2-5) ) Sun May  5 14:44:49 UTC 2013
(XEN) Bootloader: GRUB 1.99-27+deb7u2
(XEN) Command line: placeholder
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 2 MBR signatures
(XEN)  Found 2 EDD information structures
...

Se non vedi questo, hai fatto qualcosa di sbagliato. Torna indietro e riprova. Per tutti gli altri, SUCCESSO! Congratulazioni! Ora hai un fantastico istanza Dom0!

Dom-chi? Chi chiami dom?

Rilassati amico. Dom0, o Domain 0, è il tuo server host, la cosa su cui sei ora, il fondo della pila. I server guest sono chiamati DomU, probabilmente perché suona anche leggermente offensivo.

xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0 31089     8     r——      8.8

Quel comando elenca tutti i nostri server virtuali, incluso Dom0. Al momento questo è l’unico server che abbiamo in esecuzione.

Possiamo fare molto con xm, incluso xm create che avvia un server, xm destroy che uccide un server, xm reboot che riavvia un server, e xm top che monitora tutti i server in esecuzione.

3. Configurare LVM

Puoi creare server Xen sia come dispositivi a blocchi che come istanze LVM. A me piace LVM, perché è più maschile, e rende anche molto più facile ridimensionare le partizioni in seguito.

Prima abbiamo bisogno di un’unità vuota e smontata su cui mettere LVM. Non ho un’unità vuota e smontata, quindi ruberò semplicemente una dal mio server.

df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                 1008G  915M  956G   1% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   3.0G  292K  3.0G   1% /run
/dev/disk/by-uuid/5642a4c4-1bcb-49e2-b89c-7d754e6a521a 1008G  915M  956G   1% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   9.2G     0  9.2G   0% /run/shm
/dev/md1                                                496M   34M  437M   8% /boot
/dev/md3                                                1.7T  196M  1.7T   1% /home

1.7TB per /home? Sei serio? Sembra totalmente superfluo.

pico /etc/fstab

Commenta l’unità offensiva

#/dev/md/3 /home ext4 defaults 0 0

Smonta l’unità

umount /dev/md3

Giusto, ora possiamo creare la nostra partizione LVM.

pvcreate /dev/md3
  Writing physical volume data to disk "/dev/md3"
  Physical volume "/dev/md3" successfully created
vgcreate xen-vol /dev/md3
vgdisplay
  --- Volume group ---
  VG Name               xen-vol
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.71 TiB
  PE Size               4.00 MiB
  Total PE              448996
  Alloc PE / Size       0 / 0
  Free  PE / Size       448996 / 1.71 TiB
  VG UUID               wa0QCN-lBc1-545B-zMwf-vIuS-VXXI-GZAfbW

Giusto!

4. Configurare Xen Tools

Xen Tools rende la nostra vita Xen molto più facile, specialmente quando si tratta di creare nuovi server. Ma prima dobbiamo configurarlo un po’.

pico /etc/xen-tools/xen-tools.conf
lvm = xen-vol
size   = 20Gb      # Dimensione dell'immagine del disco.
memory = 4Gb    # Dimensione della memoria
swap   = 512Mb    # Dimensione dello swap
gateway    = 192.168.1.2
netmask    = 255.255.0.0
broadcast  = 192.168.1.255
mirror = http://ftp.de.debian.org/debian/
mirror_precise = http://archive.ubuntu.com/ubuntu # (e qualsiasi altro tu voglia)
serial_device = hvc0
disk_device = xvda #default
copyhosts = 1

5. Creare un server guest

È tempo dell’evento principale! Questo è il processo che ripeterai ogni volta che vuoi creare un nuovo server guest Xen.

Per il nostro primo server di test, farò qualcosa di un po’ più piccolo rispetto ai valori predefiniti che abbiamo impostato in xen-tools.conf. Puoi sovrascrivere qualsiasi valore predefinito dalla riga di comando, a seconda di ciò che desideri. Poiché non stiamo usando un server dhcp, dovrai impostare “hostname” e “ip” ogni volta. Tutto il resto è facoltativo.

xen-create-image --hostname=test --ip=192.168.1.99 --memory=512Mb --size=5G --swap=256Kb
Informazioni generali
--------------------
Hostname       :  test
Distribuzione   :  wheezy
Mirror         :  http://ftp.de.debian.org/debian/
Partizioni     :  swap            256Kb (swap)
                  /               5G    (ext3)
Tipo immagine   :  full
Dimensione memoria:  512Mb
Percorso kernel  :  /boot/vmlinuz-3.2.0-4-amd64
Percorso Initrd  :  /boot/initrd.img-3.2.0-4-amd64
Informazioni di rete
----------------------
Indirizzo IP 1   : 192.168.1.99 [MAC: 00:16:3E:27:33:2D]
Netmask        : 255.255.0.0
Broadcast      : 192.168.1.255
Gateway        : 192.168.1.2

Creando swap su /dev/xen-vol/test-swap
Fatto
Creando filesystem ext3 su /dev/xen-vol/test-disk
Fatto
Metodo di installazione: debootstrap
Esecuzione dei hook
Fatto
Nessun script di ruolo è stato specificato.  Salto
Creando file di configurazione Xen
Fatto
Nessun script di ruolo è stato specificato.  Salto
Impostazione della password di root
Generazione di una password per il nuovo guest.
Tutto fatto

File di log prodotto in:
     /var/log/xen-tools/test.log
Riepilogo dell'installazione
---------------------
Hostname        :  test
Distribuzione    :  wheezy
Indirizzo IP     :  192.168.1.99
Fingerprint RSA  :  de:92:b7:63:55:20:74:46:d3:de:cc:ff:55:22:69:24
Password di root  :  MlkaIn8

Questo crea il file di configurazione e la partizione per noi, ma non avvia il server per noi. Il file di configurazione si trova in /etc/xen/hostname.cfg. Puoi modificare questo file direttamente se hai bisogno di cambiare cose come la memoria in seguito.

Procediamo e avviamo il server

xm create /etc/xen/test.cfg
Utilizzando il file di configurazione "/etc/xen/test.cfg".
Avviato dominio test (id=1)

Ciò che è piuttosto interessante è che “test” verrà aggiunto al nostro file /etc/hosts, il che significa che possiamo semplicemente fare questo:

ssh test

Usa la password che hai ricevuto alla fine dell’output di xen-create-image, e sei dentro!

Assicurati di poter vedere gli interwebs:

ping google.com
PING google.com (173.194.70.113) 56(84) bytes of data.
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=1 ttl=48 time=6.05 ms
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=2 ttl=48 time=6.03 ms
^C
--- google.com statistiche ping ---
2 pacchetti trasmessi, 2 ricevuti, 0% perdita di pacchetti, tempo 1001ms
rtt min/avg/max/mdev = 6.030/6.044/6.058/0.014 ms

6. Prendi una birra

Te la meriti!

7. Puntare indirizzi IP ai tuoi server virtuali

Avrai bisogno di un sacco di indirizzi IP dal tuo ISP (chiamati subnet). Pago un po’ di più al mese per otto indirizzi IP extra. Ma farli passare direttamente al tuo server virtuale richiede un po’ di lavoro.

pico /etc/network/interfaces
auto br0
iface br0 inet static
  address 192.168.1.2
  netmask 255.255.0.0
  pre-up brctl addbr $IFACE
  post-down brctl delbr $IFACE
/etc/init.d/networking restart
ifconfig br0
br0       Link encap:Ethernet  HWaddr 82:18:d1:b8:37:c9
          inet addr:192.168.1.2  Bcast:192.168.255.255  Mask:255.255.0.0
          inet6 addr: fe80::9118:d1ff:feb8:37c9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:172 (172.0 B)
ip addr add 80.1.2.41 dev eth0
iptables -A PREROUTING -t nat -p all -i eth0 -d 80.1.2.41 -j DNAT --to 192.168.1.99

Usa –bridge=br0 quando usi xen-create. Per i file esistenti /etc/xen/*.cfg, modifica questa riga:

    vif         = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34' ]

per apparire così:

    vif         = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34','bridge=br0' ]

Distruggi e crea il server virtuale se necessario.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.