GNU/Linux >> Linux Esercitazione >  >> Cent OS

Guida per principianti a NFS in CentOS / RHEL

Introduzione a NFS

Un file system di rete (NFS) consente a un server di condividere gerarchie di directory (file system) con sistemi remoti su una rete. I server NFS esportano la directory e i client NFS montano la directory esportata. La directory del server appare quindi ai sistemi client come se fossero directory locali. NFS riduce le esigenze di archiviazione e migliora la coerenza e l'affidabilità dei dati, poiché gli utenti accedono ai file archiviati su un server centralizzato.

RedHat Linux 7 non supporta NFS versione 2 (NFSv2). Sono supportate le due versioni seguenti:
NFS versione 3 (NFSv3).
NFS versione 4 (NFSv4).

NFS si basa sulle chiamate di procedura remota (RPC) tra client e server. I servizi RPC sono controllati dal servizio rpcbind. Il servizio rpcbind sostituisce portmap, utilizzato nelle versioni precedenti di Linux per mappare i numeri di programma RPC in combinazioni di numeri di porta dell'indirizzo IP. rpcbind risponde alle richieste di servizi RPC e imposta le connessioni all'RPC richiesto service.rpcbind non viene utilizzato con NFSv4, poiché il server è in ascolto sulla nota porta TCP 2049. Anche i protocolli di montaggio e blocco sono stati incorporati nel protocollo NFSv4, quindi NFSv4 non interagisce nemmeno con i demoni lockd e rpc.statd.

Server NFS e 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.

Configurazione del server NFS

Per iniziare a configurare un sistema come server NFS, installa il pacchetto nfs-utils:

# yum install nfs-utils

Il file di configurazione principale per il server NFS è /etc/exports . Questo file memorizza un elenco di gerarchie di directory esportate che i sistemi remoti possono montare. Il formato per le voci è:

export-point client1(options) [client2(options) ... ]

Il punto di esportazione è il nome del percorso assoluto della gerarchia di directory da esportare. Uno o più sistemi client, ciascuno con opzioni specifiche, possono montare un punto di esportazione. Non ci sono spazi tra l'attributo client e la parentesi aperta. Quando non vengono specificate opzioni client, si applicano le seguenti impostazioni predefinite:

  • ro:Sola lettura . Gli host client non possono modificare i dati condivisi sul file system. Per consentire agli host client di apportare modifiche al file system, specificare l'opzione rw (lettura/scrittura).
  • sincronizzazione :Il server NFS risponde alle richieste solo dopo che le modifiche apportate dalle richieste precedenti sono state scritte su disco. async specifica che il server non deve attendere.
  • ritardo :Il server NFS ritarda il commit delle richieste di scrittura quando sospetta che un'altra richiesta di scrittura sia imminente. Per disabilitare il ritardo, utilizzare l'opzione no_wdelay. no_wdelay è disponibile solo se è specificata anche l'opzione di sincronizzazione predefinita.
  • root_squash :Impedisce agli utenti root connessi in remoto di avere privilegi di root, "schiacciando" efficacemente il potere dell'utente root remoto. Le richieste sembrano provenire dall'utente nfsnobody, un utente senza privilegi sul sistema locale o come specificato da anonuid. Per disabilitare il root squash, specifica l'opzione no_root_squash.
  • no_all_squash :Non cambia la mappatura degli utenti remoti. Per schiacciare ogni utente remoto (incluso root), usa l'opzione all_squash.

Per specificare l'ID utente (UID) e l'ID gruppo (GID) che il server NFS assegna agli utenti remoti, utilizzare le opzioni anonid e anongid come segue:

export-point client(anonuid=uid,anongid=gid)

Le opzioni anonid e anongid consentono di creare un utente speciale e un account di gruppo per la condivisione degli utenti NFS remoti. Per impostazione predefinita, gli elenchi di controllo di accesso (ACL) sono supportati da NFS. Per disabilitare questa funzione, specifica l'opzione no_acl durante l'esportazione del file system.

È possibile utilizzare caratteri jolly, come (*) e (?) nei nomi dei client. Puoi anche esportare le directory su tutti gli host su una rete IP. A tale scopo, specificare un indirizzo IP e una coppia di netmask come indirizzo/netmask. È valido uno dei seguenti moduli:

192.168.1.0/24
192.168.1.0/255.255.255.0

/etc/exports Esempi

Nell'esempio seguente, un sistema client con l'indirizzo IP 192.0.2.102 può montare la /export/directory con autorizzazioni di lettura/scrittura. Tutte le scritture sul disco sono asincrone:

/export/directory 192.0.2.102(rw,async)

L'esempio seguente esporta la directory /exports/apps in tutti i client, converte tutti gli utenti che si connettono nell'utente anonimo locale nfsnobody e rende la directory di sola lettura:

/exports/apps *(all_squash, ro)

L'esempio seguente esporta la directory /spreadsheets/proj1 con autorizzazioni di sola lettura a tutti i client sulla sottorete 192.168.1.0 e autorizzazioni di lettura/scrittura al sistema client denominato mgmtpc:

/spreadsheets/proj1 192.168.1.0/24(ro) mgmtpc(rw)

Avvio del servizio NFS

Il servizio rpcbind deve essere avviato prima di avviare nfs. Il comando seguente verifica se il servizio rpcbind è abilitato e in esecuzione.

# systemctl status rpcbind

Se il servizio rpcbind è in esecuzione, è possibile avviare il servizio nfs. Riavvia nfs dopo aver apportato modifiche alla configurazione in /etc/exports o esegui il comando exportfs -a.

# systemctl start nfs

Controlla se il servizio nfslock è abilitato e in esecuzione. L'avvio di questo servizio avvia i processi RPC che consentono ai client NFS di bloccare i file sul server.

# systemctl status nfslock

Utilizzare il comando systemctl enable per avviare automaticamente i servizi all'avvio. Utilizzare il nome completo di nfs-server quando si abilita il servizio NFS.

# systemctl enable nfs-server

Specifica le opzioni di configurazione e gli argomenti inserendoli in /etc/sysconfig/nfs . Questo file contiene diversi commenti per aiutarti a specificare che le opzioni sono argomenti. Utilizzare il comando showmount –e per visualizzare i file system esportati:

# showmount –e

Utilità di esportazione

Puoi anche configurare un server NFS dalla riga di comando usando exportfs. Questo comando consente all'utente root di esportare o annullare l'esportazione selettivamente delle directory senza modificare /etc/exports e senza riavviare il servizio NFS. La sintassi del comando è:

# exportfs [options] [client:dir ...]

L'argomento client è il nome del sistema client in cui viene esportata la directory. L'argomento dir è il nome del percorso assoluto della directory esportata. Di seguito è riportato un elenco di alcune delle opzioni:

  • -r :riesporta le voci in /etc/exports e sincronizza /var/lib/nfs/etab con /etc/exports. Il file /var/lib/nfs/etab è la tabella di esportazione principale. rpc.mountd legge questo file quando un client invia un comando di montaggio NFS.
  • -a :Esporta le voci in /etc/exports ma non sincronizza /var/lib/nfs/etab. Esegui exportfs –a dopo aver apportato modifiche alla configurazione.
  • -i :Ignora le voci in /etc/exports e usa solo argomenti della riga di comando.
  • -u :Annulla l'esportazione di una o più directory.
  • -o :Specifica le opzioni client come specificato in /etc/exports.

Configurazione client NFS

Per iniziare a configurare un sistema come client NFS, installa il pacchetto nfs-utils:

# yum install nfs-utils

Utilizzare il comando mount per montare i file system esportati (condivisioni NFS) sul lato client. La sintassi del comando è:

# mount -t nfs -o options host:/remote/export /local/directory

Le seguenti sono le descrizioni degli argomenti:

  • -t nfs :indica che il tipo di file system è nfs. Con questa opzione, mount utilizza NFSv4 se il server lo supporta; in caso contrario, utilizza NFSv3.
  • -o opzioni :un elenco delimitato da virgole di opzioni di montaggio
  • ospite :/remote/export:il nome host che esporta il file system, seguito da due punti, seguito dal nome del percorso assoluto della condivisione NFS
  • /local/directory :il punto di montaggio sul sistema client

Ad esempio, per montare la directory /home esportata dall'host abc con autorizzazioni di sola lettura (opzione ro) sul punto di montaggio locale /abc_home e impedire agli utenti remoti di ottenere privilegi più elevati eseguendo un programma setuid (opzione nosuid):

# mount -t nfs -o ro,nosuid abc:/home /abc_home

Per montare condivisioni NFS all'avvio, aggiungere voci alla tabella di montaggio del file system, /etc/fstab. Le voci sono nel seguente formato:

# vi /etc/fstab
server:/exported-filesystem    local_mount_point   nfs   options   0 0

Ad esempio, la voce /etc/fstab che replica il comando mount nella pagina precedente è:

# vi /etc/fstab
abc:/home    /abc_home    nfs    ro,nosuid    0 0

Il comando df visualizza i file system montati, inclusi i file system montati su NFS. Per i montaggi NFS, la colonna "File system" mostra le informazioni sul server:/filesystem esportato. Usa la -T opzione per includere una colonna "Tipo":

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
host03:/Dev    nfs4      976M  2.5M 907M  1%   /remote_dev
CentOS / RHEL 7:configurazione di un server NFS e client NFS


Cent OS
  1. Installa Webmin su CentOS 7 / RHEL 7

  2. Una guida definitiva per aggiornare il kernel su CentOS/RHEL/Fedora

  3. CentOS / RHEL 7:configurazione di un server NFS e un client NFS

  4. CentOS / RHEL 7:Guida per principianti a firewalld

  5. Come disabilitare la memorizzazione nella cache del client NFS in CentOS/RHEL

Controllare l'indirizzo IP CentOS/RHEL

Installa gnome su RHEL 8 / CentOS 8

Installa Python 2 su RHEL 8 / CentOS 8

Come configurare il server NFS su CentOS 8 / RHEL 8

CentOS / RHEL 7:Guida per principianti alle unità di servizio systemd

Guida completa alla configurazione di iSCSI in CentOS / RHEL 7