I. Introduction▲
TrueNAS est une solution professionnelle et réputée permettant de transformer une machine quelconque en NAS. En effet, TrueNAS (anciennement FreeNAS) est un système d’exploitation disposant d’une interface de configuration Web pour paramétrer les différents services typiques d’un NAS. Aussi, TrueNAS utilise le système de fichiers ZFS disposant des fonctionnalités telles que le Copy On Write (COW), les instantanés et de mesures pour éviter les pertes de données.
TrueNAS est donc un système d’exploitation intéressant pour un NAS. Grâce à la présence d’un port HDMI, il est possible d’installer TrueNAS sur les NAS de la marque TerraMaster.
I-A. Configuration▲
Pour cet article, le NAS F4-424-Max de TerraMaster (un NAS quatre baies) est configuré avec quatre disques durs Seagate Exos X16 de 16 To et le SSD EXCERIA PLUS G3 de Kioxia disposant de 2 To de stockage. Quant au système utilisé dans le cadre de cet article, c’est la version SCALE 24.10.2 (noyau Linux en version 6.6.44) de TrueNAS.
Trois versions de TrueNAS sont disponibles :
- TrueNAS CORE, reposant sur le système d’exploitation FreeBSD. Cette version n’est pas en mesure d’exécuter des containers ;
- TrueNAS SCALE, reposant sur le système d’exploitation Linux Debian ;
- TrueNAS Enterprise : une solution, payante, pour entreprise, reposant soit sur FreeBSD, soit sur Linux.
Depuis la version 25.04, la version SCALE devient TrueNAS Community Edition et la version CORE devient TrueNAS Legacy. Seule la version TrueNAS Community Edition est mise en avant.
II. Installation▲
Le lancement de l’installation de TrueNAS est similaire au lancement d’une installation de distribution Linux : le site officiel propose une image ISO à copier sur une clé USB. Pour préparer la clé USB, il est, par exemple, possible d’utiliser balenaEtcher ou Rufus.
Après le lancement du système, une interface basique s’affiche, proposant de démarrer le processus d’installation, un shell, ou bien de redémarrer ou arrêter la machine.
Le processus d’installation se réalise en quelques étapes. L’écran suivant demande sur quel périphérique de stockage installer le système, sachant qu’il est possible d’en sélectionner plusieurs. Par contre, les périphériques sélectionnés ne pourront pas être utilisés comme espace de stockage du NAS.
Un avertissement est affiché sur l’écran suivant, prévenant que les données présentes sur ces disques seront perdues.
Ensuite, la procédure demande par quel procédé le compte administrateur doit être configuré.
Deux choix sont proposés :
- Administrative user (truenas_admin) : le compte administrateur truenas_admin va être configuré immédiatement. Le mot de passe du compte est demandé sur l’écran suivant.
- Configure using Web UI : les informations du compte administrateur sont demandées lors du premier accès à l’interface Web.
Finalement, la procédure demande s’il est nécessaire d’installer un chargeur de démarrage EFI ou plutôt un chargeur de démarrage compatible avec les vieilles machines.
L’installation démarre après validation de cet écran.
Une fois l’installation terminée, le système peut être redémarré.
Lorsque TrueNAS SCALE démarre, le système affiche un menu (accessible avec la commande : /usr/bin/cli --menu) ainsi que les informations pour se connecter à l'interface Web dans la console :
Mis à part en cas de dépannage, il n’est plus nécessaire d’utiliser un écran ni un clavier avec le NAS (une autre solution serait d’utiliser un commutateur KVM). La configuration du système se fait au travers d’une interface Web, accessible à l’adresse IP indiquée dans la console ou à l’adresse http://truenas.local.
Suivant votre choix pendant l’installation du système, vous pouvez dès à présent vous connecter avec l’identifiant truenas_admin et le mot de passe renseigné. Dans le cas contraire, le serveur Web affichera la page suivante :
III. Utilisation▲
III-A. Introduction à ZFS▲
III-A-1. Aperçu du fonctionnement▲
Avant de se lancer dans la configuration du système, il est nécessaire de comprendre les particularités propres à ZFS. En effet, le système de fichiers ZFS est conçu avec l’objectif de garantir l’intégrité des données. Notamment, chaque bloc d’un disque se voit associer une somme de contrôle qui sera vérifiée à la lecture du bloc. Lorsque les données sont lues, si la somme de contrôle ne correspond pas, ZFS corrigera l’erreur avec les informations disponibles sur les autres disques associés dans le même espace de stockage. Régulièrement (généralement, une fois par mois), l’intégralité des disques est lue afin de valider l’intégrité des données : cette opération s’appelle « scrub ». Mis à part cette opération, un système de fichiers ZFS ne nécessite pas de vérification, il est toujours consistant.
Les écritures sont effectuées au travers de transactions. ZFS copie les données avant de modifier la copie (Copy On Write). Une fois l’opération réalisée, le système pointe alors sur la nouvelle copie. Le système de fichiers ZFS intègre des mécanismes de duplication des données. Il n’est donc pas nécessaire d’avoir un contrôleur RAID matériel, dans le cas de l’utilisation d’une politique de stockage de données redondant (c’est même contre-productif). Aussi, le comportement transactionnel permet d’éviter les problèmes d’incohérence lors d’une panne subite de l’alimentation (perte de données appelée « write-hole ». Cela est partiellement mitigé dans les politiques de RAID classique grâce à la journalisation).
Aussi, grâce au Copy On Write, la création d’instantanés a un impact faible sur les performances et initialement nul sur l’espace disque. Seuls les changements effectués après la création de l’instantané sont stockés.
Le système de fichiers supporte la compression à la volée des données. L’opération est totalement transparente pour les utilisateurs et est effectuée uniquement si le bloc écrit peut bénéficier d’une telle compression. L’algorithme généralement utilisé est LZ4.
III-A-2. Lexique▲
ZFS apporte son propre lexique :
- virtual device (vdev) : un ou plusieurs périphériques (tel un disque dur) constituant une ressource de stockage pour ZFS. Un vdev est typé suivant l’objectif à atteindre : disques en miroir, disque avec une politique de redondance (RAIDZ), disque pour la mise en cache, disque de secours… Il est possible de créer des vdev de vdev pour mettre en place des politiques avancées (redondance + miroir).
- pool : un ensemble de vdev. Ainsi un ensemble peut être constitué d’un vdev ayant une politique de redondance pour le stockage des données, d’un vdev de disque de secours à utiliser en cas de panne d’un disque du vdev précédent et d’un vdev pour la mise en cache.
- RAIDZ (RAIDZ1, RAIDZ2 et RAIDZ3) : les politiques de redondance (RAID) proposées par ZFS. Le chiffre indique le nombre de disques pouvant tomber en panne dans le vdev, sans perte de données. Il est conseillé de créer des pools de trois à neuf disques.
- Declustered RAID (dRAID) : une variante de RAIDZ visant à réduire les temps de reconstruction (silvering). Un dRAID mélange les vdev enfants et utilise une taille de bande (stripe) fixe, contrairement à RAIDZ. Ces politiques sont à considérer pour les machines gérant plus de 100 disques.
- dataset : un espace pour organiser les données, similaire à un dossier et stocké dans une pool.
- zvol : un espace de stockage à taille fixe, offrant un accès brut virtuel (blocs), notamment pour utiliser avec iSCSI.
- ZFS Intent Log (ZIL) : un journal synchrone où les opérations d’écriture sont écrites avant qu’elles ne le soient dans la pool. Autrement dit, un cache en écriture.
- ZIL Separate Log (ZIL SLOG) : un journal ZIL déporté sur un périphérique plus rapide que ceux utilisés dans la pool (tel un SSD).
- Adaptive Replacement Cache (ARC) : un cache en lecture tirant son nom de l’algorithme utilisé.
- Level 2 ARC (L2ARC) : un cache en lecture de deuxième niveau, généralement sur un SSD.
- Disque de secours (spare) : un disque inutilisé, qui remplacera un disque en panne.
III-A-3. Politique de stockage▲
L’objectif est d’assurer une protection des données, et ce même en cas de perte de disque. Lors de la configuration du NAS, les disques seront alors regroupés dans un ensemble (vdev) et il est alors nécessaire de choisir une politique définissant comment les données sont stockées sur les différents disques. Avec TrueNAS, les choix possibles sont :
- Répartition en bande (Stripe, équivalent au RAID 0), les données sont découpées et réparties sur les différents disques. Cette politique permet la parallélisation de l’utilisation des disques et offre le maximum de performance. Toutefois, la perte d’un disque entraîne la perte de l’intégralité des données.
- Mise en miroir (Mirror, équivalent au RAID 1), les données sont dupliquées à l’identique sur chaque disque ;
- RAIDZ1, RAIDZ2, RAID3 (équivalent au RAID 5 et RAID 6) : les données stockées sont associées avec des données de parité stockées sur un disque différent de celui où la donnée sera stockée. Cette politique n’est applicable qu’à partir de 3, 4 ou 5 disques et supporte 1, 2 ou 3 pannes de disque.
- dRAID : similaire au RAIDZ mais disposant d’une configuration particulière pour la gestion d’un grand nombre de disques (> 100).
III-B. Interface utilisateur▲
Une fois connecté, l’administrateur est accueilli avec le tableau de bord. Cette page donne un récapitulatif des différentes métriques du système disposées dans différentes tuiles :
Les tuiles peuvent être reconfigurées.
La colonne de gauche constitue le menu principal et permet de naviguer au travers des différentes catégories à administrer. Celui-ci peut être replié.
En haut se trouvent une barre de recherche et quelques boutons permettant de :
- faire un retour aux développeurs ;
- d’ouvrir un aperçu des tâches en cours ;
- d’ouvrir un panneau latéral avec les alertes ;
- d’éteindre la machine.
III-C. Stockage▲
Cette catégorie permet de manipuler les pools configurées sur le NAS. Évidemment, initialement, l’écran est vide et propose un bouton pour créer un nouvel espace. Une fois créé, l’écran donne de nombreuses informations sur le statut de la pool :
La création d’une pool s’effectue au travers des étapes suivantes :
- le nommage et si le chiffrement doit être activé (il est aussi possible d’activer le chiffrement au niveau du jeu de données ;
- l’assignation des disques pour stocker les données (« Data »). À cette étape, il est possible de choisir la politique de redondance ;
- l’assignation d’un ou plusieurs disques pour la journalisation, permettant ainsi d’améliorer les performances des écritures synchrones, optionnel ;
- l’assignation d’un ou plusieurs disques de secours, optionnel ;
- l’assignation d’un ou plusieurs disques pour le cache en lecture (L2ARC), optionnel ;
- l’assignation d’un ou plusieurs disques pour les métadonnées, optionnel ;
- l’assignation d’un ou plusieurs disques pour la déduplication des données, optionnel.
III-C-1. Disques▲
La catégorie « Storage » propose, en haut à droite de l’écran, un bouton « Disks ». Celui-ci permet d’accéder aux informations relatives aux disques installés dans la machine.
En plus de la liste des disques, il sera possible de démarrer les tests des registres S.M.A.R.T., de mettre en place des alertes, de définir un mot de passe matériel ou encore, de déterminer le délai de mise en veille.
III-D. Jeu de données (dataset)▲
Une fois un espace de stockage en place, il est possible de créer des jeux de données (datasets) ou des zvol.
Un jeu de données peut être vu comme un dossier, qui peut être partagé au travers de SMB ou de NFS. C’est une façon d’organiser les données, mais aussi de permettre la mise en place de permissions, de quotas et de paramètres spécifiques à certaines données.
Les zvol étant similaires aux jeux de données, ils sont aussi listés sur cet écran. Lors de la configuration d’un zvol, il sera possible de déterminer des paramètres spécifiques à la configuration bas niveau d’un disque tel que l’algorithme de compression ou la taille des blocs.
III-E. Partage de fichiers▲
La section « Shares » permet de configurer les différents partages accessibles aux clients du NAS et les paramètres de ceux-ci. TrueNAS propose les protocoles SMB, NFS et iSCSI.
III-F. Protection des données▲
La catégorie « Data Protection » permet de mettre en place des tâches de surveillance ou de réplication des données. Sept types de tâches sont proposés :
- TrueCloud Backup, un service de stockage en ligne fourni par iX systems, l’éditeur du système TrueNAS ;
- Scrub : pour faire une lecture des disques afin de corriger les possibles corruptions liées au matériel. Une tâche hebdomadaire est configurée automatiquement après la création de l’espace de stockage et ne s’exécute à nouveau qu'après 35 jours en cas de réussite ;
- la sauvegarde en ligne des fichiers, parmi Amazon S3, Backblaze B2, Box, Dropbox, FTP, Google Cloud Storage, Google Drive, Google Photos, HTTP, Hubic, Mega, Microsoft Azure Blob Storage, OpenStack Swift, pCloud, SFTP, Storj iX, WebDAV et Yandex ;
- rsync : pour configurer la synchronisation des fichiers grâce au logiciel rsync. Les services rsync ou SSH doivent être actifs suivant le mode utilisé ;
- replication : permet de mettre une tâche de réplication, en local ou à distance (pour ce dernier, une configuration SSH fonctionnelle configurée) d’un jeu de données, d’un zvol ou d’une pool ;
- instantanés : permet la mise en place de création d’instantanés périodiquement ;
- S.M.A.R.T. : pour effectuer des procédures d’autodiagnostic des disques durs.
III-G. Réseau▲
La catégorie « Network » permet évidemment de reconfigurer les différents paramètres propres au réseau. Il y a sera possible de :
- configurer les interfaces réseau et d’ajouter des interfaces pont, des VLAN ou de faire de l’agrégation de liens ;
- configurer les différents services de découverte (NetBIOS-NS, mDNS, WS-Discovery) ;
- de bloquer l’accès du NAS à Internet ;
- de configurer IPMI.
III-H. Credentials▲
La catégorie « Credentials » permet de gérer les utilisateurs du système, les groupes, la configuration de l’active directory, les identifiants pour les différentes tâches de sauvegarde (dans le nuage ou grâce à SSH) et les certificats.
Un utilisateur doit être créé sur le NAS pour qu’un client puisse se connecter à un partage de fichiers SMB.
Il est possible de donner l’accès à l’interface d’administration Web ou à des sous-parties de celle-ci à des utilisateurs particuliers. Par défaut, trois types d’accès sont configurés :
- Local administrator : l’accès complet, lié au groupe builtin_administrators ;
- Read-Only administrator, lié au groupe truenas_readoly_administrators, donnant un accès à l’interface Web, en lecture seule ;
- Sharing administrator : lié au groupe truenas_sharing_administrators, donnant uniquement un accès en écriture à la configuration des partages de fichiers. Le reste de la configuration est accessible en lecture.
Il est possible de créer d’autres privilèges grâce au bouton « Privileges » accessible depuis l’écran de configuration des groupes. Une fois un nouveau privilège en place, il pourra être associé à un ou plusieurs groupes.
III-I. Virtualisation▲
Uniquement disponible dans la version Linux (SCALE) de TrueNAS.
La catégorie « Virtualisation » permet de mettre en place des machines virtuelles sur le NAS, au travers de Qemu/libvirt. À partir de la version 25.04 de TrueNAS. KVM est remplacé par Incus.
III-J. Applications▲
La catégorie « Apps » permet d’ajouter des applications sur le NAS. Celles-ci sont exécutées dans des containers. Depuis la version 24.10, les containers sont gérés par Docker au travers de Docker Compose.
III-K. Reporting▲
La catégorie « Reporting » permet d’accéder à l’historique de la consommation des ressources de la machine (CPU, mémoire, disques, réseau, système, ZFS et UPS).
En plus de la section « Reporting », TrueNAS fournit par défaut l’application Netdata. Celle-ci offre une solution plus complète pour le monitoring des ressources en permettant la création de ses propres tableaux de bord, la mise en place des alarmes et le support des greffons.
III-L. Système▲
La catégorie « Système » regroupe tous les paramètres globaux, dont :
- les paramètres de l’interface utilisateur ;
- la configuration du NTP ;
- la configuration des locales ;
- la configuration des jobs cron ;
- la configuration des scripts au démarrage et à l’arrêt de la machine ;
- la configuration des variables du noyau grâce à sysctl ;
- l’activation ou la désactivation des services de la machine ;
- l’accès à un shell ;
- la configuration des alertes, notamment, pour être notifié d’une panne matérielle par courriel. L’alerte peut être envoyée au travers des services suivants : courriel, AWS, InfluxDB, MatterMost, OpsGenie, PagerDuty, Slack et VictorOps.
Il est possible de sauvegarder et de restaurer une configuration à partir d’un fichier.
IV. Performances▲
Pour le test des performances, quatre disques durs Seagate Exos X16 d’une capacité de 16 To sont utilisés. Le NAS dispose de 8 Go de mémoire vive et le système d’exploitation est installé sur un disque NVMe dédié. Dans les tests suivants, quatre configurations de TrueNAS sont testées :
- la politique de stockage RAIDZ1, avec la synchronisation activée sur le jeu de données ;
- la politique de stockage RAIDZ1, avec la synchronisation désactivée sur le jeu de données ;
- la politique de stockage Stripe, avec la synchronisation activée sur le jeu de données ;
- la politique de stockage Stripe, avec la synchronisation désactivée sur le jeu de données.
Pour rappel, la politique de stockage RAIDZ1 est standard dans une configuration NAS et permet d’encaisser la perte d’un disque. La politique Stripe, va découper les données sur les différents disques dans le but d’utiliser les disques en parallèle. C’est donc la politique permettant d’obtenir le maximum de performances, mais elle n’offre absolument aucune protection face aux pannes.
La synchronisation correspond au fait d’attendre la fin d’une écriture avant de continuer.
IV-A. Disques▲
Le test de performance brute des disques et de la politique de stockage reposent sur fio. Le cas optimal étant la lecture ou l’écriture d’un fichier continu, depuis un seul client. Ainsi, il est possible d’obtenir une idée sur les performances maximales pouvant être obtenues dans une telle configuration. Ci-dessous, le modèle de commande utilisé pour les tests. Suivant le test, la taille de bloc (bs), le nombre de threads ou la taille de la file d’attente changent.
fio --name=big_file_continuous_write \
--ioengine=posixaio \
--rw=write \
--bs=1M \
--numjobs=${THREADS} \
--iodepth=${DEPTH} \
--size=16G \
--end_fsync=1 \
--runtime=45 \
--time_based
Le tableau ci-dessous donne un récapitulatif des performances pouvant être obtenues :
Test |
Lecture |
Écriture |
||||||
RAID1 avec synchronisation |
RAIDZ1 |
Stripe avec synchronisation |
Stripe |
RAID1 avec synchronisation |
RAIDZ1 |
Stripe avec synchronisation |
Stripe |
|
Accès en continu |
633 Mo/s |
618 Mo/s |
911 Mo/s |
905 Mo/s |
472 Mo/s |
479 Mo/s |
677 Mo/s |
768 Mo/s |
Accès aléatoire |
83,9 Mo/s |
84,3 Mo/s |
89,8 Mo/s |
100,0 Mo/s |
473 Mo/s |
464 Mo/s |
693 Mo/s |
740 Mo/s |
Accès aléatoire |
189 Mo/s |
180 Mo/s |
285 Mo/s |
275 Mo/s |
466 Mo/s |
473 Mo/s |
592 Mo/s |
620 Mos/s |
Accès aléatoire |
480 Ko/s |
452 Ko/s |
610 Ko/s |
693 Ko/s |
41,9 Mo/s |
38,8 Mo/s |
73,1 Mo/s |
73,1 Mo/s |
Accès aléatoire |
1293 Ko/s |
1296 Ko/s |
2919 Ko/s |
2860 Ko/s |
21,2 Mo/s |
22,9 Mo/s |
38,3 Mo/s |
42,6 Mo/s |
IV-B. NAS▲
Même si le test précédent donne une idée des performances, il est rarement possible d’obtenir de tels résultats dans le cas d’usage final : la copie de fichiers depuis ou vers un autre PC. En effet, dans le cas d’usage d’un NAS, le client utilisé et le réseau auront un impact.
Dans ce test, deux scénarios sont effectués : le transfert d’un gros fichier rempli de données aléatoires (50 Go) et les sources du noyau Linux en version 5.8.1. Pour ce second cas, cela représente 929,7 Mo répartis sur 73 767 fichiers (soit des fichiers de 12 ko en moyenne). Les tests sont effectués avec les protocoles SMB, NFS et SSH avec les options par défaut. De plus, deux configurations de Maximum Transmission Unit (MTU, la taille des paquets) pour le réseau sont testées : 1500 (valeur par défaut) et 9000 (valeur maximale pour l’adaptateur réseau du NAS).Le NAS et le PC de test sont connectés en Ethernet 10 Gbit/s.
IV-C. Écriture▲
IV-D. Lecture▲
IV-E. Observations▲
La synchronisation du jeu de données ZFS a un impact supérieur sur les performances en écriture avec le protocole NFS en comparaison des autres protocoles. Ce comportement est reproductible avec les différentes options de NFS (taille des tampons de travail, option de synchronisation…). Toutefois, la synchronisation du jeu de données peut être configurée pour chaque jeu de données indépendamment.
IV-E-1. Comparaison avec TerraMaster OS▲
Comme vu dans le dossier sur le NAS F4-424-Max, les débits pour les petits fichiers sont meilleurs avec le système de TerraMaster (et le système de fichiers BTRFS). Pour les gros fichiers, les débits obtenus avec TrueNAS sont similaires à ceux obtenus avec le système de TerraMaster.
V. Remerciements▲
![]() ![]() |
Developpez.com tient à remercier TerraMaster de nous avoir fourni le F4-424 Max, Seagate pour les disques durs mécaniques et KIOXIA pour le disque NVMe, utilisé comme disque système. |
Merci à Franck Talbart et Christophe pour leurs suggestions. Un grand merci également à f-leb pour sa relecture orthographique.