Utilizzo del disco#
NethServer 8 utilizza podman per gestire i container OCI. Quando si eseguono più container, l’utilizzo del disco crescerà abbastanza velocemente e si potrebbe rapidamente esaurire lo spazio.
I container rootless inseriscono i dati all’interno della directory /home
dell’utente. Quindi, se si prevede di eseguire molti servizi sullo stesso host, prendere in considerazione montare un disco o una partizione supplementare sul percorso /home
.
I container rootful solitamente salvano immagini e volumi all’interno della directory /var/lib/containers/storage
.
Per ispezionare la configurazione di storage di podman della distribuzione, è possibile utilizzare il seguente comando:
podman info -f json | jq .store.graphRoot
C’è un’altra directory che tende a crescere /var/lib/nethserver
: contiene l’interfaccia utente e le azioni dei moduli rootful.
Aggiungere più spazio#
Se stai esaurendo lo spazio su disco, considera di espandere il filesystem /home
.
Su una macchina fisica, l’opzione migliore è quella di impostare LVM durante l’installazione della distribuzione. D’altra parte, su una macchina virtuale si potrebbe facilmente espandere l’intero filesystem root.
Se non è possibile nessuna delle suddette azioni, si può prendere in considerazione l’aggiunta di un nuovo disco e la migrazione dei dati esistenti utilizzando lo script qui sotto. Lo script:
arresta tutti i container rootless
copia tutti i container rootless all’interno del nuovo disco
recupera spazio dal filesystem root
monta il nuovo disco sotto
/home
riavvia tutti i container rootless
Prima di eseguire lo script, assicurarsi di collegare il disco alla macchina, formattarlo e montarlo in un percorso personalizzato come /mnt/temp_disk
. Quindi lanciare lo script inserendo il percorso di mount come parametro, così:
migrate /mnt/temp_disk
Lo script migrate`
:.
#!/bin/bash
set -e
mount_dir=$1
if [ -z "$mount_dir" ]; then
echo "Please provide the disk mount dir"
exit 1
fi
if [ ! -d "$mount_dir" ]; then
echo "Mount dir not found"
exit 1
fi
if ! which rsync &>/dev/null; then
echo "rsync not found, please install it before proceed"
exit 1
fi
device=$(grep $(echo "$mount_dir" | sed 's/\/$//') /etc/mtab | awk '{print $1}')
if [ -z "$device" ]; then
echo "Device not found for $mount_dir"
exit 1
fi
for userhome in /home/*[0-9]; do
moduleid=$(basename $userhome)
echo "Disabling rootless module ${moduleid}..."
systemctl stop user@$(id -u $moduleid)
done
echo "Copying files..."
rsync -avrX --delete-after /home/ $mount_dir/
echo "Reclaim space..."
for userhome in /home/*[0-9]; do
rm -rf $userhome
done
echo "Remount disk to /home..."
umount $device
mount $device /home
for userhome in /home/*[0-9]; do
moduleid=$(basename $userhome)
echo "Starting rootless module ${moduleid}..."
systemctl start user@$(id -u $moduleid)
done
echo "Done"
echo
eval $(blkid $device -o export)
echo "Add this line to fstab:"
echo
echo "UUID=$UUID /home $TYPE rw,errors=remount-ro 0 1"