Tips per la personalizzazione di contenitori (CT) PROXMOX
Mount automatico di /usr/portage
Utilizzando Gentoo come distribuzione Linux all’interno dei contenitori OpenVZ può essere utile condividere tra i contenitori la /usr/portage/ in modo da poter sincronizzarla tramite la macchina host e ridurre drasticamente l’occupazione di spazio disco.
Per ottenere questo è possibile far svolgere queste operazioni ad ogni boot della VM creando o modificando tramite shell ed editor di testo lo script {VMID}.mount nella stessa directory dove è presente il file {VMID}.conf.
Spostiamoci quindi nella directory:
cd /etc/pve/nodes/$(hostname -s)/openvz/
E creiamo (o modifichiamo) il file:
vim {VMID}.mount
Inserendo queste righe di codice:
#!/bin/bash . /etc/vz/vz.conf . ${VE_CONFFILE} SRC=/var/lib/vz/portage DST=/usr/portage if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
Lo script è molto comprensibile e non contiene alcun riferimento alla singola macchina virtuale per cui è possibile copiarlo per ogni macchina Gentoo ospitata.
Al termine è necessario cambiare i diritti di esecuzione:
chmod 700 {VMID}.mount
Nel caso, ad esempio, di volere mantenere lo storage ed il sistema su supporto diversi per questioni di spazio o performance può essere utile aggiungere allo script il mount anche di questi mountpoint:
#!/bin/bash . /etc/vz/vz.conf . ${VE_CONFFILE} SRC=/var/lib/vz/portage DST=/usr/portage if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC} SRC=/storage/${VEID}/home DST=/home if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}
Qusto permette di avere la home di ogni contenitore su di uno storage separato.
Utilizzo questo sistema, ad esempio, per avere lo storage su di un filesystem ZFS con compressione realtime attiva.
Utilizzo delle interfaccie veth al posto di venet
Può essere necessario utilizzare caratteristiche di rete che le interfaccie venet non forniscono (ad esempio ARP) QUI.
Seguendo quindi la guida QUI, dopo aver configurato tramite l’interfaccia web di PROXMOX la nuova scheda di rete questa risulta correttamente aggiunta al bridge di rete ma la VM può risultare isolata.
#!/bin/bash . /etc/vz/vz.conf . ${VE_CONFFILE} SRC=/var/lib/vz/portage DST=/usr/portage if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC} SRC=/storage/${VEID}/home DST=/home if [ ! -e ${VE_ROOT}${DST} ]; then mkdir -p ${VE_ROOT}${DST}; fi mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC} IP="XX.XX.XX.XX" /sbin/ip route del $IP dev vmbr0 2>/dev/null /sbin/ip route add $IP dev vmbr0 2>/dev/null
Alla fine dello script si nota la rimozione e l’aggiunta di una rotta verso il bridge che ospita la VM con l’indirizzo XX.XX.XX.XX.
Lo script purtroppo contiene una configurazione specifica per cui è necessario modificarlo per utilizzarlo per altre VM.
Esecuzione comandi all’interno di un Contenitore (CT) OpenVZ
Per eseguire comandi in un contenitore OpenVZ è possibile utilizzare il comando:
# vzctl exec 103 /etc/init.d/sshd status openssh-daemon is stopped # vzctl exec 103 /etc/init.d/sshd start Starting sshd: [ OK ]
Andrea Gagliardi – netlite.it