Linux things 🐧

un blog sur les technologies des logiciels libres et autres digressions


QNAP : un DAS pour S3

Garage sur un stockage DAS

Sun, 05 Jan 2025 11:20:30 +0200
# garage   # materiel   # auto-hebergement   # S3   # raspberrypi  

Introduction

J’ai dĂ©jĂ  parlĂ© l’annĂ©e derniĂšre de Garage la solution libre de Deuxfleurs qui me permet de faire des sauvegardes S3 en local avec Restic.
Le soucis est que dans cette configuration Garage utilisait les 2 disques pour stocker les donnĂ©es, mais en cas de dĂ©faillances matĂ©riel d’un disque les donnĂ©es seraient perdues. Comme il s’agit de sauvegarde j’ai dĂ©cidĂ© d’investir afin de les sĂ©curiser dans une solution matĂ©rielle en RAID 1 : toutes les donnĂ©es d’un disque sont rĂ©pliquĂ©es sur l’autre.
Solution matĂ©rielle car je n’avais pas envie de configurer de maniĂšre logiciel le RAID 1, mĂȘme si Linux peut le faire, et Ă  mon sens le matĂ©riel est bien plus efficace.
D’emblĂ©e j’ai mis de cĂŽtĂ© les solutions NAS. D’une part je n’ai pas confiance Ă  l’OS de produits type Sinology qui font rĂ©guliĂšrement l’objet de failles et je souhaite maitriser toute la stack logiciel.

En creusant j’ai trouvĂ© la solution qui me convient exactement : les DAS (Direct Attached Storage). Le DAS se branche directement sur son PC en USB, il n’y a pas besoin de driver spĂ©cifique les disques sont directement vu par l’OS.

AprĂšs quelques recherches j’ai trouvĂ© un DAS abordable, le QNAP TR-002 autour de 150€. Il utilise 2 disques (SSD ou HDD) ce qui me suffit, la version TR-004 en utilise 4 (et peut donc gĂ©rer le RAID 5).

QNAP TR-002

Il propose diffĂ©rentes configuration RAID que l’on choisi via un commutateur situĂ© Ă  l’arriĂšre. Les modes RAID 1 et RAID 0 (et JBOD plus pour moins Ă©quivalent) et les modes individuel et contrĂŽle logiciel.
Évidement pour gĂ©rer le stockage de sauvegarde le mode RAID 1 est indispensable. Si c’est pour un autre usage, des donnĂ©es que vous pouvez restaurer par un autre moyen par exemple le stockage de vos jeux Steam, alors les modes RAID 0 ou JBOD vous permettront d’exploiter la totalitĂ© de l’espace de vos disques.

Pour les disques j’ai achetĂ© 2 HDD de 4 To (bien moins cher que des SSD) de diffĂ©rentes marque :

  • Western Digital WD Red Plus 4 To 256 Mo
  • Seagate IronWolf 4 To (ST4000VN006)

Raspberrypi 4

L’objectif est d’avoir un serveur S3 pour tout mon rĂ©seau local et de pouvoir lancer des backup dans la nuit par exemple. Pour cela j’ai recyclĂ© un Raspberrypi 4 que j’ai installĂ© avec une Manjaro ARM Minimal. Une Archlinux ARM aurait pu aussi faire le travail. Dans tous les cas il faut un Linux 64 bits.

Les disques du DAS sont accessible via /dev/sda et vus comme un seul grĂące Ă  la configuration en RAID 1.

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   3,6T  0 disk /opt
mmcblk0     179:0    0 119,1G  0 disk 
├─mmcblk0p1 179:1    0 457,8M  0 part /boot
└─mmcblk0p2 179:2    0 118,6G  0 part /
zram0       253:0    0   5,6G  0 disk [SWAP]

Il suffit ensuite de formater ce disque

sudo mkfs.ext4 -m 0 /dev/sda

récupérer son uuid

blkid /dev/sda
/dev/sda: UUID="11b3e6e2-299b-45af-ad81-519eeaadf751" BLOCK_SIZE="4096" TYPE="ext4"

et l’ajouter Ă  la fin du fichier fstab

/etc/fstab

...

UUID=11b3e6e2-299b-45af-ad81-519eeaadf751	/opt	ext4	defaults	0 0

Ensuite on peut monter le DAS dans le rĂ©pertoire /opt que l’on a crĂ©Ă©

sudo mount /opt

Dans /opt j’ai crĂ©Ă© un rĂ©pertoire pour Garage, /opt/garage/, ce qui me permet d’utiliser /opt pour d’autres donnĂ©es comme des volumes Docker.

Garage est accessible via le dépÎt AUR avec yay : yay -S garage

Et voici sa configuration

/etc/garage.toml

metadata_dir = "/opt/garage/meta"
data_dir = "/opt/garage/qnap"
db_engine = "lmdb"

replication_factor = 1

rpc_bind_addr = "[::]:3901"
rpc_public_addr = "IP_LOCAL_RASP:3901"
rpc_secret = "TOKEN"

[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.garage.localhost"

[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.garage.localhost"
index = "index.html"

[k2v_api]
api_bind_addr = "[::]:3904"

[admin]
api_bind_addr = "[::]:3093"
admin_token = "TOKEN"
metrics_token = "TOKEN"

Pour le reste, la configuration des Buckets et Restic, se rĂ©fĂ©rer Ă  l’article sur Garage.
Mon Raspberrypi 4 avec 4Go de RAM fait largement le boulot, cependant un autre matériel avec un port USB-C pourrait augmenter le débit avec le DAS.

Conclusion

Le QNAP est plutĂŽt silencieux malgrĂ© les ventilateurs sauf quand j’ai voulu tester l’extraction Ă  chaud d’un disque 😆
Évidemment un intĂȘret du RAID 1 est de pouvoir extraire un disque Ă  chaud ! (en cas de dĂ©faillance matĂ©rielle). Dans ce cas le boitier bip un moment, puis l’insertion d’un nouveau disque (ou du mĂȘme) peut gĂ©nĂ©rer un peu plus de bruit ventilateur pendant la reconstruction du RAID qui va durer plusieurs heures.
Pendant ce temps le DAS est bien sûr utilisable en écriture avec un seul disque et pendant la reconstuction.

A noter que Garage peut fonctionner en cluster, ainsi si vous avez les moyens d’investir dans 2 autres DAS il pourra rĂ©pliquer les donnĂ©es entre les diffĂ©rents noeuds. Cela peut ĂȘtre intĂ©ressant d’avoir des noeuds rĂ©partis gĂ©ographiquement (reliĂ©s par Tailscale par exemple). Par contre Garage se basera sur l’espace du plus petit noeud pour gĂ©rer la taille du cluster, donc il vaut mieux des noeuds de taille identique.

S3 est de plus en plus une solution de stockage pour d’autres type de logiciels, par exemple Peertube gĂšre le remote-storage S3 ou Nextcloud. C’est devenu un standard et on a de la chance d’avoir des solutions libres compatibles comme Garage et Minio et des fournisseurs EuropĂ©ens autre que Amazon.

A savoir que QNAP propose des logiciels (que je n’ai pas testĂ©) pour le gĂ©rer, pour Windows Mac et Ubuntu : Utilitaires QNAP.

(Ce texte a été écrit avec VNote)