DomU
DomU e Preparazione dei dischi
Proseguiamo il nostro viaggio nei meandri della virtualizzazione Xen per poter avere un ambiente sano e a prova di proiettile. Ma che dico a prova di proiettile, a prova di fungo atomico. La Dom0 sará completamente sganciata da lla rete, mentre le DomU potranno collegarsi secondo le specifiche.
Scelta del filesystem
L’obiettivo è ottenere un filesystem efficiente, coerente e performante per un ambiente di virtualizzazione stabile.
Per gli ambienti Xen, alcuni filesystem possono essere più adatti di altri:
- EXT4: leggero ma non ideale per ambienti di virtualizzazione avanzata come una DomU (niente snapshot nativi, copy-on-write assente, scarsa resistenza a errori, insomma una porcheria).
- ZFS: tecnicamente eccellente ma estremamente affamato di RAM. Più adatto a SAN dedicate.
- BTRFS (scelta consigliata): moderno, leggero, supporta compressione, snapshot e gestione raid. Buon compromesso per domU.
Questa guida utilizza un singolo disco e BTRFS. Se disponi di più dischi, puoi implementare mirror/raid come mostrato.
Creazione della partizione BTRFS
Se utilizzi un solo disco, crea una nuova partizione:
fdisk /dev/sdx (il tuo disco)
se utilizzi piú dischi, non serve partizionare, btrfs sta benissimo su un disco senza partizioni.
Installare pacchetti BTRFS
apt update
apt install -y btrfs-progs
Formattazione della partizione
Creiamo il filesystem BTRFS duplicando solo i metadati, adatto a disco singolo:
mkfs.btrfs -m dup -d single /dev/sdXY
Questo garantisce maggiore coerenza dei metadati senza sprecare spazio dati.
Altre possibili scenari
mkfs.btrfs -m raid1 -m dup -d dup /dev/sdb /dev/sdc
oppure -m mirror -d mirror o ancora -m raid1 -d raid1
Una configurazione solida, potrebbe essere questa
mkfs.btrfs -m raid1 -d raid1 -L MIRROR /dev/sdb /dev/sdc
mount /dev/disk/by-label/MIRROR /mnt
btrfs device add /dev/sdd /mnt/
btrfs balance start -dconvert=dup /mnt
Questo crea un mirror fra sdb e sdc e duplica, quindi riscrive i dati, effettua una copia a livello di file, sul disco sdd
volendo possiamo duplicare anche i metadati sul disco sdd
btrfs balance start -mconvert=dup /mnt
Diciamo che abbiamo l’imbarazzo della scelta, anche se non é questo l’articolo in cui discettare di coerenza dei dati, geometria del disco, e discipline varie tipo i backup replica e distribuzione dei dati.
Montaggio e configurazione BTRFS
Il comando mkfs.btrfs crea il filesystem e ci fornisce UUID
Quindi creaimo la directory che ospiterá il nostro filesystem
mkdir -p /work
Aggiungiamo il filesystem a /etc/fstab:
echo 'UUID=TUO-UUID /work btrfs defaults,compress=zstd,commit=30,autodefrag 0 0' >>/etc/fstab
mount -a
Creazione subvolume per ospitare le DomU
Creare un subvolume non é necessario ma, MA! non occupa spazio, e in molti casi torna utile.
Torna utile in tutti quei casi in cui devi effettuare un rsync, uno snapshot, un backup etc etc.
btrfs subvolume create /work/@WORKFS
btrfs property set /work/ compression zstd:3
btrfs property set /work/@WORKFS/ compression zstd:3
Verifica dei settaggi:
btrfs property get /work
Atteso:
ro=false
label=
compression=zstd:3
btrfs property get /work/@WORKFS
Atteso:
ro=false
compression=zstd:3
Smontiamo il Filesystem e rimontiamolo con il subvolume.
umount /work
sed -i '\|/work|d' /etc/fstab
echo 'UUID=TUO-UUID /work btrfs defaults,compress=zstd,commit=30,autodefrag,subvol=@WORKFS 0 0' >>/etc/fstab
mount -a
Dunque andiamo a verificare:
mount |grep work
Il risultato atteso dovrebbe essere qualcosa di questo tipo:
/dev/sdXY on /work type btrfs (rw,relatime,compress=zstd:3,ssd,discard=async,space_cache=v2,autodefrag,subvolid=256,subvol=/@WORKFS)
IL VOLUME É PRONTO PER OSPITARE LE DOMU
Configurazione Xen-Tools per le DomU
Xen-Tools non include Devuan, quindi lo abilitiamo manualmente.
Backup e nuova configurazione
cp /etc/xen-tools/xen-tools.conf /etc/xen-tools/xen-tools.conf.BAK
echo 'dir = /work' >/etc/xen-tools/xen-tools.conf
echo 'install-method = debootstrap' >>/etc/xen-tools/xen-tools.conf
echo 'size = 32G' >>/etc/xen-tools/xen-tools.conf
echo 'memory = 1024M' >>/etc/xen-tools/xen-tools.conf
echo 'noswap = 1' >>/etc/xen-tools/xen-tools.conf
echo 'fs = ext4' >>/etc/xen-tools/xen-tools.conf
echo 'dist = `xt-guess-suite-and-mirror --suite`' >>/etc/xen-tools/xen-tools.conf
echo 'image = sparse' >>/etc/xen-tools/xen-tools.conf
echo 'dhcp = 1' >>/etc/xen-tools/xen-tools.conf
echo 'genpass = 0' >>/etc/xen-tools/xen-tools.conf
echo 'password = 123456' >>/etc/xen-tools/xen-tools.conf
echo 'kernel = /boot/vmlinuz-`uname -r`' >>/etc/xen-tools/xen-tools.conf
echo 'initrd = /boot/initrd.img-`uname -r`' >>/etc/xen-tools/xen-tools.conf
echo 'btrfs_options = defaults' >>/etc/xen-tools/xen-tools.conf
echo 'disk_device = xvda' >>/etc/xen-tools/xen-tools.conf
Se vuoi scaricare direttamente il file, preconfigurato, senza doverlo scrivere, puoi usare questi comandi:
cp /etc/xen-tools/xen-tools.conf /etc/xen-tools/xen-tools.conf.BAK
wget -O /etc/xen-tools/xen-tools.conf https://dibrigida.it/DOWNLOAD/xen-tools.conf
chmod 644 /etc/xen-tools/xen-tools.conf
Abilitare Dom-U Devuan in Xen-Tools
cp -rp /usr/share/xen-tools/debian.d/ /usr/share/xen-tools/devuan.d
ln -s /usr/share/xen-tools/devuan.d /usr/share/xen-tools/daedalus.d
ln -s /usr/share/xen-tools/devuan.d /usr/share/xen-tools/excalibur.d
Modifichiamo manualmente il file di apt per le DomU
cd /usr/share/xen-tools/devuan.d
vi 20-setup-apt
Individuare il settore del source list e modificare secondo le specifiche DEVUAN
cercando la parola deb, si trova subito questa sezione:
deb ${mirror} ${dist} main contrib non-free
deb-src ${mirror} ${dist} main contrib non-free
che va modificata in questo modo:
deb http://it.deb.devuan.org/merged ${mirror} ${dist} main contrib non-free
deb-src http://it.deb.devuan.org/merged ${mirror} ${dist} main contrib non-free
poi cerchiamo la sezione security e troviamo questo:
deb http://security.debian.org/ ${dist}/updates main contrib non-free
deb-src http://security.debian.org/ ${dist}/updates main contrib non-free
Anche in questo caso dobbiamo modificare:
deb http://deb.devuan.org/merged ${dist}-security main non-free-firmware contrib non-free
deb-src http://deb.devuan.org/merged ${dist}-security main non-free-firmware contrib non-free
cerchiamo ancora altri deb, in tutte le sezioni security sostituiamo con la parte security, nelle sezioni del mirror, sostituiamo con la giusta sezione.
Passiamo adesso ad un altra ricerca, il nome della distribuzione:
Dunque cerchiamo la parola sarge ed approdiamo in questa sezione:
if echo “${dist}” | egrep -q ‘\b(sarge|etch|lenny|squeeze|wheezyjessie|stretch|buster)\b’; then
ci basta sostituire la riga in questo modo:
if echo "${dist}" | egrep -q '\b(daedalus|excalibur|beowulf)\b'; then
Quindi ripetere nuovamente la ricerca e sostituire sarge|etch|lenny|squeeze|wheezyjessie|stretch|buster con le nuove versioni:
daedalus|excalibur|beowulf
Capisco che editare questo file potrebbe essere complicato per alcuni, ecco il comando per poter eseguire il wget e posizionarlo nel posto giusto
wget -O /usr/share/xen-tools/devuan.d/20-setup-apt https://dibrigida.it/DOWNLOAD/20-setup-apt
chmod 755 /usr/share/xen-tools/devuan.d/20-setup-apt
Creazione della prima DomU
modprobe loop max_loop=255
echo 'options loop max_loop=255' >/etc/modprobe.d/xen-loop.conf
xen-create-image --hostname="letame" --dist="excalibur"
Verifica presenza disk.img in /work/domains/letame/.
Isoliamo la Dom0 dalla rete
echo "source /etc/network/interfaces.d/*" >/etc/network/interfaces
echo "auto lo" >>/etc/network/interfaces
echo "iface lo inet loopback" >>/etc/network/interfaces
echo "auto eth0" >/etc/network/interfaces.d/eth0.conf
echo "iface eth0 inet manual" >>/etc/network/interfaces.d/eth0.conf
echo "auto xenbr0" >>/etc/network/interfaces.d/eth0.conf
echo "iface xenbr0 inet manual" >>/etc/network/interfaces.d/eth0.conf
echo " bridge_ports eth0" >>/etc/network/interfaces.d/eth0.conf
echo " bridge_maxwait 0" >>/etc/network/interfaces.d/eth0.conf
Avvio della DomU
reboot
xl create /etc/xen/letame.cfg
xl list
xl console letame
Ecco la tua domU funzionante! 🚀
