Files
BaC/content/2024-10-29-Monter-son-propre-NAS.md
2025-02-27 12:52:48 +01:00

7.2 KiB
Raw Permalink Blame History

+++ title = "Monter son propre NAS" date = 2024-10-29 [taxonomies] tags = [ "système", "nas", "zfs", "nfs" ] +++

This is brilliant meme: TrueNAS, this is brilliant. Debian, but I like this

Il y a de nombreuses lunes, javais un NAS TrueNAS Core. Cétait du FreeBSD, il ne faisait pas grand-chose à part du S3 et du NFS et tout allait pour le mieux.

Il se trouve que TrueNAS est en train de petit à petit laisser tomber TrueNAS Core (certains tickets ouverts sur des bogues sont corrigés en TrueNAS Scale mais pas en TrueNAS Core par exemple).

Bref, bienvenue dans les aventures de TrueNAS Scale.

TrueNAS Core, TrueNAS Scale, cest quoi le truc?

TrueNAS Core, cest une base de FreeBSD (qui commence à dater un peu dailleurs). TrueNAS Scale, cest une base de Debian. Les deux font du ZFS, les deux font du NFS, les deux font du CIFS.

La grosse différence, cest donc essentiellement la «fraîcheur» du système et sa maintenabilité.

Maintenant, dans un cas comme dans lautre, mes vieux démons me rattrappent: il mest impossible dintégrer ça proprement nulle part. Ajouter du Munin? Impossible! Faire la conf via Ansible? Impossible! Vous voulez intégrer acme.sh? Impossible!

Certes, il y a une API. Mais faut encore se taper tout le bordel de lAPI en question alors que jai déjà des choses toutes prêtes à côté.

Et le MinIO S3 sur TrueNAS Scale est maintenant disponible dans un K3s donc en terme de simplicité et de ressources, cest pas ouf… Même si ça fonctionne tout-à-fait correctement, je tiens à le préciser.

Mais comme cest une putain de Debian avec finalement pas grand-chose dessus, est-ce que cest si compliqué que ça à faire soi-même « à la main»? Ben non en fait…

Installation Debian

Je ne vais pas te mentir, cest presque la partie la plus compliquée. Linstallation de TrueNAS est hyper simple: tout le partitionnement, toute la mécanique derrière, est 100% automatique, tu ne vois rien, tu ne sais rien, tu ne toccupes de rien.

Tout sinstalle aussi sur du ZFS. Bon installer Debian sur du ZFS à la main, cest pas infaisable mais vlà la race quoi…. Donc il vaut mieux partir sur plus simple: mdadm avec du LVM par dessus.

Jai fini par tomber daccord avec moi-même sur une configuration de ce type: une première partition EFI sur chaque disque système (en loccurence pour moi 2 SSDs de 120Gio recyclés), puis une seconde partition pour mdadm.

Une fois, mdadm installé, LVM vient après avec une configuration finalement assez classique: swap, une partition /, une partition /home plus petite (il ne devrait pas y avoir dutilisateurs dans mon cas) et une partition /var un peu conséquente.

Pareil, je pars aussi du principe que la partie réseau nest pas vraiment un problème: soit tu as une adresse fixe, soit cest du DHCP, mais en gros, tu sais te débrouiller là-dessus et tu na pas de config cheloue avec des interfaces agrégées qui partent dans tous les sens.

Installation dOpenZFS

Là où ça se complique un peu, cest pour létape daprès: il faut aller importer les informations ZFS existantes.

La première étape, cest donc dinstaller ZFS. Pour éviter un downgrade, opération pas toujours bien supportée par ZFS, jai choisi de ne baser sur OpenZFS disponible dans les backports de Debian 12. Si tu commences juste avec ZFS et que tu nas créé aucun pool, tu peux très bien démarrer avec les dépôts contrib standard.

echo "deb http://deb.debian.org/debian bookworm-backports main contrib
deb-src http://deb.debian.org/debian bookworm-backports main contrib" > /etc/apt/sources.list.d/bookworm-backports.list
echo "Package: src:zfs-linux
Pin: release n=bookworm-backports
Pin-Priority: 990" > /etc/apt/preferences.d/90_zfs
apt update && apt install dpkg-dev linux-headers-generic linux-image-generic zfs-dkms zfsutils-linux

À partir de ce moment, tu devrais avoir un ZFS parfaitement fonctionnel. Encore une fois, sil sagit dune récup depuis un ZFS existant, faut suivre la suite. Sil sagit dune première installation, faut créer les volumes, la doc en ligne devrait te suffire.

Généralement, TrueNAS monte lensemble des volumes dans /mnt. Pour refaire la même, il faut faire deux ou trois petites manips côté ZFS:

zpool import -fR /mnt <mon volume>
zfs set mountpoint=/mnt/<mon volume> <mon volume>

Ces deux jolies lignes permettent dimporter le volume existant (en forçant, sinon ZFS nest pas content), de le monter au même endroit que ce que faisait TrueNAS et de mettre ce point de montage en dur dans ZFS.

Ça permet de sassurer quon retrouvera les mêmes chemins ce qui est très important pour NFS, nettement moins pour les autres services.

Pour permettre au démon ZFS de monter tout ce petit monde au démarrage du serveur, il faut aller fixer un fichier de cache du côté de la configuration dudit démon.

zpool set cachefile=/etc/zfs/zpool.cache <mon volume>

Une fois rendu là, tu devrais avoir des points de montage exactement similaire à ce que fait TrueNAS. Et les mêmes volumes. Tu peux dailleurs en profiter pour faire un peu de ménage et supprimer les datasets qui ne seront plus utiles de toutes manières.

zfs destroy <mon volume>/.system

Installation de NFS

Bon là, cest un peu con comme la mort, on va pas se mentir.

apt install nfs-kernel-server && systemctl start --enable nfs-server.service

Cest à peu près tout. Bon, idéalement, il faut récupérer le fichier /etc/exports qui existait à lorigine sur le TrueNAS dorigine. Si ce nest pas ton cas, il faudra aller le recréer, mais la syntaxe nest pas bien compliqué.

Une fois arrivé là, tu as déjà 90% de TrueNAS, sauf évidemment si tu nas aucun self-respect et que tu fais du CIFS. Mais seuls les déments font ça, donc je suppose que cest bon.

SMART

Histoire de compléter, tu peux installer SMART. Là, aussi cest à peu près très con:

apt install smartmontools && systemctl start --enable smartd.service

Le reste

Une fois que tout cela est fait, tu fais… bah ce que tu veux! Tas besoin de rajouter du S3, tu peux faire du garage. Tas besoin dhéberger du Bittorent, tu peux faire du transmission, du déluge, etc…

Si ton TrueNAS ne te servait vraiment que de stockage, là, tu nas que du stockage, point.

Conclusage

Oui, cest déjà fini. En fait, avec ça, tu as un TrueNAS maison. Évidemment, il faudra potentiellement rajouter un relais SMTP, de la supervision, etc… Mais je suppose ici que tu as déjà ça à côté et que tu sais faire en gros.

TrueNAS, ça se limite à peu près à ça: gérer du ZFS, gérer du partage, gérer des disques.

Manque linterface clicaconvy, mais qui a vraiment envie de tout faire en passant par ça ou par une API imbitable?