È possibile condividere i pool e i filesystem ZFS utilizzando il protocollo di condivisione di file NFS (Network File System) e accedervi dai computer remoti molto facilmente.
In questo articolo, ti mostrerò come condividere pool e filesystem ZFS utilizzando il servizio di condivisione di file NFS e accedervi da computer remoti. Quindi iniziamo.
Sommario
Diagramma di rete
In questo articolo, configurerò un Ubuntu 20.04 LTS Computer (nome host: Linuxhint, IP: 192.168.122.98) come server NFS e configurare un Ubuntu 20.04 LTS Computer (nome host: NFS-Client, IP: 192.168.122.203) come client NFS. Entrambi questi computer sono nella sottorete 192.168.122.0/24. Configurerò il server NFS in modo tale che solo i computer/server in questa sottorete saranno in grado di accedere al server NFS.
Figura 1: server NFS e client connessi alla sottorete di rete 192.168.122.0/24
Installazione del server NFS
È necessario avere il pacchetto server NFS installato sul computer da dove si desidera condividere i pool/filesystem ZFS tramite NFS.
Se stai usando Debian 10 o Ubuntu 20.04 LTS, è possibile installare il pacchetto server NFS sul tuo computer come segue:
$ sudo apt installa nfs-kernel-server -yUna volta installato il pacchetto server NFS, il Server NFS Il servizio SystemD dovrebbe essere attivo.
$ sudo systemctl status nfs-server.servizioSe stai utilizzando CentOS 8/RHEL 8, leggi l'articolo come configurare il server NFS su CentOS 8 per l'assistenza sull'installazione del server NFS sul tuo computer.
Installazione Cliente NFS
È necessario avere il pacchetto client NFS installato sul computer da dove accederai ai pool/filesystem ZFS tramite NFS.
Se stai usando Debian 10 o Ubuntu 20.04 LTS, è possibile eseguire il seguente comando per installare il pacchetto client NFS sul tuo computer:
$ sudo apt install nfs -common -yCreazione di pool ZFS e filesystem
In questa sezione, creerò un pool ZFS Pool1 Utilizzando i dispositivi di archiviazione VDB E VDC nella configurazione specchio.
$ sudo lsblk -e7 -dPer creare un nuovo pool ZFS Pool1 Utilizzando i dispositivi di archiviazione VDB E VDC In configurazione mirror, eseguire il seguente comando:
$ sudo zpool crea -f pool1 mirror vdb vdcUn nuovo pool di ZFS Pool1 dovrebbe essere creato e il pool ZFS Pool1 dovrebbe essere montato automaticamente in /pool1 directory.
elenco $ sudo zfsCrea un filesystem ZFS FS1 Nel pool ZFS Pool1 come segue:
$ sudo zfs crea pool1/fs1Un nuovo system ZFS FS1 dovrebbe essere creato e montato automaticamente in /pool1/fs1 directory.
elenco $ sudo zfsCondivisione di piscine ZFS con NFS
Per condividere il pool ZFS Pool1 tramite NFS, devi impostare il sharenfs Proprietà del tuo pool ZFS di conseguenza.
Per consentire a tutti sulla rete di leggere/scrivere l'accesso al pool ZFS Pool1, Puoi impostare il sharenfs Proprietà del pool ZFS Pool1 come segue:
$ sudo zfs set sharenfs = "rw" pool1O,
$ sudo zfs set sharenfs = "rw =*" pool1Per consentire a ogni computer/server sulla sottorete di rete 192.168.122.0/24 Leggi/scrivi l'accesso al pool ZFS Pool1 Solo, puoi impostare il sharenfs Proprietà del pool ZFS Pool1 come segue:
$ sudo zfs set sharenfs = "rw [email protected]/24 "Pool1Per consentire solo il computer con l'indirizzo IP 192.168.122.203 Leggi/scrivi l'accesso al pool ZFS Pool1, Puoi impostare il sharenfs Proprietà del pool ZFS Pool1 come segue:
$ sudo zfs set sharenfs = "rw = 192.168.122.203 "Pool1Puoi usare il colon (:) simbolo per consentire l'accesso al pool ZFS Pool1 Da più sottoreti di rete o indirizzi IP.
Ad esempio, per consentire le sottoreti di rete 192.168.122.0/24 E 192.168.132.0/24 Leggi/scrivi l'accesso al pool ZFS Pool1, Puoi impostare il sharenfs Proprietà del pool ZFS Pool1 come segue:
$ sudo zfs set sharenfs = "rw [email protected]/24:@192.168.132.0/24 "Pool1Allo stesso modo, consentire solo ai computer con gli indirizzi IP 192.168.122.203 E 192.168.122.233 Leggi/scrivi l'accesso al pool ZFS Pool1, Puoi impostare il sharenfs Proprietà del pool ZFS Pool1 come segue:
$ sudo zfs set sharenfs = "rw = 192.168.122.203: 192.168.122.233 "Pool1Puoi verificare se il sharenfs La proprietà è impostata correttamente sul pool ZFS Pool1 come segue:
$ sudo zfs ottieni sharenfs pool1Condivisione di filesystem ZFS con NFS
Per condividere il filesystem ZFS FS1 tramite NFS, devi impostare il sharenfs Proprietà del filesystem ZFS di conseguenza.
Per consentire a tutti sulla rete di leggere/scrivere l'accesso al filesystem ZFS FS1, Puoi impostare il sharenfs Proprietà del filesystem ZFS FS1 come segue:
$ sudo zfs set sharenfs = "rw" pool1/fs1O,
$ sudo zfs set sharenfs = "rw =*" pool1/fs1Per consentire a ogni computer/server sulla sottorete di rete 192.168.122.0/24 Leggi/scrivi l'accesso al filesystem ZFS Pool1/FS1, Puoi impostare il sharenfs Proprietà del filesystem ZFS Pool1/FS1 come segue:
$ sudo zfs set sharenfs = "rw [email protected]/24 "Pool1/FS1Per consentire solo il computer con l'indirizzo IP 192.168.122.203 Leggi/scrivi l'accesso al filesystem ZFS Pool1/FS1, Puoi impostare il sharenfs Proprietà del filesystem ZFS Pool1/FS1 come segue:
$ sudo zfs set sharenfs = "rw = 192.168.122.203 "Pool1/FS1Puoi usare il colon (:) simbolo per consentire l'accesso al filesystem ZFS FS1 Da più sottoreti di rete o indirizzi IP.
Ad esempio, per consentire le sottoreti di rete 192.168.122.0/24 E 192.168.132.0/24 Leggi/scrivi l'accesso al filesystem ZFS Pool1/FS1, Puoi impostare il sharenfs Proprietà del filesystem ZFS Pool1/FS1 come segue:
$ sudo zfs set sharenfs = "rw [email protected]/24:@192.168.132.0/24 "Pool1/FS1Allo stesso modo, consentire solo ai computer con gli indirizzi IP 192.168.122.203 E 192.168.122.233 Leggi/scrivi l'accesso al filesystem ZFS Pool1/FS1, Puoi impostare il sharenfs Proprietà del filesystem ZFS Pool1/FS1 come segue:
$ sudo zfs set sharenfs = "rw = 192.168.122.203: 192.168.122.233 "Pool1/FS1Puoi verificare se il sharenfs La proprietà è impostata correttamente sul filesystem ZFS Pool1/FS1 come segue:
$ sudo zfs ottieni sharenfs pool1/fs1Montaggio di pool ZFS condivisi NFS e filesystems
Per montare i pool ZFS e i filesystem che hai condiviso tramite NFS sul tuo computer (client NFS), è necessario conoscere l'indirizzo IP del server NFS.
Puoi eseguire il 'hostname -i ' Comando sul server NFS per trovare l'indirizzo IP del server NFS. Nel mio caso, l'indirizzo IP è 192.168.122.98.
$ hostname -iUna volta conosciuto l'indirizzo IP del server NFS, è possibile elencare tutte le condivisioni NFS disponibili dal tuo computer come segue:
$ showmount -e 192.168.122.98Come puoi vedere, il pool ZFS Pool1 e il filesystem ZFS FS1 sono elencati come azioni NFS /pool1 E /pool1/fs1 rispettivamente.
Crea una directory /mnt/pool1 Per montare la condivisione NFS /pool1 (Pool ZFS Pool1) come segue:
$ sudo mkdir -v /mnt /pool1Puoi montare la condivisione NFS /pool1 (Pool ZFS Pool1) dal server NFS 192.168.122.98 sul /mnt/pool1 Directory del tuo computer (client NFS) come segue:
$ sudo monte -t nfs 192.168.122.98:/pool1/mnt/pool1La condivisione NFS /pool1 dovrebbe essere montato su /mnt/pool1 Directory del tuo computer (client NFS).
$ df -h /mnt /pool1Allo stesso modo, crea una nuova directory /mnt/fs1 Per montare la condivisione NFS /pool1/fs1 (Filesystem ZFS FS1) come segue:
$ sudo mkdir -v /mnt /fs1Montare la condivisione NFS /pool1/fs1 (Filesystem ZFS FS1) dal server NFS 192.168.122.98 sul /mnt/fs1 Directory del tuo computer (client NFS) come segue:
$ sudo monte -t nfs 192.168.122.98:/pool1/fs1/mnt/fs1La condivisione NFS /pool1/fs1 (Filesystem ZFS FS1) dovrebbe essere montato su /mnt/fs1 Directory del tuo computer (client NFS).
$ df -h /mnt /fs1Montare automaticamente i pool e i filesyms condivisi NFS NFS
Puoi montare le azioni NFS /pool1 (Pool ZFS Pool1) E /pool1/fs1 (Filesystem ZFS FS1) sul tuo computer (client NFS) automaticamente al momento dell'avvio.
Per farlo, aprire il /etc/fstab file con il nano Editor di testo come segue:
$ sudo nano /etc /fstabAggiungere le seguenti righe alla fine del /etc/fstab file.
# Monte NFS condivisioniUna volta che hai finito, premere + X seguito da Y E per salvare il /etc/fstab file.
Per avere effetto sulle modifiche, riavviare il computer (client NFS) come segue:
$ sudo riavviaLa prossima volta che il tuo computer (client NFS) si avvia, le condivisioni NFS /pool1 (Pool ZFS Pool1)E /pool1/fs1 (Filesystem ZFS FS1) dovrebbe essere montato in /mnt/pool1 E /mnt/fs1 rispettivamente directory.
$ df -h -t nfs4Consenti le scritture ai pool ZFS condivisi NFS e ai filesystems
Se provi a scrivere sulle condivisioni NFS /pool1 (Pool ZFS Pool1) O /pool1/fs1 (Filesystem ZFS FS1) dal tuo computer (client NFS) in questo momento, otterrai il Permesso negato Messaggio come mostrato nello screenshot seguente.
Per risolvere questo problema, puoi fare uno dei seguenti:
NOTA: NFS mappa l'UID (ID utente) e GID (ID gruppo) dei computer client NFS con UID e GID del server NFS. Quindi, se un utente/gruppo può scrivere su una condivisione NFS sul server NFS, lo stesso utente/gruppo con lo stesso UID/GID dovrebbe anche essere in grado di scrivere su tale condivisione NFS dal computer client NFS.
In questa sezione, ti mostrerò come impostare gli utenti e i gruppi necessari sul server NFS e sui computer client per poter scrivere sulle condivisioni NFS.
Sul server NFS, crea un nuovo gruppo Users NFS e impostare il GID (ID gruppo) del Users NFS gruppo a 2000 come segue:
$ Sudo GroupAdd-Gid 2000 NFS-UsersSui computer client NFS, crea un nuovo gruppo Users NFS e impostare il GID (ID gruppo) del Users NFS gruppo a 2000 anche.
$ Sudo GroupAdd-Gid 2000 NFS-UsersSul server NFS, modifica il gruppo del /pool1 (Pool ZFS Pool1) E /pool1/fs1 (Filesystem ZFS FS1) directory a Users NFS come segue:
$ sudo chgrp -rfv nfs -users /pool1Consentire le autorizzazioni di lettura e scrittura del gruppo per il /pool1 (Pool ZFS Pool1) E /pool1/fs1 (Filesystem ZFS FS1) directory come segue:
$ sudo chmod -rfv 0775 /pool1Il gruppo del /pool1 (Pool ZFS Pool1) E /pool1/fs1 (Filesystem ZFS FS1) le directory dovrebbero essere cambiate in Users NFS e anche le autorizzazioni di lettura/scrittura di gruppo dovrebbero essere impostate.
$ ls -lhd /pool1Per avere effetto le modifiche, riavviare il server NFS come segue:
$ sudo riavviaOra, devi creare gli account utente necessari sui computer client NFS per poter scrivere sulle condivisioni NFS.
Crea un nuovo utente Alex (diciamo) con l'uid 5001 (in modo che non interferiscano con gli utenti già disponibili nel server NFS) e impostano il gruppo primario dell'utente su Users NFS come segue:
$ sudo useradd -m -s /bin /bash -u 5001 -g nfs -users alexUn nuovo utente Alex con l'uid 5001 e gruppo primario Users NFS (GID 2000) dovrebbe essere creato sul computer client NFS.
$ id AlexOra riavvia il computer client NFS per le modifiche per avere effetto.
$ sudo riavviaUna volta che il computer client NFS si avvia, le condivisioni NFS /pool1 (Pool ZFS Pool1) E /pool1/fs1 (Filesystem ZFS FS1) dovrebbe essere montato.
$ df -h -t nfs4Le condivisioni NFS /pool1 (Pool ZFS Pool1) E /pool1/fs1 (Filesystem ZFS FS1) dovrebbe anche avere le autorizzazioni di directory corrette.
$ ls -lhd /mnt /pool1Ora, accedi come utente Alex Sul computer client NFS come segue:
$ sudo su - AlexL'utente Alex dovrebbe essere in grado di creare file sulla condivisione NFS /pool1 (Pool ZFS Pool1) e accedi a loro come puoi vedere nello screenshot qui sotto.
$ echo '[pool1] hello world'>/mnt/pool1/ciao.TXTL'utente Alex dovrebbe anche essere in grado di creare file sulla condivisione NFS /pool1/fs1 (Filesystem ZFS FS1) e accedi a loro come puoi vedere nello screenshot qui sotto.
$ echo '[fs1] ciao mondo'>/mnt/fs1/ciao.TXTSul server NFS, l'UID (ID utente) dei file che l'utente Alex creato dal computer client NFS dovrebbe essere 5001 E il gruppo dovrebbe essere Users NFS Come puoi vedere nello screenshot qui sotto.
$ ls -lh /pool1Se si desidera risolvere gli UID su nomi utente sul tuo server NFS, è necessario creare lo stesso utente con lo stesso UID (come hai creato sul computer client NFS) sul server NFS.
Per un piccolo numero di utenti, puoi eseguire lo stesso useradd comanda sul server NFS e sul client per risolvere questo problema. Se devi gestire un gran numero di utenti, allora sarà molto lavoro farlo manualmente. Invece, è necessario utilizzare NIS (Network Information Server) o LDAP (Lightweight Directory Access Protocol) per sincronizzare automaticamente gli utenti tra i computer client NFS Server e NFS.
Per assistenza sulla configurazione di NIS sul server NFS e sui computer client, controlla i seguenti articoli:
Per assistenza sulla configurazione di LDAP sul server NFS e sui computer client, controlla i seguenti articoli:
Pool e system di non Sharing ZFS
Se vuoi smettere di condividere il pool ZFS Pool1 Dovrai impostare il sharenfs Proprietà del pool ZFS Pool1 A spento come segue:
$ sudo zfs impostare sharenfs = off pool1La condivisione NFS dovrebbe essere disabilitata per il pool ZFS Pool1 Come puoi vedere nello screenshot qui sotto.
$ sudo zfs ottieni sharenfs pool1Allo stesso modo, puoi smettere di condividere il filesystem ZFS FS1 impostando il sharenfs Proprietà del filesystem ZFS FS1 A spento come segue:
$ sudo zfs imposta sharenfs = off pool1/fs1La condivisione NFS dovrebbe essere disabilitata per il filesystem ZFS FS1 Come puoi vedere nello screenshot qui sotto.
$ sudo zfs ottieni sharenfs pool1/fs1Conclusione
In questo articolo, ti ho mostrato come condividere pool di ZFS e filesystem e accedervi in remoto utilizzando il protocollo di condivisione di file NFS. Ti ho anche mostrato come montare automaticamente i pool/filesystem di ZFS che hai condiviso con NFS sui computer client NFS al momento dell'avvio. Ti ho mostrato come gestire le autorizzazioni di accesso per le azioni NFS e consentire l'accesso alla scrittura alle azioni NFS dai computer client NFS.
Riferimenti
[1] Ubuntu MANPAGE: ZFS - Configura i file system ZFS
[2] File system ZFS di condivisione e non condivisione - Amministrazione Oracle Solaris: file system ZFS
[3] Sinossi - Pagine di Man Sezione 1M: comandi di amministrazione di sistema
[4] NFSSEC MANPAGE SEZIONE 5 - Documentazione Oracle Solaris
[5] CentOS - NFS Predefinito a 777 - Errore del server
[6] Capitolo 4. L'esportazione di NFS condivide Red Hat Enterprise Linux 8 | Portale clienti Red Hat