Comment partager des systèmes de fichiers ZFS avec NFS

Comment partager des systèmes de fichiers ZFS avec NFS

Vous pouvez partager vos pools et systèmes de fichiers ZFS à l'aide du protocole de partage de fichiers NFS (Système de fichiers réseau) et y accéder à partir d'ordinateurs distants très facilement.

Dans cet article, je vais vous montrer comment partager les pools et les systèmes de fichiers ZFS à l'aide du service de partage de fichiers NFS et d'y accéder à partir d'ordinateurs distants. Alors, commençons.

Table des matières

  1. Diagramme de réseau
  2. Installation du serveur NFS
  3. Installation du client NFS
  4. Création de pools et de systèmes de fichiers ZFS
  5. Partage des pools ZFS avec NFS
  6. Partage de système de fichiers ZFS avec NFS
  7. Le montage NFS partage les pools et les systèmes de fichiers ZFS
  8. Montant automatiquement NFS partageant les pools et systèmes de fichiers ZFS
  9. Autoriser les écritures aux pools et systèmes de fichiers NFS partagés NFS
  10. Pools et systèmes de fichiers ZFS sans partage
  11. Conclusion
  12. Les références

Diagramme de réseau

Dans cet article, je configurerai un Ubuntu 20.04 ordinateur LTS (nom d'hôte: linuxhint, IP: 192.168.122.98) En tant que serveur NFS et configurer un Ubuntu 20.04 ordinateur LTS (nom d'hôte: NFS-CLIENT, IP: 192.168.122.203) En tant que client NFS. Ces deux ordinateurs sont dans le sous-réseau 192.168.122.0/24. Je vais configurer le serveur NFS d'une manière que seuls les ordinateurs / serveurs de ce sous-réseau pourront accéder au serveur NFS.

Figure 1: Serveur NFS et client connecté au sous-réseau réseau 192.168.122.0/24

Installation du serveur NFS

Vous devez avoir le package NFS Server installé sur l'ordinateur à partir de l'endroit où vous souhaitez partager vos pools / systèmes de fichiers ZFS via NFS.

Si vous utilisez Debian 10 ou Ubuntu 20.04 LTS, vous pouvez installer le package NFS Server sur votre ordinateur comme suit:

$ sudo apt install nfs-kernel-server -y

Une fois le package NFS Server installé, le NFS-Server Le service SystemD devrait être actif.

$ sudo systemctl status nfs-server.service

Si vous utilisez CentOS 8 / RHEL 8, lisez l'article comment configurer le serveur NFS sur CentOS 8 pour obtenir de l'aide sur l'installation du serveur NFS sur votre ordinateur.

Installation Client NFS

Vous devez avoir le package client NFS installé sur l'ordinateur à partir de l'endroit où vous allez accéder à vos pools / systèmes de fichiers ZFS via NFS.

Si vous utilisez Debian 10 ou Ubuntu 20.04 LTS, vous pouvez exécuter la commande suivante pour installer le package client NFS sur votre ordinateur:

$ sudo apt installer nfs-common -y

Création de pools et de systèmes de fichiers ZFS

Dans cette section, je vais créer une piscine ZFS piscine 1 Utilisation des périphériques de stockage vdb et VDC Dans la configuration du miroir.

$ sudo lsblk -e7 -d

Pour créer une nouvelle piscine ZFS piscine 1 Utilisation des périphériques de stockage vdb et VDC Dans la configuration du miroir, exécutez la commande suivante:

$ sudo zpool Create -f Pool1 Mirror VDB VDC

Une nouvelle piscine ZFS piscine 1 devrait être créé et la piscine ZFS piscine 1 devrait être automatiquement monté dans le / piscine1 annuaire.

$ sudo zfs

Créer un système de fichiers ZFS FS1 Dans la piscine ZFS piscine 1 comme suit:

$ sudo ZFS Créer Pool1 / FS1

Un nouveau système de fichiers ZFS FS1 doit être créé et monté automatiquement dans le / pool1 / fs1 annuaire.

$ sudo zfs

Partage des pools ZFS avec NFS

Pour partager la piscine ZFS piscine 1 via NFS, vous devez définir le sharenfs propriété de votre pool ZFS en conséquence.

Pour permettre à tout le monde sur le réseau de lire / écrire un accès au pool ZFS piscine 1, vous pouvez définir le sharenfs propriété de la piscine ZFS piscine 1 comme suit:

$ sudo ZFS Set sharenfs = "rw" pool1

Ou,

$ sudo ZFS Set sharenfs = "rw = *" pool1

Pour permettre à chaque ordinateur / serveur du sous-réseau réseau 192.168.122.0/24 lire / écrire un accès au pool ZFS piscine 1 seulement, vous pouvez définir le sharenfs propriété de la piscine ZFS piscine 1 comme suit:

$ sudo ZFS Set sharenfs = "rw = @ 192.168.122.0/24 "Pool1

Pour autoriser uniquement l'ordinateur avec l'adresse IP 192.168.122.203 lire / écrire un accès au pool ZFS piscine 1, vous pouvez définir le sharenfs propriété de la piscine ZFS piscine 1 comme suit:

$ sudo ZFS Set sharenfs = "rw = 192.168.122.203 "Pool1

Vous pouvez utiliser le côlon (:) symbole pour permettre l'accès à la piscine ZFS piscine 1 à partir de plusieurs sous-réseaux de réseau ou adresses IP également.

Par exemple, pour permettre aux sous-réseaux du réseau 192.168.122.0/24 et 192.168.132.0/24 lire / écrire un accès au pool ZFS piscine 1, vous pouvez définir le sharenfs propriété de la piscine ZFS piscine 1 comme suit:

$ sudo ZFS Set sharenfs = "rw = @ 192.168.122.0/24: @ 192.168.132.0/24 "Pool1

De la même manière, pour autoriser uniquement les ordinateurs avec les adresses IP 192.168.122.203 et 192.168.122.233 lire / écrire un accès au pool ZFS piscine 1, vous pouvez définir le sharenfs propriété de la piscine ZFS piscine 1 comme suit:

$ sudo ZFS Set sharenfs = "rw = 192.168.122.203: 192.168.122.233 "Pool1

Vous pouvez vérifier si le sharenfs La propriété est correctement définie sur le pool ZFS piscine 1 comme suit:

$ sudo zfs obtient le pool Sharenfs1

Partage de système de fichiers ZFS avec NFS

Pour partager le système de fichiers ZFS FS1 via NFS, vous devez définir le sharenfs propriété du système de fichiers ZFS en conséquence.

Pour permettre à tout le monde sur le réseau de lire / écrire un accès au système de fichiers ZFS FS1, vous pouvez définir le sharenfs propriété du système de fichiers ZFS FS1 comme suit:

$ sudo ZFS Set sharenfs = "rw" pool1 / fs1

Ou,

$ sudo ZFS Set sharenfs = "rw = *" pool1 / fs1

Pour permettre à chaque ordinateur / serveur du sous-réseau réseau 192.168.122.0/24 lire / écrire un accès au système de fichiers ZFS Pool1 / FS1, vous pouvez définir le sharenfs propriété du système de fichiers ZFS Pool1 / FS1 comme suit:

$ sudo ZFS Set sharenfs = "rw = @ 192.168.122.0/24 "Pool1 / FS1

Pour autoriser uniquement l'ordinateur avec l'adresse IP 192.168.122.203 lire / écrire un accès au système de fichiers ZFS Pool1 / FS1, vous pouvez définir le sharenfs propriété du système de fichiers ZFS Pool1 / FS1 comme suit:

$ sudo ZFS Set sharenfs = "rw = 192.168.122.203 "Pool1 / FS1

Vous pouvez utiliser le côlon (:) symbole pour permettre l'accès au système de fichiers ZFS FS1 à partir de plusieurs sous-réseaux de réseau ou adresses IP également.

Par exemple, pour permettre aux sous-réseaux du réseau 192.168.122.0/24 et 192.168.132.0/24 lire / écrire un accès au système de fichiers ZFS Pool1 / FS1, vous pouvez définir le sharenfs propriété du système de fichiers ZFS Pool1 / FS1 comme suit:

$ sudo ZFS Set sharenfs = "rw = @ 192.168.122.0/24: @ 192.168.132.0/24 "Pool1 / FS1

De la même manière, pour autoriser uniquement les ordinateurs avec les adresses IP 192.168.122.203 et 192.168.122.233 lire / écrire un accès au système de fichiers ZFS Pool1 / FS1, vous pouvez définir le sharenfs propriété du système de fichiers ZFS Pool1 / FS1 comme suit:

$ sudo ZFS Set sharenfs = "rw = 192.168.122.203: 192.168.122.233 "Pool1 / FS1

Vous pouvez vérifier si le sharenfs la propriété est correctement définie sur le système de fichiers ZFS Pool1 / FS1 comme suit:

$ sudo zfs obtient les sharenfs pool1 / fs1

Le montage NFS partage les pools et les systèmes de fichiers ZFS

Pour monter les pools et systèmes de fichiers ZFS que vous avez partagés via NFS sur votre ordinateur (client NFS), vous devez connaître l'adresse IP de votre serveur NFS.

Vous pouvez exécuter le 'nom d'hôte -i ' Commande sur votre serveur NFS pour trouver l'adresse IP de votre serveur NFS. Dans mon cas, l'adresse IP est 192.168.122.98.

$ hostname -i

Une fois que vous connaissez l'adresse IP du serveur NFS, vous pouvez répertorier toutes les partages NFS disponibles à partir de votre ordinateur comme suit:

$ showmount -e 192.168.122.98

Comme vous pouvez le voir, la piscine ZFS piscine 1 Et le système de fichiers ZFS FS1 sont répertoriés comme des actions NFS / piscine1 et / pool1 / fs1 respectivement.

Créer un répertoire / mnt / pool1 pour le montage de la part du NFS / piscine1 (Piscine ZFS piscine 1) comme suit:

$ sudo mkdir -v / mnt / pool1

Vous pouvez monter le partage NFS / piscine1 (Piscine ZFS piscine 1) à partir du serveur NFS 192.168.122.98 sur le / mnt / pool1 Répertoire de votre ordinateur (client NFS) comme suit:

$ sudo Mount -T NFS 192.168.122.98: / pool1 / mnt / pool1

Le partage NFS / piscine1 devrait être monté sur le / mnt / pool1 Répertoire de votre ordinateur (client NFS).

$ df -h / mnt / pool1

De la même manière, créez un nouveau répertoire / mnt / fs1 pour le montage de la part du NFS / pool1 / fs1 (Système de fichiers ZFS FS1) comme suit:

$ sudo mkdir -v / mnt / fs1

Monter le partage NFS / pool1 / fs1 (Système de fichiers ZFS FS1) à partir du serveur NFS 192.168.122.98 sur le / mnt / fs1 Répertoire de votre ordinateur (client NFS) comme suit:

$ sudo Mount -T NFS 192.168.122.98: / pool1 / fs1 / mnt / fs1

Le partage NFS / pool1 / fs1 (Système de fichiers ZFS FS1) doit être monté sur le / mnt / fs1 Répertoire de votre ordinateur (client NFS).

$ df -h / mnt / fs1

Montant automatiquement NFS partageant les pools et systèmes de fichiers ZFS

Vous pouvez monter les actions NFS / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) sur votre ordinateur (client NFS) automatiquement au démarrage.

Pour ce faire, ouvrez le / etc / fstab fichier avec le nano Éditeur de texte comme suit:

$ sudo nano / etc / fstab

Ajouter les lignes suivantes à la fin du / etc / fstab déposer.

# Mount NFS Share
192.168.122.98: / pool1 / mnt / pool1 nfs par défaut 0 0
192.168.122.98: / pool1 / fs1 / mnt / fs1 nfs par défaut 0 0

Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le / etc / fstab déposer.

Pour que les modifications prennent effet, redémarrez votre ordinateur (client NFS) comme suit:

$ sudo redémarrer

La prochaine fois que votre ordinateur (client NFS) bopsa, le NFS partage / piscine1 (Piscine ZFS piscine 1)et / pool1 / fs1 (Système de fichiers ZFS FS1) doit être monté dans le / mnt / pool1 et / mnt / fs1 répertoires respectivement.

$ df -h -t nfs4

Autoriser les écritures aux pools et systèmes de fichiers NFS partagés NFS

Si vous essayez d'écrire aux actions NFS / piscine1 (Piscine ZFS piscine 1) ou / pool1 / fs1 (Système de fichiers ZFS FS1) De votre ordinateur (client NFS) dès maintenant, vous obtiendrez le Permission refusée Message comme indiqué dans la capture d'écran ci-dessous.

Pour résoudre ce problème, vous pouvez faire l'un des éléments suivants:

  1. Ensemble 0777 autorisation sur le / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) Répertoire du serveur NFS pour que tout le monde puisse écrire dans le pool ZFS piscine 1 et système de fichiers FS1. Cette méthode présente de grands risques de sécurité. Donc, je ne le recommande pas à moins que vous ne l'utilisiez à des fins de test.
  2. Créer un groupe NFS-Users (Disons) sur le serveur NFS et sur les ordinateurs clients NFS à partir desquels vous souhaitez écrire à vos partages NFS. Ensuite, changez le groupe du / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) répertoires du serveur NFS à NFS-Users. Aussi, définissez les autorisations d'écriture de groupe (0775) pour les répertoires / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) répertoires du serveur NFS. De cette façon, vous pouvez créer de nouveaux utilisateurs sur les ordinateurs clients NFS, définis NFS-Users En tant que groupe principal, et ils devraient être en mesure d'écrire aux actions NFS sans aucun problème.

NOTE: NFS mappe l'IID (ID utilisateur) et GID (ID de groupe) des ordinateurs clients NFS avec l'UID et le GID du serveur NFS. Ainsi, si un utilisateur / groupe peut écrire à un partage NFS sur le serveur NFS, le même utilisateur / groupe avec le même UID / GID devrait également être en mesure d'écrire à ce partage NFS à partir de l'ordinateur client NFS.

Dans cette section, je vais vous montrer comment configurer les utilisateurs et groupes nécessaires sur le serveur NFS et les ordinateurs clients pour pouvoir écrire sur les partages NFS.

Sur le serveur NFS, créez un nouveau groupe NFS-Users et définir le GID (ID de groupe) du NFS-Users se regrouper 2000 comme suit:

$ sudo groupAdd - Users NFS de 2000

Sur les ordinateurs clients NFS, créez un nouveau groupe NFS-Users et définir le GID (ID de groupe) du NFS-Users se regrouper 2000 aussi.

$ sudo groupAdd - Users NFS de 2000

Sur le serveur NFS, modifiez le groupe du / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) répertoires à NFS-Users comme suit:

$ sudo chgrp -rfv nfs-users / pool1

Autoriser les autorisations de lecture et d'écriture du groupe pour le / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) répertoires comme suit:

$ sudo chmod -rfv 0775 / pool1

Le groupe du / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) Les répertoires doivent être modifiés en NFS-Users et les autorisations de lecture / écriture de groupe doivent également être définies.

$ ls -lhd / pool1
$ ls -lhd / pool1 / fs1

Pour que les modifications prennent effet, redémarrez le serveur NFS comme suit:

$ sudo redémarrer

Maintenant, vous devez créer les comptes d'utilisateurs nécessaires sur vos ordinateurs clients NFS pour pouvoir écrire sur les partages NFS.

Créer un nouvel utilisateur Alex (disons) avec l'UID 5001 (afin qu'ils n'interfèrent pas avec les utilisateurs déjà disponibles dans le serveur NFS) et définissent le groupe principal de l'utilisateur pour NFS-Users comme suit:

$ sudo useradd -m -s / bin / bash -u 5001 -g nfs-users alex

Un nouvel utilisateur Alex avec l'UID 5001 et groupe primaire NFS-Users (GID 2000) doit être créé sur l'ordinateur client NFS.

$ id Alex

Maintenant, redémarrez l'ordinateur client NFS pour que les modifications prennent effet.

$ sudo redémarrer

Une fois que l'ordinateur du client NFS est en train de botter, le NFS partage / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) doit être monté.

$ df -h -t nfs4

Les actions NFS / piscine1 (Piscine ZFS piscine 1) et / pool1 / fs1 (Système de fichiers ZFS FS1) devrait également avoir les autorisations de répertoire correctes.

$ ls -lhd / mnt / pool1
$ ls -lhd / mnt / fs1

Maintenant, connectez-vous en tant qu'utilisateur Alex sur l'ordinateur client NFS comme suit:

$ sudo su - Alex

L'utilisateur Alex devrait être en mesure de créer des fichiers sur le partage NFS / piscine1 (Piscine ZFS piscine 1) et y accéder comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ echo '[Pool1] Hello World'> / mnt / Pool1 / Hello.SMS
$ ls -lh / mnt / pool1
$ cat / mnt / pool1 / bonjour.SMS

L'utilisateur Alex devrait également être en mesure de créer des fichiers sur le partage NFS / pool1 / fs1 (Système de fichiers ZFS FS1) et y accéder comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ echo '[fs1] bonjour world'> / mnt / fs1 / bonjour.SMS
$ ls -lh / mnt / fs1
$ cat / mnt / fs1 / bonjour.SMS

Sur le serveur NFS, l'UID (ID utilisateur) des fichiers que l'utilisateur Alex créé à partir de l'ordinateur client NFS doit être 5001 Et le groupe devrait être NFS-Users Comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ ls -lh / pool1
$ ls -lh / pool1 / fs1

Si vous souhaitez résoudre les UID en noms d'utilisateur sur votre serveur NFS, vous devez créer le même utilisateur avec le même UID (que vous l'avez créé sur l'ordinateur client NFS) sur le serveur NFS.

Pour un petit nombre d'utilisateurs, vous pouvez exécuter la même chose userAdd Commande sur le serveur NFS et les ordinateurs clients pour résoudre ce problème. Si vous devez gérer un grand nombre d'utilisateurs, alors ce sera beaucoup de travail pour le faire manuellement. Au lieu de cela, vous devez utiliser NIS (Network Information Server) ou LDAP (Protocole d'accès au répertoire léger) pour synchroniser automatiquement les utilisateurs entre votre serveur NFS et les ordinateurs clients NFS.

Pour obtenir de l'aide sur la configuration de NIS sur votre serveur NFS et vos ordinateurs clients, consultez les articles suivants:

  • Installation du serveur NIS sur Ubuntu 18.04 LTS
  • Comment installer et configurer le serveur NIS sur Debian 10

Pour obtenir de l'aide sur la configuration de LDAP sur votre serveur NFS et vos ordinateurs clients, consultez les articles suivants:

  • Comment configurer le client LDAP dans Debian 10

Pools et systèmes de fichiers ZFS sans partage

Si vous voulez arrêter de partager la piscine ZFS piscine 1 vous devrez définir le sharenfs propriété de la piscine ZFS piscine 1 pour désactivé comme suit:

$ sudo ZFS Set Sharenfs = Off Pool1

Le partage NFS doit être désactivé pour le pool ZFS piscine 1 Comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo zfs obtient le pool Sharenfs1

De la même manière, vous pouvez arrêter de partager le système de fichiers ZFS FS1 en définissant le sharenfs propriété du système de fichiers ZFS FS1 pour désactivé comme suit:

$ sudo ZFS Set Sharenfs = Off Pool1 / FS1

Le partage NFS doit être désactivé pour le système de fichiers ZFS FS1 Comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ sudo zfs obtient les sharenfs pool1 / fs1

Conclusion

Dans cet article, je vous ai montré comment partager les pools et les systèmes de fichiers ZFS et d'y accéder à distance à l'aide du protocole de partage de fichiers NFS. Je vous ai également montré comment monter automatiquement les pools / systèmes de fichiers ZFS que vous avez partagés avec NFS sur les ordinateurs clients NFS à l'heure du démarrage. Je vous ai montré comment gérer les autorisations d'accès aux actions NFS et permettre à l'écriture d'accès aux actions NFS des ordinateurs du client NFS également.

Les références

[1] Ubuntu ManPage: ZFS - Configure des systèmes de fichiers ZFS
[2] Systèmes de fichiers ZFS de partage et de non-partage - Oracle Solaris Administration: Systèmes de fichiers ZFS
[3] Synopsis - Pages de l'homme Section 1M: Commandes d'administration système
[4] NFSSEC MANPAGE SECTION 5 - Documentation Oracle Solaris
[5] Centos - NFS par défaut à 777 - défaut de serveur
[6] Chapitre 4. L'exportation de NFS partage Red Hat Enterprise Linux 8 | Portail client Red Hat