Test di velocità link Internet xDSL da console Linux

Spesso è utile valutare la velocità e la latenza di un link ad internet di un server Linux al quale non si ha accesso diretto tramite un desktop remoto. Tramite questo tool è possibile utilizzare l’infrastruttura geografica di Speedtest.net ed ottenere una valutazione oggettivamente valida.

# wget https://github.com/sivel/speedtest-cli/raw/master/speedtest.py --no-check-certificate
# chmod a+rx speedtest_cli.py
# ./speedtest_cli.py

Lo script in python si collega al nodo più prossimo ed effettua un test di upload, uno di download e riporta anche la latenza in millisecondi.

root@farm ~ # ./speedtest_cli.py
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Hetzner Online AG (XX.XX.XX.XX)...
Selecting best server based on ping...
Hosted by Vodafone DE (Frankfurt) [100.73 km]: 6.358 ms
Testing download speed........................................
Download: 87.87 Mbit/s Testing upload speed..................................................
Upload: 66.08 Mbit/s

E’ possibile condividere il test aggiungendo –share al comando e si ottiene questo:

Speedtest CLI linux

Andrea Gagliardi – netlite.it

PROXMOX tips venet e /usr/portage

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