Vai al contenuto

NFS

Generico

Questa guida descrive l'installazione e l'abilitazione della connessione NFS solo sul cliente. Per l'installazione e abilitazione lato server seguire la guida di Digitalocean

Bash
sudo apt update
sudo apt install nfs-common
Creare la cartella:
Bash
sudo mkdir /mnt/nfs-share
Montare la cartella:
Bash
sudo mount -t nfs NAS_IP:/percorso_della_cartella /mnt/nfs-share
Per montare automaticamente la cartella all'avvio del sistema:
Bash
sudo nano /etc/fstab
e inserire al fondo:
Bash
NAS_IP:/percorso_della_cartella /mnt/nfs-share nfs defaults 0 0
Rendere affettive le modifiche riavviando la macchina oppure:
Bash
sudo mount -a
A questo punto la cartella è accessibile solo all'utente root, per consentire l'accesso ad un tente specifico, creare un gruppo ad hoc:
Bash
sudo groupadd nfsusers
infine aggiungere l'utente al gruppo appena creato:
Bash
sudo usermod -aG nfsusers nome_utente
Configurare le autorizzazioni sulla cartella:
Bash
sudo chown :nfsusers /mnt/nfs-share
sudo chmod 775 /mnt/nfs-share
Riavviare il server NFS:
Bash
sudo service nfs-kernel-server restart


Proxmox - LXC

Per abilitare un volume NFS su un container LXC, è necessario che questo sia in mode privileged, ma per ragioni di sicurezza è consigliato avviarlo in mode unprivileged. Questo però non permetterebbe la lettura dei volumi in NFS.

Per ovviare al problema, si monta il volume NFS direttamente sull'host. Si crea prima il punto do mount e di binding sull'host:

Bash
mkdir -p /mnt/nfs-share && mkdir -p /mnt/bindmounts/nfs-share
Successivamente si monta il volume NFS sull'host:
Bash
mount -t nfs 192.166.1.29:/volume1/MediaDati /mnt/nfs-share
Si fa a questo punto il bind del volume:
Bash
mount --bind /mnt/nfs-share /mnt/bindmounts/nfs-share
Sul file di configurazione del container
Bash
nano /etc/pve/lxc/<ID DEL CONTAINER>.conf
si aggiunge la riga:
Text Only
mp0: /mnt/bindmounts/nfs-share,mp=/mnt/nfs-share
Riavviando il container, il volume NFS risultà già montato.

Persistenza del volume al riavvio

Per assicurarti che il volume NFS venga montato automaticamente al riavvio dell'host, devi aggiungere la configurazione al file /etc/fstab e utilizzare uno script di avvio per gestire il mount e il bind. Ecco i passaggi dettagliati:

1. Aggiungi la configurazione al file /etc/fstab

Questo file è utilizzato dal sistema per montare i file system all'avvio. Aggiungi una riga per il volume NFS e il bind mount.

Modifica /etc/fstab con un editor di testo:

Bash
sudo nano /etc/fstab
Aggiungi la seguente riga per montare il volume NFS:
Bash
192.166.1.29:/volume1/MediaDati /mnt/nfs-share nfs defaults 0 0
Salva e chiudi il file.

2. Aggiungi la configurazione per il bind mount

Aggiungi uno script di avvio per gestire il bind mount. Crea uno script di init nel percorso /etc/init.d/, ad esempio:

Bash
sudo nano /etc/init.d/mount-nfs-bind
Inserisci il seguente contenuto nello script:
Bash
#!/bin/bash

### BEGIN INIT INFO
# Provides:          mount-nfs-bind
# Required-Start:    $network $local_fs
# Required-Stop:     $network $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Mount NFS and bind mount
### END INIT INFO

case "$1" in
  start)
    echo "Mounting NFS share and binding..."
    mount -a
    mount --bind /mnt/nfs-share /mnt/bindmounts/nfs-share
    ;;
  stop)
    echo "Unmounting NFS share and bind mount..."
    umount /mnt/bindmounts/nfs-share
    umount /mnt/nfs-share
    ;;
  *)
    echo "Usage: $0 {start|stop}"
    exit 1
    ;;
esac

exit 0
Salva e chiudi il file. Rendi eseguibile lo script:
Bash
sudo chmod +x /etc/init.d/mount-nfs-bind

3. Abilita lo script di avvio

Aggiungi lo script al sistema di avvio:

Bash
sudo update-rc.d mount-nfs-bind defaults
Verifica la configurazione

Dopo aver configurato tutto, riavvia l'host e verifica se il volume NFS e il bind mount vengono applicati correttamente:

Bash
sudo reboot
Dopo il riavvio, controlla che i mount siano attivi:
Bash
df -h
Dovresti vedere il volume NFS montato su /mnt/nfs-share e il bind mount su /mnt/bindmounts/nfs-share.

Con questi passaggi, il volume NFS dovrebbe montarsi automaticamente all'avvio e il bind mount sarà configurato correttamente per il container LXC. Se hai ulteriori domande o problemi, fammi sapere!