Come impostare un montaggio NFS su Rocky Linux 8
Su questa pagina
- Prerequisiti
- Passaggio 1 - Installa NFS sull'host e sul client
- Passaggio 2: crea le directory di condivisione sull'host
- Lavorare con un supporto per uso generico
- Lavorare con la home directory
- Testare la condivisione per scopi generici
- Testare la condivisione della home directory
Network File System o NFS è un protocollo di file system distribuito che consente agli host remoti di montare file system su una rete ed eseguire operazioni sui file come se fossero montati localmente. Ciò è particolarmente utile quando si desidera condividere le risorse da un server su più client o consentire a più client di scrivere su un singolo spazio di archiviazione.
In questo tutorial imparerai come installare e configurare il server NFS e i client NFS basati su Rocky Linux 8. Per questo, configureremo un host o un server per condividere file e un client per accedere ai file host utilizzando un montaggio NFS .
Prerequisiti
- Due server Rocky Linux 8. Ognuno di questi dovrebbe avere un utente non root con privilegi sudo.
- Sia l'host che il client devono avere un indirizzo IP statico. Puoi persino configurare entrambi su una rete privata. Per il nostro tutorial, useremo host_ip per indicare l'indirizzo IP degli host e client_ip per fare riferimento all'indirizzo IP dei client.
Passaggio 1: installare NFS sull'host e sul client
Ospite
Per installare i pacchetti NFS, devi installare il pacchetto
nfs-utils
. Fornisce un demone per il server NFS e gli strumenti correlati.Installa il pacchetto.
$ sudo dnf install nfs-utils
Abilita e avvia il servizio
nfs-server
. Servizi rimanenti necessari per il montaggio e la condivisione NFS comenfsd
,nfs-idmapd
,rpcbind
,rpc.mountd
,lockd
,rpc.statd
,rpc.quotad
erpc.idmapd
si avviano automaticamente insieme a esso.$ sudo systemctl enable nfs-server --now
Verificare la versione dell'installazione NFS.
$ sudo cat /proc/fs/nfsd/versions -2 +3 +4 +4.1 +4.2
Le versioni NFS 3 e 4 sono abilitate per impostazione predefinita e la versione 2 è disabilitata. NFSv2 è piuttosto vecchio e obsoleto, quindi puoi vedere il segno -ve davanti.
NFS salva le sue configurazioni nei file
/etc/nfsmount.conf
e/etc/nfs.conf
./etc/nfsmount.conf
serve per configurare i montaggi NFS mentre/etc/nfs.conf
serve per configurare il demone NFS e gli strumenti associati. Le impostazioni predefinite sono sufficienti per il nostro tutorial e non è richiesta alcuna modifica.Cliente
Sul client, installa i pacchetti
nfs-utils
enfs4-acl-tools
.$ sudo dnf install nfs-utils nfs4-acl-tools
Passaggio 2: creare le directory di condivisione sull'host
Useremo due esempi con diverse impostazioni di configurazione: uno con un montaggio generico e uno condividendo la home directory degli host.
Le directory montate NFS non fanno parte del client. Pertanto, NFS non può eseguire attività che richiedono privilegi di superutente su di essi. Significa che il client non può cambiare proprietà, scrivere su di essi come utente root o eseguire attività di alto livello. Tuttavia, ci sono casi in cui un utente fidato sul client deve eseguire tali attività senza richiedere l'accesso come superutente sull'host. Il server NFS può essere configurato per consentire ciò, ma è a rischio quando un client può accedere all'host.
Lavorare con un supporto per uso generico
Per il nostro primo caso, creeremo un semplice montaggio che utilizza il comportamento NFS predefinito, il che significa che il client non può eseguire attività che richiedono privilegi di superutente.
Crea una directory di condivisione.
host:$ sudo mkdir /var/nfs/share -p
L'utente root hosts sarà proprietario di questa directory poiché abbiamo utilizzato
sudo
per crearla.host:$ ls -l /var/nfs total 0 drwxr-xr-x. 2 root root 6 Dec 13 07:30 share
NFS tradurrà tutte le operazioni di root sul lato client nelle credenziali
nobody:nobody
per motivi di sicurezza. Pertanto, dobbiamo abbinarli sul lato host.host:$ sudo chown nobody:nobody /var/nfs/general
Lavorare con la home directory
Per il nostro secondo caso, metteremo a disposizione del client la home directory sull'host. Non abbiamo bisogno di crearlo poiché esiste già. Non è necessario modificare alcuna autorizzazione in quanto influirebbe sugli utenti sulla macchina host.
Passaggio 3: configurazione delle esportazioni NFS sull'host
Apri il file
/etc/exports
sulla macchina Host per la modifica.host:$ sudo nano /etc/exports
Incollare il seguente codice nel file.
/var/nfs/share client_ip(rw,sync,no_subtree_check) /home client_ip(rw,sync,no_root_squash,no_subtree_check)
Ogni directory e la relativa configurazione devono trovarsi su una riga separata. Sostituisci il valore
client_ip
con l'effettivo indirizzo IP della macchina client.Esaminiamo tutte le opzioni per le esportazioni NFS.
- rw - fornisce alla macchina client l'accesso in lettura e scrittura sul volume NFS.
- sync - questa opzione obbliga NFS a scrivere le modifiche sul disco prima di rispondere. Questa opzione è considerata più affidabile. Tuttavia, riduce anche la velocità delle operazioni sui file.
- no_subtree_check - questa opzione impedisce il controllo della sottostruttura, un processo in cui l'host deve verificare se il file è disponibile insieme ai permessi per ogni richiesta. Può anche causare problemi quando un file viene rinominato sull'host mentre è ancora aperto sul client. Disabilitarlo migliora l'affidabilità di NFS.
- no_root_squash - Per impostazione predefinita, NFS traduce le richieste da un utente root sul client in un utente non privilegiato sull'host. Questa opzione disabilita tale comportamento e deve essere utilizzata con attenzione per consentire al client di ottenere l'accesso all'host.
Una volta terminato, salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Per esportare le condivisioni, eseguire il seguente comando.
host:$ sudo exportfs -arv exporting client_ip:/home exporting client_ip:/var/nfs/share
- -a - questa opzione fa sì che tutte le directory vengano esportate.
- -r - questa opzione fa sì che tutte le directory vengano esportate costruendo un nuovo elenco nella directory
/var/lib/nfs/etab
. Questa opzione viene utilizzata per aggiornare l'elenco di esportazione con qualsiasi modifica apportata a/etc/exports
. - -v - abilita l'output dettagliato.
Per elencare tutte le directory esportate, eseguire il seguente comando. Mostrerà tutte le opzioni, incluse quelle predefinite che non sono state specificate nel file
/etc/exports
.host:$ sudo exportfs -s /var/nfs/share client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /home client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
Passaggio 4: configurazione del firewall sull'host
Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.
host:$ sudo firewall-cmd --state running
Ciò indica che è attivo e funzionante correttamente.
Il firewall funziona con zone diverse e la zona pubblica è quella predefinita che utilizzeremo. Elenca tutti i servizi e le porte attive sul firewall.
host:$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
cockpit dhcpv6-client ssh
Successivamente, dobbiamo consentire il traffico ai servizi NFS necessari:
mountd
,nfs
erpc-bind
. Dobbiamo anche consentire l'accesso dall'IP del client. Se i client e i server host si trovano nella stessa sottorete, non è necessario aggiungere l'indirizzo IP del client.host:$ sudo firewall-cmd --permanent --add-service=nfs host:$ sudo firewall-cmd --permanent --add-service=rpc-bind host:$ sudo firewall-cmd --permanent --add-service=mountd host:$ sudo firewall-cmd --permanent --add-source=client_IP
Ricarica il firewall per applicare le modifiche.
host:$ sudo firewall-cmd --reload
Passaggio 5: creazione di punti di montaggio e directory sul client
Ora che il server/host NFS è configurato, il passaggio successivo consiste nell'impostare i punti di montaggio e le directory sul client. È possibile eseguire il comando
showmount
sul client per controllare l'elenco dei file system esportati sull'host.client:$ showmount -e host_ip Export list for host_ip: /home host_ip /var/nfs/share host_ip
Creare sempre una nuova directory come punto di montaggio sul client o utilizzare una directory vuota esistente. Se c'è un file in una directory che monti, verrà nascosto.
Crea le directory di montaggio.
client:$ sudo mkdir -p /nfs/share client:$ sudo mkdir -p /nfs/home
Montare le condivisioni utilizzando l'indirizzo IP dell'host.
client:$ sudo mount host_ip:/var/nfs/share /nfs/share client:$ sudo mount host_ip:/home /nfs/home
Verificare che il montaggio sia andato a buon fine.
client:$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 370M 0 370M 0% /dev tmpfs 405M 0 405M 0% /dev/shm tmpfs 405M 16M 389M 4% /run tmpfs 405M 0 405M 0% /sys/fs/cgroup /dev/vda1 25G 2.4G 23G 10% / tmpfs 81M 0 81M 0% /run/user/1000 host_ip:/var/nfs/share 25G 2.4G 23G 10% /nfs/share host_ip:/home 25G 2.4G 23G 10% /nfs/home
Entrambe le condivisioni sono montate dallo stesso file system. Quindi mostrano lo stesso utilizzo del disco.
Puoi anche usare il comando
mount
per verificare.client:$ mount | grep nfs rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip) host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
Passaggio 6: testare l'accesso NFS
Testare la condivisione per uso generico
Scrivi un file di prova nella condivisione
/var/nfs/share
.client:$ sudo touch /nfs/share/test.txt
Controlla la sua proprietà.
client:$ ls -l /nfs/share/test.txt -rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt
Dato che abbiamo montato questo volume utilizzando le impostazioni NFS predefinite e creato il file sul client utilizzando
sudo
, la proprietà del file è predefinita sunobody:nobody
. I superuser del client non possono eseguire alcuna attività amministrativa sulla condivisione.Testare la condivisione della home directory
Scrivi un file di prova nella condivisione
/nfs/home
.client:$ sudo touch /nfs/home/home.txt
Controlla la sua proprietà.
client:$ ls -l /nfs/home/home.txt -rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt
Dato che abbiamo usato l'opzione
no_root_squash
, ha permesso all'utente root del client di agire come root sulla condivisione stessa.Passaggio 7: rendere permanenti i punti Mount
Le condivisioni NFS per impostazione predefinita sono temporanee e devono essere montate all'avvio. Possiamo renderli permanenti modificando il file
/etc/fstab
sul client.Apri il file
/etc/fstab
per modificarlo.client:$ sudo nano /etc/fstab
Incolla le seguenti righe in fondo al file.
. . . host_ip:/var/nfs/share /nfs/share nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0 host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Puoi scoprire di più sulle opzioni sopra elencate eseguendo i seguenti comandi.
client:$ man nfs client:$ man mount
Se vuoi leggerli online, puoi cercare su Google la frase
man nfs
eman mount
per saperne di più su queste opzioni.Passaggio 8: smontare la condivisione NFS
Se non desideri più i montaggi remoti sul tuo sistema, puoi smontarli usando il comando
umount
. Si noti che il comando si chiama umount e non unmount, il che è un errore comune.Esci dai montaggi condivisi e smontali.
client:$ cd ~ client:$ sudo umount /nfs/share client:$ sudo umount /nfs/home
Se non hai più bisogno delle condivisioni montate nuovamente al riavvio, assicurati di commentare le voci corrispondenti nel file
/etc/fstab
inserendo un#
firma davanti a loro.Conclusione
In questo tutorial, abbiamo imparato come creare un server host NFS e montare le directory utilizzandolo, che abbiamo condiviso con un client NFS. Se lo stai implementando in una rete privata, non dovrebbero esserci problemi, ma se lo stai utilizzando in produzione, dovresti ricordare che il protocollo non è crittografato e dovresti implementare un'autenticazione per proteggere i tuoi dati.
Se hai domande, pubblicale nei commenti qui sotto.