GNU/Linux >> Linux Esercitazione >  >> Linux

Domande dell'intervista su Linux Network File System (NFS).

Cos'è NFS?

Network File System (NFS) è uno dei più antichi prodotti di condivisione di file per computer esistenti oggi. È ancora il più popolare per la condivisione di directory di file tra sistemi UNIX e Linux. NFS consente ai server di designare directory specifiche da rendere disponibili agli host designati e quindi consente ai sistemi client di connettersi a tali directory montandole localmente.

NFS può essere protetto utilizzando regole firewall (iptables), wrapper TCP (per consentire e negare l'accesso all'host) e SELinux (per limitare il modo in cui i protocolli di condivisione file possono condividere le risorse NFS). Sebbene NFS fosse intrinsecamente insicuro al momento della creazione (i dati sono condivisi non crittografati e l'accesso degli utenti è abbastanza aperto), le funzionalità di NFS versione 4 hanno contribuito a migliorare la sicurezza generale di NFS.

Cosa sono il server NFS e i processi RPC

L'avvio del servizio nfs-server avvia il server NFS e altri processi RPC necessari per soddisfare le richieste per i file system NFS condivisi. Puoi utilizzare il nome breve "nfs ” anziché “server-nfs ” all'avvio del servizio. Esempio:

# systemctl start nfs

Questo è il processo del server NFS che implementa la parte a livello utente del servizio NFS. La funzionalità principale è gestita dal modulo del kernel nfsd. Il programma in spazio utente specifica semplicemente su quale tipo di socket è in ascolto il server del kernel, quali versioni NFS supporta e quanti thread del kernel nfsd utilizza. Usa il comando ps –e per mostrare il numero di thread in esecuzione.

# ps -ef | grep nfs
root      9093     2  0 11:21 ?        00:00:00 [nfsd4_callbacks]
root      9099     2  0 11:21 ?        00:00:00 [nfsd]
root      9100     2  0 11:21 ?        00:00:00 [nfsd]
root      9101     2  0 11:21 ?        00:00:00 [nfsd]
root      9102     2  0 11:21 ?        00:00:00 [nfsd]
root      9103     2  0 11:21 ?        00:00:00 [nfsd]
root      9104     2  0 11:21 ?        00:00:00 [nfsd]
root      9105     2  0 11:21 ?        00:00:00 [nfsd]
root      9106     2  0 11:21 ?        00:00:00 [nfsd]

Il numero di thread nfsd da eseguire è definito in /proc/fs/nfsd/threads file. In questo esempio, sono specificati 8 thread nfsd:

# cat /proc/fs/nfsd/threads
8

L'avvio del servizio nfs-server avvia anche i processi RPC. È possibile utilizzare il comando ps –e per visualizzare i nomi dei processi RPC.

# ps -e | grep -i rpc
  177 ?        00:00:00 rpciod
 9080 ?        00:00:00 rpc.statd
 9081 ?        00:00:00 rpc.idmapd
 9082 ?        00:00:00 rpcbind
 9083 ?        00:00:00 rpc.mountd
 9084 ?        00:00:00 rpc.rquotad

rpc.statd

Questo processo implementa il protocollo RPC Network Status Monitor (NSM), che notifica ai client NFS quando un server NFS viene riavviato senza che venga interrotto correttamente. Questo non viene utilizzato con NFSv4.

rpc.mountd

Questo è il demone di montaggio NFS che implementa il lato server delle richieste di montaggio dai client NFSv3. Verifica che la condivisione NFS richiesta sia attualmente esportata dal server NFS e che il client sia autorizzato ad accedervi. Per NFSv4, il demone rpc.mountd è richiesto solo sul server NFS per impostare le esportazioni.

rpc.idmapd

Ciò fornisce upcall client e server NFSv4, che mappano tra nomi NFSv4 on-the-wire (che sono stringhe sotto forma di utente@dominio) e UID e GID locali. Affinché idmapd funzioni con NFSv4, è necessario configurare /etc/idmapd.conf. Questo servizio è necessario per l'utilizzo con NFSv4, anche se non quando tutti gli host condividono lo stesso nome di dominio DNS.

rpc.rquotad

Questo processo fornisce informazioni sulla quota utente per gli utenti remoti. Viene avviato automaticamente dal servizio nfs e non richiede la configurazione dell'utente. I risultati vengono utilizzati dal comando quota per visualizzare le quote utente per i file system remoti e dal comando edquota per impostare le quote sui file system remoti.

bloccato

Questo è un thread del kernel che viene eseguito sia sui client che sui server. Implementa il protocollo Network Lock Manager (NLM), che consente ai client NFSv3 di bloccare i file sul server. Viene avviato automaticamente ogni volta che viene eseguito il server NFS e ogni volta che viene montato un file system NFS.

nfslock

L'avvio di questo servizio avvia i processi RPC che consentono ai client NFS di bloccare i file sul server.

Come configurare il server NFS e il client NFS in CentOS/RHEL?

Si prega di leggere i post seguenti per configurare il server NFS e le macchine client.

Guida per principianti a NFS in CentOS/RHEL
CentOS/RHEL 7:Configurazione di un server NFS e un client NFS

Quali sono i file di configurazione per il server NFS?

La configurazione principale per il server NFS è il file /etc/exports. Questo è il file che usi per specificare quali directory vuoi condividere con i client NFS. La sintassi di questo file è:

Directory      hostname(options)

Il valore di Directory deve essere sostituito con il nome della directory che si desidera condividere (ad esempio, /usr/share/doc). Il valore hostname dovrebbe essere un nome host del client che può essere risolto in un indirizzo IP. Il valore delle opzioni viene utilizzato per specificare come condividere la risorsa.

Ad esempio, la voce seguente nel file /etc/exports condividerà la directory /usr/share/doc con il client NFS client01 (con le opzioni di lettura-scrittura) e il client NFS client02 (con l'opzione di sola lettura ):

# vi /etc/exports
/usr/share/doc      client01(rw) client02(ro)

Si noti che c'è uno spazio tra il nome/opzioni client01 e client02, ma non c'è spazio tra il nome host e la sua opzione corrispondente.

Comprendere il file /etc/exports

Quali sono le opzioni di condivisione NFS più comunemente usate in /etc/exports

Ci sono molte diverse opzioni di condivisione NFS, incluse queste:

  • rw :Condividi come lettura-scrittura. Tieni presente che si applicano ancora le normali autorizzazioni Linux. (Nota che questa è un'opzione predefinita.)
  • ro :condividi come di sola lettura.
  • sincronizzazione :le modifiche ai dati dei file vengono apportate immediatamente al disco, il che ha un impatto sulle prestazioni, ma è meno probabile che comporti una perdita di dati. Su alcune distribuzioni questa è l'impostazione predefinita.
  • asincrono :L'opposto della sincronizzazione; le modifiche ai dati del file vengono inizialmente apportate alla memoria. Ciò accelera le prestazioni ma è più probabile che si traduca in una perdita di dati. Su alcune distribuzioni questa è l'impostazione predefinita.
  • root_squash :mappa l'utente root e l'account di gruppo dal client NFS agli account anonimi, in genere l'account nessuno o l'account nfsnobody. Per ulteriori dettagli, vedere la sezione successiva, "Mappatura ID utente". (Nota che questa è un'opzione predefinita.)
  • no_root_squash :mappa l'utente root e l'account di gruppo dal client NFS agli account root e di gruppo locali.
Opzioni di montaggio NFS comuni in Linux

Come ottenere le informazioni sulle prestazioni delle condivisioni NFS?

Il comando nfsiostat funziona come il comando iostat eccetto solo per i punti di montaggio NFS. nfsiostat riceve input da /proc/self/mountstats e fornisce informazioni sulle prestazioni di input/output delle condivisioni NFS montate nel sistema. Il comando nfsiostat è fornito da nfs-utils pacchetto.

Di seguito è riportato un esempio di output del comando nfsiostat.

La tabella seguente mostra una breve descrizione di ciascuna colonna nell'output delle informazioni.

Campo Descrizione
op/i Questo è il numero di operazioni al secondo.
rpc bklog Questa è la lunghezza della coda del backlog.
kB/s Questo è il numero di kB scritti/letti al secondo.
kB/op Questo è il numero di kB scritti/letti per ogni operazione.
ritrasforma Questo è il numero di ritrasmissioni.
RTT medio (ms) Questa è la durata dal momento in cui il kernel del client invia la richiesta RPC fino al momento in cui riceve la risposta.
avg exe (ms) Questa è la durata dal momento in cui il client NFS esegue la richiesta RPC al suo kernel fino al completamento della richiesta RPC, questo include il tempo RTT sopra.

Di seguito è riportata una sintassi per utilizzare il comando nfsiostat.

# nfsiostat --help
Usage: nfsiostat [interval] [count] [options] [mount point]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit

  Statistics Options:
    File I/O is displayed unless one of the following is specified:

    -a, --attr          displays statistics related to the attribute cache
    -d, --dir           displays statistics related to directory operations
    -p, --page          displays statistics related to the page cache

  Display Options:
    Options affecting display format:

    -s, --sort          Sort NFS mount points by ops/second
    -l LIST, --list=LIST
                        only print stats for first LIST mount points

Qui,
intervallo – tempo in secondi tra ogni rapporto.
conta – numero di report da generare a [intervallo] secondi di distanza. Se non specifichi il conteggio qui, il rapporto verrà generato in modo continuo all'intervallo specificato.
opzioni – Le varie opzioni sono spiegate negli esempi seguenti.
punto_di_montaggio – è possibile specificare un punto di montaggio NFS specifico per il quale visualizzare le statistiche. In questo caso viene generato un report solo per il punto di montaggio specificato.

Come visualizzare le condivisioni NFS attualmente condivise?

Il comando exportfs può essere utilizzato sul server NFS per visualizzare ciò che è attualmente condiviso:

# exportfs
/share          [world]

Come condividere una risorsa NFS utilizzando la riga di comando?

Il comando exportfs può essere utilizzato anche per condividere temporaneamente una risorsa, supponendo che i servizi NFS siano già stati avviati:

# exportfs -o ro 192.168.1.100:/usr/share/doc
# exportfs
/usr/share/doc  192.168.1.100
/share          [world]

Il -o opzione viene utilizzata per specificare le opzioni di condivisione. L'argomento include il nome dei sistemi con cui condividere, nonché la directory da condividere, separati da due punti (:).

Se apporti modifiche al file /etc/exports, qualsiasi nuova condivisione aggiunta verrà abilitata dopo un riavvio. Se vuoi abilitare queste modifiche immediatamente, esegui il seguente comando:

# exportfs –a

Come montare la condivisione NFS sui sistemi client?

Una volta che la condivisione NFS è stata esportata dal server NFS, può essere montata sui client idonei utilizzando la seguente sintassi dei comandi:

# mount [NFS server IP or hostname]:/share/path /client/path

Ad esempio, se /exports/downloads è condiviso dal server NFS 10.10.10.100, possiamo montarlo sul server client come directory /mnt/downloads usando il comando seguente:

# mount 10.10.10.100:/exports/downloads /mnt/downloads

Come smontare un filesystem NFS?

Dopo che un filesystem NFS è stato montato, smontarlo è semplice. Utilizzare il comando umount con il punto di montaggio locale o il nome del filesystem remoto. Ad esempio:

# umount /mnt/nfs_mnt

oppure:

# umount 10.10.10.100:/nfs_share

Come ottenere un elenco di client collegati al server NFS?

Per ottenere un elenco di client connessi al server NFS, utilizzare il comando showmount da un prompt del terminale. Per mostrare anche le directory a cui sono collegati i client, usa:

# showmount -a

Qual ​​è la porta predefinita utilizzata dal server NFS?

Per impostazione predefinita, il server NFS utilizza la porta 2049.

Quali porte devono essere aperte nel firewall affinché NFS funzioni?

Le porte TCP e UDP 2049 (nfs) e 111 (rpcbind) devono essere aperte affinché un server NFS funzioni correttamente. Il server deve anche aprire le porte TCP e UDP 20048 affinché il comando showmount possa interrogare le directory condivise NFS disponibili da rpc.mountd sul server.

Come visualizzare le condivisioni NFS dai sistemi client?

Da un sistema client Linux, puoi utilizzare il comando showmount per vedere quali directory condivise sono disponibili da un computer selezionato, come in questo esempio:

$ showmount -e server.example.com
/export/myshare client.example.com
/mnt/public *

L'output di showmount mostra che la directory condivisa denominata /export/myshare è disponibile solo per l'host client.example.com. La directory condivisa /mnt/public, tuttavia, è disponibile per chiunque.

Come visualizzare i punti di montaggio NFS montati sul client NFS?

Utilizzare il comando seguente per visualizzare i punti di montaggio NFS montati su un server client NFS:

# mount -t nfs4

Esempio di output:

# mount -t nfs4
10.10.10.100:/mnt on /mnt/fed type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.20.200,local_lock=none,addr=10.10.20.200)

L'output del comando mount -t nfs4 mostra solo i filesystem montati dai file server NFS.

Come montare i filesystem NFS all'avvio?

Per configurare un filesystem NFS in modo che venga montato automaticamente su un punto di montaggio specificato ogni volta che avvii il tuo sistema Linux, devi aggiungere una voce per quel filesystem NFS al file /etc/fstab.

Ecco il formato per aggiungere un filesystem NFS al tuo sistema locale:

host:directory    mountpoint   nfs   options   0   0

Il primo elemento (host:directory) identifica il computer del server NFS e la directory condivisa. mountpoint è il punto di montaggio locale su cui è montata la directory NFS. È seguito dal tipo di filesystem (nfs). Tutte le opzioni relative alla montatura vengono visualizzate successivamente in un elenco separato da virgole. (Gli ultimi due zeri configurano il sistema per non scaricare il contenuto del filesystem e per non eseguire fsck sul filesystem.)

I seguenti sono esempi di voci NFS in /etc/fstab:

# vi /etc/fstab
nfs_server01:/data    /mnt/data      nfs    bg,rsize=8192,wsize=8192  0  0

Come utilizzare autofs per montare filesystem NFS su richiesta?

La funzione autofs monta i filesystem di rete su richiesta quando qualcuno tenta di usare i filesystem. Con la funzione autofs configurata e attivata, puoi fare in modo che tutte le directory condivise NFS disponibili vengano montate su richiesta. Per utilizzare la funzione autofs, è necessario che sia installato il pacchetto autofs.

Con autofs abilitato, se conosci il nome host e la directory condivisi da un altro computer host, cambia semplicemente (cd) nella directory di montaggio autofs (/net o /var/autofs per impostazione predefinita). Ciò fa sì che la risorsa condivisa venga automaticamente montata e resa accessibile all'utente. I seguenti passaggi spiegano come attivare la funzione autofs in Fedora o RHEL:

1. Come utente root, apri /etc/auto.master file e cerca la seguente riga:

# vi /etc/auto.master
/net -hosts

Ciò fa sì che la directory /net funga da punto di montaggio per le directory condivise NFS a cui desideri accedere sulla rete.

2. Per avviare il servizio autofs in CentOS/RHEL 7 o in un sistema successivo, digita quanto segue come utente root:

# systemctl start autofs.service

3. Su CentOS/RHEL 7 o su un sistema successivo, configura il servizio autofs in modo che si riavvii ogni volta che avvii il sistema:

# systemctl enable autofs

Come si configura il firewall sul server NFS?

Affinché il server NFS funzioni, abilita i servizi nfs, mountd e rpc-bind nell'area pertinente nell'applicazione firewall-config o usando firewall-cmd :

# firewall-cmd --add-service=nfs --zone=internal --permanent
# firewall-cmd --add-service=mountd --zone=internal --permanent
# firewall-cmd --add-service=rpc-bind --zone=internal --permanent


Linux
  1. Migliora le prestazioni del sistema Linux con noatime

  2. Configurazione rapida del server NFS su sistema Linux Redhat 7

  3. Le 25 principali domande sull'intervista su Linux

  4. Domande per l'intervista su Linux:autorizzazioni di base per file e directory

  5. Domande per l'intervista su Linux – Stampa Linux (CUPS)

Monta automaticamente la condivisione NFS in Linux usando autofs

Comando Fsck in Linux (ripara file system)

I miei comandi per la risoluzione dei problemi di rete Linux

Amministrazione di Network File System (NFS) su Linux

Che cos'è il file system Linux? Guida facile

Le 50 domande e risposte di interviste su Linux più frequenti