Ricerca nel sito web

Impostazione di file system Linux standard e configurazione del server NFSv4 - Parte 2


Un Linux Foundation Certified Engineer (LFCE) è formato per impostare, configurare, gestire e risolvere i problemi dei servizi di rete nei sistemi Linux ed è responsabile della progettazione e dell'implementazione dell'architettura di sistema e della risoluzione dei problemi legati alla quotidianità problemi.

Presentazione del programma di certificazione Linux Foundation (LFCE).

Nella parte 1 di questa serie abbiamo spiegato come installare un server NFS (Network File System) e impostare il servizio in modo che venga avviato automaticamente all'avvio. Se non lo hai già fatto, fai riferimento a quell'articolo e segui i passaggi descritti prima di procedere.

  1. Installazione dei servizi di rete e configurazione dell'avvio automatico all'avvio – Parte 1

Ora ti mostrerò come configurare correttamente il tuo server NFSv4 (senza sicurezza di autenticazione) in modo da poter impostare le condivisioni di rete da utilizzare nei client Linux come se tali file system fossero installati localmente. Tieni presente che puoi utilizzare LDAP o NIS per scopi di autenticazione, ma entrambe le opzioni non rientrano nell'ambito della certificazione LFCE.

Configurazione di un server NFSv4

Una volta che il server NFS è attivo e funzionante, concentreremo la nostra attenzione su:

  1. specificando e configurando le directory locali che vogliamo condividere sulla rete e
  2. montando automaticamente quelle condivisioni di rete nei client, tramite il file /etc/fstab o l'utilità automount basata sul kernel (autofs).

Spiegheremo più avanti quando scegliere un metodo o l'altro.

Prima di farlo, dobbiamo assicurarci che il demone idmapd sia in esecuzione e configurato. Questo servizio esegue la mappatura dei nomi NFSv4 (utente@miodominio) agli ID utente e gruppo ed è necessario per implementare un server NFSv4.

Modifica /etc/default/nfs-common per abilitare idmapd.

NEED_IDMAPD=YES

E modifica /etc/idmapd.conf con il nome del tuo dominio locale (il valore predefinito è il FQDN dell'host).

Domain = yourdomain.com

Quindi avvia idmapd.

service nfs-common start 	[sysvinit / upstart based systems]
systemctl start nfs-common 	[systemd based systems]

Esportazione di condivisioni di rete

Il file /etc/exports contiene le principali direttive di configurazione per il nostro server NFS, definisce i file system che verranno esportati su host remoti e specifica le opzioni disponibili. In questo file, ciascuna condivisione di rete è indicata tramite una riga separata, che per impostazione predefinita ha la seguente struttura:

/filesystem/to/export client1([options]) clientN([options])

Dove /filesystem/to/export è il percorso assoluto del file system esportato, mentre client1 (fino a clientN) rappresenta il client specifico (nome host o indirizzo IP) o rete (sono ammessi caratteri jolly) verso cui viene esportata la condivisione. Infine, le opzioni sono un elenco di valori separati da virgole (opzioni) che vengono presi in considerazione rispettivamente durante l'esportazione della condivisione. Tieni presente che non ci sono spazi tra ciascun nome host e le parentesi che lo precedono.

Ecco un elenco delle opzioni più frequenti e la rispettiva descrizione:

  1. ro (abbreviazione di sola lettura): i client remoti possono montare i file system esportati solo con permessi di lettura.
  2. rw (abbreviazione di lettura-scrittura): consente agli host remoti di apportare modifiche di scrittura nei file system esportati.
  3. wdelay (abbreviazione di write delay): il server NFS ritarda il commit delle modifiche sul disco se sospetta che un'altra richiesta di scrittura correlata sia imminente. Tuttavia, se il server NFS riceve più piccole richieste non correlate, questa opzione ridurrà le prestazioni, quindi è possibile utilizzare l'opzione no_wdelay per disattivarla.
  4. sync: il server NFS risponde alle richieste solo dopo che le modifiche sono state apportate alla memoria permanente (ovvero al disco rigido). Il suo opposto, l'opzione async, può aumentare le prestazioni ma al costo della perdita o del danneggiamento dei dati dopo un riavvio non corretto del server.
  5. root_squash: impedisce agli utenti root remoti di avere privilegi di superutente nel server e assegna loro l'ID utente per l'utente nessuno. Se vuoi "squash" tutti gli utenti (e non solo root), puoi usare l'opzione all_squash.
  6. anonuid/anongid: imposta esplicitamente l'UID e il GID dell'account anonimo (nessuno).
  7. subtree_check: se viene esportata solo una sottodirectory di un file system, questa opzione verifica che un file richiesto si trovi in quella sottodirectory esportata. D'altra parte, se viene esportato l'intero file system, disabilitare questa opzione con no_subtree_check velocizzerà i trasferimenti. L'opzione predefinita al giorno d'oggi è no_subtree_check poiché il controllo del sottoalbero tende a causare più problemi di quanto valga, secondo man 5 exports.
  8. fsid=0 | root (zero o root): specifica che il file system specificato è la radice di più directory esportate (si applica solo in NFSv4).

In questo articolo utilizzeremo le directory /NFS-SHARE e /NFS-SHARE/mydir su 192.168.0.10 (server NFS) come nostro testare i file system.

Possiamo sempre elencare le condivisioni di rete disponibili in un server NFS utilizzando il seguente comando:

showmount -e [IP or hostname]

Nell'output sopra, possiamo vedere che le condivisioni /NFS-SHARE e /NFS-SHARE/mydir su 192.168.0.10 sono state esportate al client con indirizzo IP 192.168.0.17.

La nostra configurazione iniziale (fare riferimento alla directory /etc/exports sul server NFS) per la directory esportata è la seguente:

/NFS-SHARE  	192.168.0.17(fsid=0,no_subtree_check,rw,root_squash,sync,anonuid=1000,anongid=1000)
/NFS-SHARE/mydir    	192.168.0.17(ro,sync,no_subtree_check)

Dopo aver modificato il file di configurazione, dobbiamo riavviare il servizio NFS:

service nfs-kernel-server restart 		[sysvinit / upstart based system]
systemctl restart nfs-server			[systemd based systems]
Montaggio delle condivisioni di rete esportate utilizzando autofs

Potresti fare riferimento alla Parte 5 della serie LFCS (“Come montare/smontare file system locali e di rete (Samba e NFS) in Linux”) per i dettagli sul montaggio di condivisioni NFS remote su richiesta utilizzando il comando mount o in modo permanente tramite il file /etc/fstab.

Lo svantaggio di montare un file system di rete utilizzando questi metodi è che il sistema deve allocare le risorse necessarie per mantenere la condivisione sempre montata, o almeno finché non decidiamo di smontarla manualmente. Un'alternativa è montare automaticamente il file system desiderato su richiesta (senza utilizzare il comando mount) tramite autofs, che può montare i file system quando vengono utilizzati e smontarli dopo un periodo di inattività.

Autofs legge /etc/auto.master, che ha il seguente formato:

[mount point]	[map file]

Dove [file mappa] viene utilizzato per indicare più punti di montaggio all'interno di [punto di montaggio].

Questo file della mappa principale (/etc/auto.master) viene quindi utilizzato per determinare quali punti di montaggio sono definiti, quindi avvia un processo di montaggio automatico con i parametri specificati per ciascun punto di montaggio.

Montaggio delle condivisioni NFS esportate utilizzando autofs

Modifica il tuo /etc/auto.master come segue:

/media/nfs	/etc/auto.nfs-share	--timeout=60

e crea un file mappa denominato /etc/auto.nfs-share con il seguente contenuto:

writeable_share  -fstype=nfs4 192.168.0.10:/
non_writeable_share  -fstype=nfs4 192.168.0.10:/mydir

Tieni presente che il primo campo in /etc/auto.nfs-share è il nome di una sottodirectory all'interno di /media/nfs. Ogni sottodirectory viene creata dinamicamente da autofs.

Ora riavvia il servizio autofs:

service autofs restart 			[sysvinit / upstart based systems]
systemctl restart autofs 			[systemd based systems]

e infine, per abilitare l'avvio di autofs all'avvio, esegui il seguente comando:

chkconfig --level 345 autofs on
systemctl enable autofs 			[systemd based systems]
Esame dei file system montati dopo l'avvio del demone autofs

Quando riavviamo autofs, il comando mount ci mostra che il file mappa (/etc/auto.nfs-share) è montato sul file specificato directory in /etc/auto.master:

Tieni presente che nessuna directory è stata ancora montata, ma lo sarà automaticamente quando proveremo ad accedere alle condivisioni specificate in /etc/auto.nfs-share:

Come possiamo vedere, il servizio autofs “monta ” il file map, per così dire, ma attende finché non viene fatta una richiesta ai file system per montarli effettivamente.

Esecuzione di test di scrittura nei file system esportati

Le opzioni anonuid e anongid, insieme a root_squash impostato nella prima condivisione, ci consentono di mappare le richieste eseguite dall'utente root nella client su un account locale nel server.

In altre parole, quando root nel client crea un file in quella directory esportata, la sua proprietà verrà automaticamente mappata all'account utente con UID e GID=1000, a condizione che tale account esista sul server:

Conclusione

Spero che tu sia riuscito a impostare e configurare con successo un server NFS adatto al tuo ambiente utilizzando questo articolo come guida. Potresti anche voler fare riferimento alle pagine man pertinenti per ulteriore aiuto (man exports e man idmapd.conf, per esempio).

Sentiti libero di sperimentare altre opzioni e casi di test come delineato in precedenza e non esitare a utilizzare il modulo sottostante per inviare commenti, suggerimenti o domande. Saremo lieti di sentire la tua opinione.