Alla ricerca di un computer adatto a virtualizzare i servizi che uso mi sono imbattuto sul Fujitsu Futro S920, un thin client apprezzato soprattutto per progetti con pfSense o OPNSense per via della sua espandibilità e il basso consumo energetico.
Ho provato quindi a utilizzarlo come Homelab Server con Proxmox Virtual Environment, ZFS e una strategia di backup su cloud.
Specifiche e upgrade
Il Futro S920 nella sua principale configurazione ha un processore AMD GX-415GA con 4 core e 4 threads, supporta fino a 16 GB di RAM e ha una porta PCI Express che con l’ausilio di un riser permette di espanderlo ad esempio con una scheda di rete aggiuntiva.
Il tutto per un costo di circa 40/50 euro su Ebay.
Il mio modello è arrivato con un disco mSATA da 16GB che ho upgradato con uno da 128GB preso su Aliexpress per circa 12 euro, 4GB di RAM che ho upgradato a 16.
Per il mio Homelab Server volevo uno storage SSD in mirror da realizzare con ZFS, il Futro ha una sola porta SATA molto scomoda montata sotto al dissipatore, ha però uno slot di espansione mini PCI Express che ho sfruttato aggiungendo una scheda con due porte SATA come questa.
E’ possibile alimentare i due dischi SATA utilizzando la porta 4pin floppy drive e un cavo a due porte SATA come questo:
Il risultato finale è il seguente:
NIC a 2.5Gb/s
Dopo aver fatto un upgrade al mio router per sfruttare a pieno la mia FTTH 2.5Gb/s ho deciso di effettuare un upgrade alla scheda di rete del mio Futro.
Ho acquistato questa scheda di rete basata su controller Intel I225-V e per connetterla ho usato un riser PCIe x1 preso da Aliexpress, è preferibile sia flessibile così da non rischiare di non riuscire a chiudere il case.
Effettuati i primi test però ho iniziato a notare che le performance non sembravano delle migliori, negli speedtest riuscivo a raggiungere solo 1.7Gb/s quando dai test fatti dal mio router il massimo era 2.2Gb/s.
Server: TIM SpA - Ancona (id: 54071)
ISP: Telecom Italia
Idle Latency: 1.73 ms (jitter: 0.39ms, low: 1.69ms, high: 2.46ms)
Download: 1700.13 Mbps (data used: 959.7 MB)
5.49 ms (jitter: 1.05ms, low: 2.08ms, high: 11.39ms)
Upload: 1003.23 Mbps (data used: 700.9 MB)
7.20 ms (jitter: 0.49ms, low: 5.17ms, high: 8.53ms)
Packet Loss: 0.0%
Effettuando delle ricerche e arrivando ad un post sul forum ServeTheHome sembra che lo slot PCIe sul Futro sia impostato alla velocità Gen1 di default.
E’ possibile confermare questa cosa usando il comando lspci -vvv
e controllare LnkSta
sulla scheda di rete:
LnkSta: Speed 2.5GT/s (downgraded), Width x1
Fortunatamente è possibile impostare sul BIOS la Gen2 sulla PCIe, per farlo è necessario utilizzare il tool Editcmos.exe eseguendolo da FreeDOS.
FreeDOS è un sistema operativo compatibile DOS che ci permetterà di fare l’upgrade del nostro BIOS ed eseguire Editcmos.exe anche se non abbiamo un sistema operativo Windows.
Prepariamo un’unità USB scaricando l’immagine FullUSB e flashandola con dd
dd if=FD13FULL.img of=/dev/sdb bs=4M
Al termine dell’operazione copiamo l’aggiornamento del BIOS reperibile dal download center di Fujitsu e il tool Editcmos.exe nella root di FreeDOS.
Effettuiamo il boot dell’ambiente DOS e dopo aver effettuato l’aggiornamento del BIOS diamo questo comando per abilitare la velocità Gen2 sulla PCIe
> EditCMOS.exe SetID:0x01B7=0x0151
Torniamo su Proxmox e verifichiamo
LnkSta: Speed 5GT/s, Width x1
Dopo questo comando lo speedtest arriva al massimo delle performance
Speedtest by Ookla
Server: Vodafone IT - Milan (id: 4302)
ISP: Telecom Italia
Idle Latency: 11.34 ms (jitter: 0.81ms, low: 10.90ms, high: 12.19ms)
Download: 2156.85 Mbps (data used: 2.4 GB)
37.78 ms (jitter: 33.07ms, low: 9.85ms, high: 335.34ms)
Upload: 1029.52 Mbps (data used: 998.2 MB)
23.81 ms (jitter: 1.74ms, low: 10.82ms, high: 36.42ms)
Packet Loss: 0.0%
Proxmox Virtual Environment
Ho scelto di utilizzare un hypervisor come PVE perchè volevo utilizzare i container LXC e per il supporto a ZFS.
Installato Proxmox il primo passo da fare se non si vuole acquistare una licenza di supporto è quella di disabilitare i repository enteriprise e abilitare quelli no-subscription.
L’unica differenza è che quelli enterprise sono più adatti ad ambienti di produzione perchè sono più testati.
Per farlo basta recarsi nel proprio nodo > Updates > Repositories
Rimanendo nel nodo ho quindi crearo un poll ZFS in mirror andando su Disks > ZFS, la compressione permette di risparmiare spazio su disco a discapito di un leggero aumento di carico sulla CPU
Il mio server attualmente ospita 3 container LXC: PiHole, HomeAssistant e Grocy e le performance sembrano buone.
Backup su cloud
Impostati su PVE i classici backup dei container sullo storage interno, in questo caso due dischi in mirror con ZFS volevo avere anche una copia dei backup su cloud in caso di disaster recovery.
Ho utilizzato rclone, un client che permette di sincronizzare file con più di 70 storage providers tra cui Google Drive, OneDrive e Proton Drive (il mio caso).
Tramite la shell di PVE ho installato rclone
curl https://rclone.org/install.sh | bash
e configurato il mio remote
rclone config
Proxmox permette di avviare uno script alla fine dei processi di backup passando come parametro job-end
allo script alla fine del processo.
Ho quindi preparato questo script che sincronizza la cartella dei backup con il mio remote sul cloud al termine della creazione dei backup.
#!/bin/sh
write_msg()
{
echo $(date +"20%y-%m-%d %H:%M:%S") $1
}
duration()
{
DURATION=$2
HOUR=$((DURATION/3600))
HOURINSEC=$((HOUR*3600))
DURATION=$((DURATION-HOURINSEC))
MINUTE=$(((DURATION/60)))
SECOND=$((DURATION%60))
write_msg "$1 finished took $HOUR hours, $MINUTE minutes, $SECOND seconds"
}
if [ $1 = "job-end" ]
then
START=$(date +%s)
write_msg "Starting rclone sync"
CMD="rclone sync --progress --stats-one-line --stats=30s --config /root/.config/rclone/rclone.conf /Storage/VMBACKUPS/ ProtonDrive:/Homelab/PVE"
write_msg "using command: $CMD"
$CMD
END=$(date +%s)
duration "rclone" $((END-START))
fi
exit 0
/Storage/VMBACKUPS/
è la directory dei miei backups su PVE, ProtonDrive
è il nome del mio remote su rclone e /Homelab/PVE
è la directory in cui voglio salvare i miei backup sul cloud.
Ho salvato lo script con il nome di rclone_backup.sh
nella mia root e gli ho dato i permessi di esecuzione
chmod +x rclone_backup.sh
per avviarlo al termine dei backup è necessario modificare il file /etc/vzdump.conf
togliendo il commento dalla voce script e inserendo il percorso
script:/root/rclone_backup.sh
Conclusioni
Il Futro S920 è un thin client interessante come homelab server senza troppe pretese, il vero collo di bottiglia sono però gli 8GB di RAM che con PVE e ZFS possono essere pochini.
Per ora soddisfa le mie esigenze, in futuro sarebbe interessante acquistarne un altro da mettere in cluster o chissà, magari altri due così da sperimentare un cluster in HA.