FreeNAS

Cette solution est idéale pour un NAS maison à celui qui souhaite exploiter des technologies avancées. Cependant, je conseillerai OpenMediaVault pour les débutants dans le monde libre des NAS.

iXsystems propose des serveurs certifiés FreeNAS. Cela va du NAS pour une TPE, à un SAN pour une baie de stockage dans un datacenter.

Avant de se lancer corps et âme perdu dans la solution de stockage FreeNAS, il faut bien comprendre 2 choses : 

  • La distribution FreeBSD
  • Le file system ZFS

Avoir une configuration solide :

  • CPU 64-bit : avec AES-NI si vous souhaitez chiffrer vos données
  • 8 Go de RAM : minimum + ECC fortement recommandé
  • 8 Go ou plus pour le média de boot : une ou deux clés USB bons marchés font parfaitement l’affaire
  • 1 ou des cartes réseaux Intel : les drivers Realtek sont moins bien implémentés dans FreeBSD

Et réfléchir à une solution de sauvegarde distante. FreeNAS ne permet pas de monter un disque dur externe en écriture. C’est une ligne de conduite choisie par la communauté de FreeNAS. Elle est critiquable mais il faut s’y adapter.

FreeBSD

La distribution BSD (Berkeley Software Distribution) n’est pas contrôlé par son cousin GNU/Linux et son acolyte Linus Torvald mais par un noyau de développeur (Core Team). Il faut voir BSD comme un système d’exploitation et non comme un noyau.

On ne dit pas package mais port pour désigner l’installation d’un logiciel ou d’un service. La gestion des ports se fait par « pkg » mais il est inutile de s’y pencher pour FreeNAS car le système est verrouillé pour installer des nouveaux ports. Par ailleurs, une modification du système ou de la configuration via le shell sera annulée au prochain redémarrage du système. Un message s’affiche pour nous le rappeler à chaque connexion au shell :

Warning: settings changed through the CLI are not written to
the configuration database and will be reset on reboot.

Et au fait pourquoi le système d’exploitation sur 1 ou 2 clés USB bons marché ? Il y a très peu d’opération d’écriture sur le média, il est inutile d’avoir un boot rapide et ça économise des ports pour des disques de stockage.

D’autant plus, la configuration de FreeNAS se sauvegarde facilement. Il est tout à fait envisageable de réinstaller complètement le système d’exploitation, de charger la configuration de FreeNAS et d’importer le pool de stockage.

Dernière chose à savoir, il est très aisé de réinitialiser le mot de passe root. Il suffit de brancher un écran, un clavier sur la machine et d’appuyer sur la touche 7. Sécurisez un minimum l’accès physique à votre serveur.

ZFS

Quelle beauté ce file system ! Les limites sont astronomiques par rapport à des file system plus connus.

D’un point de vue plus pratique que théorique, les limitations de ZFS sont tellement grandes qu’elles ne pourront jamais être atteintes. En effet, selon Bonwick, « Vous ne pourriez pas remplir un espace de données 128 bits sans faire bouillir les océans. » […] Par exemple, si un utilisateur créait 1 000 fichiers par seconde, il faudrait 90 siècles pour arriver à la limite de fichiers.

source : wikipédia

So bad ass 🙂 Bref, rentrons dans les détails techniques. Ce file system et ses outils sont complexes à comprendre. Je vais faire au plus simple évidemment.

Dans un premier temps, ZFS a une faim I-N-S-A-T-I-A-B-L-E de votre mémoire vive. Comprenez qu’il utilisera toute la RAM non utilisé pour son cache. 

Ce cache est rempli au fur et à mesure qu’un accès disque est fait sur un fichier. Le dit fichier sera mis en cache pour un accès futur plus rapide. 
Cette fonctionnalité s’appelle ARC (Adaptative Replacement Cache).

Ce qui fait sa force fait sa faiblesse. Plus il a de RAM, plus il est content mais si une RAM est défaillante les données corrompues seront écrites sur le disque. C’est pourquoi il est fortement recommandé d’utilisé de la RAM ECC.

Des fonctionnalités complémentaires s’ajoute : ZIL et L2ARC.

ZIL (ZFS Intent Log) a pour rôle d’assurer l’intégrité des données lors de son écriture sur le disque. Il regroupe les données à écrire puis les envoi d’un bloc sur le disque. Ce fonctionnement s’appelle le « copy-on-write ». Cela permet de se prévenir d’une corruption de donnée si, par exemple, une coupure électrique survenait. SLOG est le nom du périphérique dédié pour le cache de type écriture (ZIL).

L2ARC (Layer 2 ARC) permet d’étendre les capacités du cache de type lecture (ARC).

Pour utiliser au mieux ces 2 fonctionnalités, il faut privilégier la rapidité à la capacité par rapport à vos disque de stockage :

  • Disques mécaniques + 1 SSD => L2ARC sur tout le SSD
  • Disques mécaniques + 2 SSD => ZIL redondé sur les 2 SSD partitionnés et le reste pour L2ARC non redondé
  • Disques mécaniques + 3 SSD => ZIL sur 2 SSD redondés et L2ARC sur le dernier SSD
  • Que des disques mécaniques ou que des SSD => ZIL et/ou L2ARC inutile

Comprendre que ZIL et L2ARC doivent avoir des vitesses de lecture/écriture supérieur aux disques de stockage.

Quand ZIL est utilisé, il devient un SPOF de votre NAS. En effet, il n’est plus possible d’écrire sur les disques s’il est défaillant. C’est pourquoi il est systématiquement redondé.

Autre outil, à l’instar de ‘fsck’ mais en mieux, ‘scrub’ permet de contrôler l’intégrité des données à chaud. Il vérifie les données, les metadatas et est même capable de recalculer un bloc défaillant d’un RAID.

Après les fonctionnalités, les types de périphérique vu par ZFS :

  • vdev : disque virtuel regroupant 1 ou des disques physiques
  • pool de stockage : espace de stockage contenant 1 ou des vdev
  • datasets : rattaché au pool, il peut être comparé à un répertoire

La gestion des RAID se fait à la création des vdev. On retrouve nos fameux RAID0 (striping) et RAID1 (mirroring). Concernant RAID5 et RAID6, leurs noms changent en RAIDZ et RAIDZ-2 ainsi que leurs fonctionnements.

Après la configuration des disques, on passe à la création des datasets. Sur ces datasets on peut affiner des paramètres : quota, compression, taille des secteurs logiques, snapshot, droits,…

Voici ma configuration actuelle :

Il est évidemment possible de pousser très loin les possibilités en fonction de ses moyens : nombre de disques, budget, évolution,…

Ce qui est possible et impossible à faire en vrac :

  • Retirer un vdev d’un pool => NO
  • Ajouter un vdev à un pool => OK
  • Ajouter un vdev d’un type différent à un pool => NO
  • Retirer un disque d’un vdev => NO
  • Ajouter un disque à un vdev => NO
  • Ajouter un autre pool => OK
  • Ajouter un disque de spare à un pool => OK
  • Ajouter un disque de stripe à un pool => NO

Un RAIDZ-2 reste la solution avec le meilleur ratio capacité/performance/tolérance

Attention ! En choisissant un RAIDZ-1, avoir 1 disque de tolérance n’exclut pas la panne total. En effet, la reconstruction d’un RAID stresse beaucoup les disques et augmente la probabilité d’une panne surtout si les disques viennent du même lot.

Voilà pour un petit tour technique du propriétaire. La suite : le détail et mes astuces pour chaque section de FreeNAS.

Clément Kerbastard

Fondateur du site Opti-IT, administrateur système et réseau en alternance avec l'ENI et FUTUROSOFT, ancien joueur professionnel et enseignant de golf, ma reconversion dans l'informatique me donne toujours l'envie de partager mes connaissances.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.