Aller au contenu
Perfect Homelab [E02] : L'envers du décors
  1. Posts/

Perfect Homelab [E02] : L'envers du décors

·11 mins·
Fabien ALLAMANCHE
Auteur
Fabien ALLAMANCHE
Géomaticien @ Vienne Condrieu Agglomération
Sommaire
Perfect Homelab - Cet article fait partie d'une série.
Partie 2: Cet article

Perfect Homelab

L’envers du décors
#

Si vous avez lu l’épisode 01 de cette série d’article, mon objectif est de créer un NAS pour héberger mes données multimédia (photos, vidéos, musique) et les services qui permettront de profiter de ces données.

L’objectif de ce serveur de stockage/NAS est d’être évolutif, non fermé et basé sur des technologies 100 % open-source.

En me documentant sur mon projet et comment j’allais arriver à mes fins et construire ce serveur++, je suis tombé sur beaucoup de sujets, tutos, etc… Et puis, un beau jour, j’ai ouvert un lien qui parlait du Perfect Media Server !

Et là, bingo ! C’était exactement la documentation qu’il me fallait ! Vous aurez donc compris que mon projet est fortement inspiré de ce qu’a réalisé Alex Kretzschmar (aka @IronicBadger).

Toutes les technologies utilisées dans le processus de création de son NAS me conviennent et c’est comme ça que je me suis retrouvé à écrire ma documentation pour ma propre machine.

Un plan ?
#

À force de lire les nombreux tutos qui documentent le sujet et de voir les innombrables vidéos sous Youtube de mise en place d'Homelab avec des partis pris technologiques forts, j’en suis arrivé à ne plus savoir comment allait être structurer le NAS que je voulais mette en place.

J’avais de multiples questions en tête :

  • Quel système d’exploitation installé ?
  • Qu’est-ce qui va être virtualisé ou non ?
  • Quelles sont les briques logicielles qui vont fonctionner en Baremetal (directement sur l’hôte et donc sur Proxmox et donc sur Debian Bookworm) ?
  • Quelles sont les briques logicielles qui vont être propulsées via Docker ou installées directement sur une VM ou un conteneur LXC ?
  • D’ailleurs, comment installe-t-on Docker ? Sur une VM, un container LXC ?

Ce sont toutes des questions légitimes sur lesquelles je me suis penché assez longtemps pour trouver la meilleure granularité du système et suivant mes compétences :

  • Pour la mise à jour système,
  • Pour l’upgrade matériel,
  • Pour l’évolutivité des services proposés.

Il existes des solutions tout-en-un sur le marché des logiciels libres ou non tels qu’OpenMediaVault (OMV), TrueNas Scale, Unraid qui s’intègrent tous pour créer ce genre de serveur.

Bien qu’Unraid et OMV puissent répondre à mes besoins de stockage en vrac, ils s’intègrent également avec certains compromis. À défaut, TrueNas Scale s’oriente surtout sur la gestion d’un pool de disques durs en ZFS, et on sait tous que ZFS n’est pas très souple au niveau de l’évolutivité des disques.

L’un des principaux moteurs de la création de ce NAS est la facilité de gestion de l’espace disque disponible. Je voulais être en mesure d’étendre ce dernier assez facilement sans mettre la main à la poche en achetant mes disques durs directement au montage du serveur et pouvoir étaler ces achats au fur et à mesure de la montée en charge de celui-ci.

Je voulais, également, pouvoir être en mesure d’ajouter un seul disque et de l’ajouter à la capacité du pool de stockage tout en conservant une certaine redondance avec un minimum de configuration et de temps d’arrêt.

Mes choix
#

Hyperviseur
#

Après beaucoup d’hésitations et après avoir testé Proxmox Virtual Environment sur une machine virtuelle sous Virtual Box, j’ai fait le choix d’installer Proxmox Environnement virtuel (Proxmox pour les intimes) en Baremetal sur la machine.

À proprement parlé, Proxmox n’est pas un système d’exploitation. C’est une plate-forme de virtualisation open-source basée sur KVM (Kernel-based Virtual Machine) et des outils de gestion de conteneurs LXC (Linux Containers).

Proxmox permet de créer et de gérer des machines virtuelles et des conteneurs LXC sur un serveur hôte sur lequel est installé un système d’exploitation.

Distribution
#

Par défaut, c’est une distribution Linux Debian. Notez que j’ai installé Proxmox via l’image ISO que l’on retrouve sur le site officiel de Proxmox. On peut également l’installer à partir d’une distribution Linux existante de Debian.

Proxmox peut alors être utilisé pour créer et gérer des machines virtuelles et des conteneurs exécutant différents systèmes d’exploitation Linux et Windows.

Par conséquent, il y a une énorme marge de manœuvre pour l’évolutivité du serveur.

Proxmox est le bon choix pour vous si :

  • Vous aimez/souhaitez une distribution Linux stable, en l’occurence Debian,
  • Vous voulez faire fonctionner des machines virtuelles et des conteneurs LXC,
  • Vous voulez utiliser la technologie ZFS,
  • Vous souhaitez centraliser vos serveurs,
  • Vous souhaitez aller plus loin avec Proxmox Backup Server.

Nous verrons par la suite comment va s’articuler tout ça, notamment la partie Virtual Machine (VM) et Linux Containers (LXC).

Si vous ne l’avez pas encore deviné, Proxmox va me permettre de créer des VM et/ou container LXC. Sur ces machines, je vais installer Docker qui me permettra de propulser mes différents services.

Boot & stockage
#

Dans les options d’installation de Proxmox VE, il est possible de faire une installation dans un mirroir ZFS & RAID1. C’est l’option que je retiens afin d’avoir une relative tranquilité sur la stabilité de mon serveur.

En effet, si un disque tombe, je peux remonter mon système de fichier et ne pas perdre l’intégralité de mes VMs et conteneurs LXC.

Voici un petit comparatif pour apprécier les avantages et inconvénients de ce système :

Avantages Inconvénients
Réplication des données en temps réel entre les deux disques du RAID1 = Haute disponibilité et une protection contre les pannes de disque La configuration d’un mirroir ZFS RAID1 nécessite au moins deux disques de même capacité, ce qui peut augmenter les coûts initiaux.
Le système de fichiers ZFS est conçu pour être très fiable et offre des fonctionnalités de détection et de correction d’erreurs pour garantir l’intégrité des données. La gestion d’un système de fichiers ZFS peut être plus complexe que celle d’un système de fichiers traditionnel, ce qui nécessite des compétences et des connaissances spécifiques.
Le mirroir ZFS RAID1 permet de récupérer facilement les données en cas de panne d’un disque, ce qui réduit le temps d’arrêt et les pertes de données. Le mirroir ZFS RAID1 peut nécessiter une configuration et une maintenance régulières pour assurer la synchronisation des données et la détection des erreurs.
Proxmox peut être configuré pour utiliser le système de fichiers ZFS, ce qui permet de profiter des fonctionnalités avancées de ZFS, telles que la compression et la déduplication des données. En cas de panne d’un disque, il est possible que les données soient temporairement inaccessibles pendant la récupération, ce qui peut causer des perturbations pour les utilisateurs.

Avec ce choix, j’obtiens une redondance si un disque dur tombe en panne avec l’avantage des instantanés ZFS et de la compression pour mes machines virtuelles et conteneurs LXC.

NAS
#

MergerFS pour le stockage
#

MergerFS est un système de fichiers virtuel qui permet de combiner plusieurs systèmes de fichiers physiques (comprendre disques durs) en un seul système de fichiers logique. C’est donc un système de fichiers d’union très puissant.

Il sera utilisé dans ce projet pour « fusionner » nos disques durs pour créer un seul point de montage unifié de stockage.

Un petit schéma est souvent bien plus clair :

flowchart TD
    storage["**Point de montage**
/mnt/storage"] mergerfs-disks["MergerFS
/mnt/disk*"] style storage color:#ffffff,fill:#f97316,stroke:#78716c,stroke-width:2px style mergerfs-disks color:#ffffff,fill:#4051b5,stroke:#78716c,stroke-width:2px subgraph Disques durs disk1{"/mnt/disk1
ext4 18TB"} style disk1 color:#ffffff,fill:#f43f5e,stroke:#78716c,stroke-width:2px disk2{"/mnt/disk2
ext4 16TB"} style disk2 color:#ffffff,fill:#f43f5e,stroke:#78716c,stroke-width:2px disk3{"/mnt/disk3
ext4 16TB"} style disk3 color:#ffffff,fill:#f43f5e,stroke:#78716c,stroke-width:2px end storage --> mergerfs-disks mergerfs-disks --> disk1 mergerfs-disks --> disk2 mergerfs-disks --> disk3

MergerFS est un système de fichiers virtuel qui permet de fusionner plusieurs disques durs en un seul point d’accès unifié.

Principe de base Imaginez que vous avez trois bibliothèques physiques dans différentes pièces de votre maison, mais que vous voulez les voir comme une seule grande bibliothèque. C’est exactement ce que fait MergerFS avec vos disques durs.

Architecture de MergerFS :

Au niveau le plus bas, vous avez vos disques réels :

  • /mnt/disk1 - 18 To
  • /mnt/disk2 - 16 To
  • /mnt/disk3 - 16 To

Ce sont vos disques physiques, chacun avec sa propre capacité de stockage. Ils existent indépendamment les uns des autres et contiennent réellement vos données.

Le pool MergerFS

C’est la magie de MergerFS. Il crée une vue unifiée de tous ces disques à partir de l’emplacement /mnt/disk* (où l’astérisque signifie “tous les disques correspondants”). MergerFS agit comme une couche d’abstraction qui présente tous vos disques comme un seul système de fichiers.

Le point de montage

/mnt/storage est l’endroit où vous accédez à l’ensemble de vos fichiers. Quand vous ouvrez ce dossier, vous voyez tous les fichiers de tous vos disques comme s’ils étaient sur un seul disque géant de 50 To.

Comment ça fonctionne concrètement ?

Lorsque vous enregistrez un fichier dans /mnt/storage, MergerFS décide automatiquement sur quel disque physique le placer selon des règles configurables (cf. ci-dessous). Mais pour vous, utilisateur, tout apparaît au même endroit ! Lorsque vous lisez un fichier, MergerFS sait sur quel disque il se trouve réellement et va le chercher de manière transparente.

MergerFS est utilisé dans les environnements de stockage en réseau, tels que les serveurs de fichiers ou encore les systèmes de sauvegarde. Nous traiterons plus tard de la stratégie de sauvegarde des données avec l’outil SnapRaid.

Les disques durs physiques

Voici un petit récapitulatif sur MergerFS :

Avantages Inconvénients
Gestion flexible et efficace des données Une complexité accrue de la configuration et de la gestion
Une augmentation de la capacité de stockage facile à mettre en oeuvre Des problèmes potentiels de performances si les disques ou systèmes de fichiers sous-jacents sont lents ou ont des problèmes de connectivité
Une amélioration de la performance et de la fiabilité du système de fichiers Des limitations dans la gestion des métadonnées et des permissions des fichiers et des dossiers.
Une facilité d’utilisation et de configuration

Souligons que MergerFS utilise des politiques de stockage pour définir comment les données sont copiées/hiérarchisées sur les différents disques qui composent le pool unifié, et c’est le choix d’une de ces politiques qui va nous permettent de configurer notre NAS.

À savoir qu’une politique est l'algorithme utilisé pour choisir une ou plusieurs branches (comprendre disques durs) sur lesquelles une fonction doit travailler ou, de manière générale, comment la fonction se comporte.

Il en existe une bonne liste mais je m’attarderais sur deux qui ont retenu mon attention, lfs et epmfs :

  • lfs pour Least Free Space - choix de la branche avec le moins d’espace libre disponible : vise à équilibrer l’espace libre sur tous les disques. MergerFS écrit toujours de nouvelles données sur le disque avec l’espace le moins libre disponible.

    Bien que cela utilise uniformément tous les disques, cela représente des inconvénients importants pour des cas d’utilisation spécifiques. Pour les collections de médias, où les fichiers connexes (comme les épisodes d’une émission de télévision) sont souvent consultés ensemble, la politique lfs peut diffuser ces fichiers à travers plusieurs disques. Par exemple, si vous avez quatre saisons d’émission télévisée, les épisodes de chaque saison pourraient se retrouver sur un disque différent.

    Cette approche peut conduire à :

    • une récupération inefficace : l’accès à une saison complète pourrait nécessiter la filature de plusieurs disques, plus de consommation d’énergie, l’usure des disques,
    • un cauchemare dans l’organisation des fichiers : l’étalement des fichiers connexes est lourd pour travailler sur les données qui devraient être ensemble,
    • Si on perd un lecteur et de la parité, il est plus facile de récupérer une petite partie de données similaires, contre des milliers de fichiers aléatoires.
  • epmfs pour Existing Path, Most Free Space - parmi toutes les branches sur lesquelles le chemin relatif existe, choisissez la branche avec le plus d’espace libre : il faut comprendre priorité au répertoire existant, si un répertoire existe déjà sur l’un des disques, de nouveaux fichiers destinés à ce répertoire y seront placés. Cela garantit que les fichiers connexes, comme les épisodes de la même saison télévisée, restent ensemble sur le même disque tant qu’il y a de l’espace.

Si le répertoire n’existe sur aucun disque (par exemple, lors de l’ajout d’une nouvelle émission de télévision ou d’une nouvelle saison), l’annuaire sera créé sur le disque avec l’espace le plus important. Cela aide à équilibrer l’utilisation globale du stockage à travers les disques.

La politique epmfs combine le meilleur des deux options. Il maintient les fichiers connexes ensemble pour plus de clarté, tout en veillant à ce que l’espace disque soit utilisé efficacement, et c’est donc ce que je vais utiliser sur mon pool de données MergerFS.

Snapraid pour la sauvegarde
#

SnapRAID est un outil de sauvegarde et de synchronisation de données. Il permet de créer des copies de sauvegarde de mes données et de les stocker sur un ou plusieurs disques durs de parité.

Principalement destiné aux centres multimédia personnels avec des fichiers volumineux et rarement modifiés, SnapRAID offre plusieurs fonctionnalités :

  • Utilisation de disques déjà remplis de fichiers sans avoir besoin de les reformater,
  • Toutes les données sont hachées pour garantir leur intégrité et éviter toute corruption silencieuse,
  • Lorsque le nombre de disques défaillants dépasse le nombre de parité, la perte de données se limite aux disques concernés ; les données sur d’autres disques restent accessibles,
  • Si vous supprimez accidentellement des fichiers sur un disque, la récupération est possible,
  • Les disques peuvent avoir différentes tailles,
  • Vous pouvez ajouter des disques à tout moment,
  • SnapRAID ne verrouille pas mes données ; vous pouvez arrêter de l’utiliser à tout moment sans reformater ni déplacer de données,
  • Pour accéder à un fichier, un seul disque doit tourner, ce qui permet d’économiser de l’énergie et de réduire le bruit.
Les grandes lignes de mon plan et choix technologique jetés, il est temps de trouver le matériel qui va me permettre de mettre en oeuvre le projet ! Ce qui nous amène à l’épisode #03 de cette série d’articles.
Perfect Homelab - Cet article fait partie d'une série.
Partie 2: Cet article

Articles connexes