ZFS

Serveur NFS soutenu par OpenZFS Partie 1 - Création d'un serveur

Serveur NFS soutenu par OpenZFS Partie 1 - Création d'un serveur
Si vous connaissez OpenZFS, vous savez tout sur son interface riche en fonctionnalités, son architecture flexible, ses sommes de contrôle fiables et ses mécanismes COW. Peut-être que vous le voulez aussi sur votre bureau, mais vous ne voulez pas reformater vos disques et partitions existants. Peut-être que vous utilisez Windows 10, qui ne prend pas encore en charge OpenZFS. Eh bien, dans cet article de blog, je vais expliquer comment vous pouvez créer un système de fichiers réseau, ou NFS, s'exécutant sur un serveur séparé. Ce périphérique NFS peut ensuite être monté sur votre poste de travail de bureau. De cette façon, vous pouvez bénéficier de la fiabilité et de la robustesse de ZFS avec la convivialité de votre système d'exploitation de bureau préféré, puisque NFS est disponible sur toutes les plateformes.

Je détaillerai la création du point de montage NFS sur un client Windows 10 dans la partie 2 de cette série. Pour l'instant, concentrons-nous sur un serveur Ubuntu offrant un stockage NFS et un client Ubuntu essayant de s'y connecter.

La mise en place

Mon serveur NFS va être basé sur Ubuntu 18.04 LTS. Vous pouvez utiliser votre distribution Linux préférée ou FreeBSD, ou tout autre système d'exploitation prenant en charge OpenZFS. Ma raison d'utiliser Ubuntu 18.04 est qu'il est assez populaire et réduirait considérablement la barrière d'entrée.

Le NFS est censé être disponible uniquement sur mon réseau local qui a le masque de sous-réseau de 255.255.255.0 et 192.168.0.1 comme passerelle par défaut. En clair, cela signifie que tous les appareils connectés à mon réseau domestique (WiFi et Ethernet, et autres) auront des adresses IP allant de 192.168.0.2 à 192.168.0.254.

Le serveur NFS sera configuré pour permettre uniquement aux appareils avec uniquement l'adresse IP susmentionnée d'avoir accès au serveur NFS. Cela garantirait que seuls les appareils connectés à mon réseau local accèdent à mes fichiers et que le monde extérieur ne puisse pas y accéder. Si vous avez une configuration « Wifi ouvert » ou si la sécurité du point de terminaison de votre routeur est douteuse, cela ne garantira aucune sécurité.

Je ne recommanderais pas d'exécuter NFS sur Internet public sans mesure de sécurité supplémentaire.

Enfin, les commandes exécutées sur le serveur NFS ont l'invite, server $ et les commandes à exécuter côté client ont l'invite client $

Création d'un pool et d'un jeu de données OpenZFS

1. Création de zpool

Si vous avez déjà un zpool opérationnel, ignorez cette étape. Sur mon serveur NFS, qui exécute Ubuntu 18.04 Serveur LTS, j'installe d'abord OpenZFS.

serveur $ sudo apt installer zfsutils-linux

Ensuite, nous allons lister tous les périphériques de blocs disponibles, pour voir les nouveaux disques (et partitions) en attente de formatage avec zfs.

$ lsblk
NOM   MAJ:MIN RM  TAILLE RO TYPE POINT DE MONTAGE
boucle0    7:0    0 89.5 M 1 boucle/snap/core/6130
boucle1    7:1    0 86.9 M 1 boucle/snap/core/4917
boucle2    7:2    0 91.1M 1 boucle/snap/core/6259
sda      8:0    0   50G  0 disque
├─sda1   8:1    0    1M  0 partie
└─sda2   8:2    0   50G  0 partie /
sdb      8:16   0  931G  0 disque
sdc      8:32   0  931G  0 disque
sr0     11:0    1 1024M  0 rom

Un exemple typique est montré ci-dessus, mais votre convention de nommage peut être très différente. Vous devrez utiliser votre propre jugement et être très prudent à ce sujet. Vous ne voulez pas formater accidentellement votre disque OS. Par exemple, la partition sda1 a clairement le système de fichiers racine comme point de montage, il n'est donc pas sage d'y toucher. Si vous utilisez de nouveaux disques, il est probable qu'ils n'auront pas de point de montage ou de partitionnement.

Une fois que vous connaissez le nom de vos périphériques, nous utiliserons la commande zpool create pour formater quelques-uns de ces périphériques de bloc (appelés sdb et sdc) dans un zpool avec un seul vdev composé de deux disques en miroir.

serveur $ sudo zpool créer réservoir miroir sdb sdc
serveur $ sudo zpool status tank
réservoir d'état zpool
piscine : réservoir
état : EN LIGNE
analyse : aucune demandée
configuration :
NOM        ÉTAT     LIRE ÉCRIRE CKSUM
réservoir        EN LIGNE       0     0     0
mirror-0  EN LIGNE       0     0     0
sdb     EN LIGNE       0     0     0
sdc     EN LIGNE       0     0     0
erreurs : aucune erreur de données connue

À l'avenir, vous pouvez ajouter des disques par groupes de deux (appelés vdev) pour augmenter la taille de ce zpool, les nouveaux disques apparaîtront sous les noms mirror-1, mirror-2, etc. Vous n'êtes pas obligé de créer votre zpool comme je l'ai fait, vous pouvez utiliser la mise en miroir avec plus de disques, vous pouvez utiliser le striping sans redondance mais de meilleures performances, ou vous pouvez utiliser RAIDZ. Vous pouvez en savoir plus ici.

En fin de compte, ce qui compte, c'est que nous ayons créé un zpool nommé tank. Sur lequel le NFS partagé vivra. Créons un jeu de données qui sera partagé. Assurez-vous d'abord que la piscine, nommée 'réservoir', est montée. Le point de montage par défaut est '/tank' .

serveur $ sudo zfs mount tank
server $ sudo zfs create tank/nfsshare #créer un nouveau jeu de données au-dessus du pool

Définition des autorisations

Lors du partage d'un répertoire NFS, le superutilisateur sur le système client n'a accès à rien sur le partage. Alors que le superutilisateur côté client est capable de faire n'importe quoi sur la machine cliente, le montage NFS ne fait techniquement pas partie de la machine cliente. Ainsi, autoriser les opérations au nom du superutilisateur côté client mappé en tant que superutilisateur côté serveur peut entraîner des problèmes de sécurité. Par défaut, NFS mappe les actions du superutilisateur côté client sur personne : utilisateur et groupe d'utilisateurs. Si vous avez l'intention d'accéder aux fichiers montés en tant que root, alors l'ensemble de données sur notre serveur NFS devrait également avoir les mêmes autorisations,

serveur $ sudo chown personne:nogroup /tank/nfsshare

Le serveur NFS exécutera toute action de la racine côté client en tant qu'utilisateur personne, donc l'autorisation ci-dessus permettra aux opérations de se dérouler.

Si vous utilisez un nom d'utilisateur différent (normal), il est souvent pratique d'avoir un utilisateur avec le même nom d'utilisateur exact des deux côtés.

Création d'un partage NFS

Une fois que vous avez créé Zpool, vous devez installer le package du serveur nfs à partir de votre gestionnaire de packages :

serveur $ sudo apt installer nfs-kernel-server

Traditionnellement, le serveur NFS utilise le fichier /etc/exports pour obtenir la liste des clients approuvés et les fichiers auxquels ils auront accès. Cependant, nous utiliserons la fonctionnalité intégrée de ZFS pour obtenir le même résultat.

Utilisez simplement la commande :

serveur $ sudo zfs set sharenfs = "on" /tank/nfsshare

Plus tôt, j'ai fait allusion au fait de ne donner l'accès qu'à certaines IP. Vous pouvez le faire comme suit :

serveur $ sudo zfs set sharenfs="[email protected]/24" tank/nfsshare

Le « rw » signifie les autorisations de lecture-écriture, suivi de la plage d'adresses IP. Assurez-vous que les numéros de port 111 et 2049 sont ouverts sur votre pare-feu. Si vous utilisez ufw, vous pouvez le vérifier en exécutant :

état du serveur $ ufw

Notez l'adresse IP de votre serveur sur le réseau local, en utilisant la commande ifconfig ou ip addr. Appelons-le serveur.ip

Montage côté client

Une fois le partage créé, vous pouvez le monter sur votre machine cliente, en exécutant la commande :

client $ mount -t serveur nfs.ip:/tank/nfsshare /mnt

Cela montera le partage NFS sur le dossier /mnt mais vous auriez tout aussi bien pu choisir n'importe quel autre point de montage de votre choix.

Conclusion

Le partage de fichiers est probablement l'aspect le plus important de l'administration du système. Cela améliore votre compréhension de la pile de stockage, de la mise en réseau, des autorisations et privilèges des utilisateurs. Vous vous rendrez rapidement compte de l'importance du principe du moindre privilège - c'est-à-dire de ne donner à un utilisateur que l'accès le plus restreint possible à son travail.

Vous découvrirez également l'interopérabilité entre les différents systèmes d'exploitation. Les utilisateurs Windows peuvent accéder aux fichiers NFS, de même que les utilisateurs Mac et BSD. Vous ne pouvez pas vous limiter à un seul système d'exploitation lorsque vous traitez avec un réseau de machines ayant toutes leurs propres conventions et langues vernaculaires. Alors allez-y et expérimentez avec votre partage NFS. j'espère que tu as appris quelque chose.

Ports Open Source des moteurs de jeux commerciaux
Les récréations de moteur de jeu gratuites, open source et multiplateformes peuvent être utilisées pour jouer à d'anciens ainsi qu'à certains des titr...
Meilleurs jeux de ligne de commande pour Linux
La ligne de commande n'est pas seulement votre plus grand allié lorsque vous utilisez Linux, elle peut également être une source de divertissement car...
Meilleures applications de mappage de manette de jeu pour Linux
Si vous aimez jouer à des jeux sur Linux avec une manette de jeu au lieu d'un système de saisie clavier et souris typique, il existe des applications ...