Infrastructure personnelle de stockage numérique

Il y a des gens qui commettent encore et encore toujours les mêmes erreurs, à se demander pourquoi ils n'apprennent pas à les éviter.

Pour moi, c'est la démarche de partir d'un problème, et de la situation dans laquelle je me trouve, puis imaginer à quoi pourrait ressembler une solution réaliste, et ensuite regarder ce que contient la réalité. En général, la réalité ne contient rien qui ressemble à ma solution imaginaire, et je suis obligée de faire des compromis plus ou moins déchirants, ou de faire l'effort de fabriquer ma solution.

Ce serait tellement plus facile de partir de ce qui existe dans la réalité, sur le Marché, puis en bonne consommatrice d'évaluer comment ce qui s'y trouve peut améliorer ma situation ou résoudre des problèmes.

Le problème à résoudre

Dans le cadre de ce billet, je vais considérer un ensemble de fichiers (au sens informatique, il n'y a dans de fiche dans cette histoire) que je veux préserver tels quels pour une durée infinie (à l'échelle personnelle et subjective).

Concrètement, ce sont des scans ou des versions dématérialisées de « papiers importants », comme des fiches de paye, avis d'imposition, relevés de banque, résultats d'examens médicaux, etc. J'y mets aussi les livres numériques, les livres audio, et les notices d'utilisation que j'ai achetés, parce que même si je n'en ai pas souvent besoin à long terme et si ça devrait être remplaçable, les exceptions sont suffisamment douloureuses pour justifier à mes yeux l'effort d'archivage.

Le fait de se limiter à des objets numériques immuables et préservés éternellement n'est pas complètement indépendant de la forme de la solution. Ces caractéristiques sont choisies pour faciliter la préservation numérique : l'immuabilité implique que toute modification constatée est le résultat d'une défaillance de l'infrastructure, ce qui permet de la détecter et la corriger au plus tôt ; tandis que l'absence de suppression facilite la synchronisation, tout fichier à un endroit et pas à un autre est forcément un ajout récent qui doit être propagé.

D'autre part, la collection la collection de fichiers immutables toute seule ne suffit pas, il faut aussi une façon de s'y retrouver, c'est-à-dire une base de méta-données, et ces méta-données ne sont pas aussi figées que les fichiers eux-mêmes. Il faut au moins un titre et de quoi retrouver le fichier ; par expérience je préfèrerais un système de tags hiérarchiques à la rigidité d'une seule arborescence de répertoire ; éventuellement une transcription pour faire des recherches en plein texte, et tant qu'on y est s'il pouvait y avoir des commentaires et des renvois ce serait bienvenu.

Cette base n'a pas besoin de faire partie du système de stockage, et il y a de bonnes raisons de la séparer, mais comme c'est élément crucial à l'utilisation des archives, sa fiabilité et sa durabilité ne doivent pas être négligés.

Je suis en principe ouverte aux solutions qui permettent de faire des choses plus compliquées, tant que la complexité supplémentaire ne réduit pas la fiabilité et ma confiance.

Dit autrement, je suis prête à mettre en place une solution particulière à ces cas particuliers, et faire autrement pour le reste, si j'ai plus confiance dans cette solution particulière.

La forme de la solution

Comme ce sont des données « importantes » ou « précieuses », tout en étant numériques, je vais vouloir les préserver en faisant des copies, sur divers supports et divers lieux.

Je suis depuis longtemps le principe personnel selon lequel toute donnée qui n'existe qu'en un seul exemplaire est considérée comme perdue, parce que la moindre panne la fait disparaître.

Je ne suis pas sûre que ce soit très sain, parce que je commence à appliquer ce principe récursivement : je ne suis pas très à l'aise avec une donnée qui n'existe qu'en deux exemplaires, parce qu'à la moindre panne il ne restera plus qu'un seul exemplaire et je la considérerai comme perdue, donc il me faudrait une troisième copie…

Bref, la préservation réclame la multiplication (et la diversification) des copies.

D'un autre côté, une partie de ces données sont aussi « sensibles », je ne voudrais pas qu'elles tombent dans de mauvaises mains, ce qui pousserait à limiter le nombre de copies (particulièrement dans des lieux plus ouverts), ou à ajouter une étape de chiffrement, qui ajoute en même temps un point de défaillance.

Comme il y a différents niveaux d'importance et de sensibilité, avec en plus différentes quantité de ressources de stockage, je vais vouloir choisir au cas par cas le nombre et la localisation des copies, ainsi que le chiffrement ou non.

Une autre dimension est l'automatisation par rapport à l'intervention manuelle. Il me semble qu'on recommande généralement d'avoir au moins une copie « débranchée », pour éviter les défaillances qui se propagent par le réseau (virus, ransomware, piratages, etc), mais ça oblige à des interventions humaines régulières, et j'ai moins confiance dans la pérennité des interventions humaines que dans la sécurisation de mes ordinateurs.

Donc je cherche une infrastructure d'archivage numérique qui soit distribuée, complètement automatisée, optionnellement chiffrée, et compatible avec mon infrastructure informatique (c'est-à-dire surtout FreeBSD).

La situation actuelle

Ma vie numérique est suffisamment importante pour que je n'attende pas d'avoir une solution propre pour faire des sauvegardes et des archives. Mais comme c'est fait à l'arrache, c'est fait avec un assemblage de composants simples et génériques.

J'ai aujourd'hui deux systèmes de sauvegarde indépendants en complémentaires, qui représentent des compromis différents.

Ces deux systèmes sont basés sur un système de fichiers UNIX, où le nom du fichier sert de titre et d'indication de type, et l'arborescence de répertoires sert de classification grossière et insatisfaisante.

Le premier système est une extension de mon système de sauvegarde des logs du système. Il est basé sur des snapshots ZFS qui sont envoyés par SSH, et est coordonné avec l'horloge et un doigt mouillé. La création du snapshot et son transfert sont déclenchés indépendamment, à des heures fixes bien choisies ; la machine de destination initie la connexion en annonçant son dernier snapshot transféré, et un script SSH associé à sa clé empêche ce compte de faire autre chose de recevoir une séquence de snapshots.

Le second système est un bête rsync, sur SSH sur mon VPN (tinc), avec mon utilisateur interactif. Sur chaque machine où c'est pertinent, j'ai un répertoire ~/archives que je remplis librement, et il est recopié chaque nuit dans ~/backup/$ORIGINE sur les autres machines.

La topologie de ces transferts est un peu tarabiscotée, parce qu'il y a des connexions que je n'aime pas avoir avec des clés sans phrase de passe, donc le sens de connexion ne correspond pas toujours au sens de transfert des données.

En plus les transferts ont des durées assez variables d'un jour à l'autre, ça devenait trop difficile de trouver une grille horaire qui marche à tous les coups. J'utilise nats pour annoncer la fin de chaque transfert, comme monitoring manuel et pour déclencher un transfert dépendant avec natsbot.

Dans l'ensemble, ça marche raisonnablement bien, sinon j'aurais été plus pressée que ça de remplacer tout ça.

Le système à base de rsync est un peu brouillon, mais ça va bien avec son rôle de bricolage temporaire : il n'est censé servir qu'à sauvegarder les données importantes en cours d'élaboration, et la synchronisation efface les sauvegardes des fichiers dont j'ai supprimé l'original.

Le système à base de ZFS est très bien aussi, mais il est techniquement limité aux machines qui utilisent ce système de fichiers, ce qui ferme une partie des espaces potentiels de sauvegarde.

Ces deux systèmes entretiennent une asymétrie forte entre les originaux et les copies. C'est tout à fait normal pour les logs ou les données d'un serveur, ça se défend pour les scans par USB, mais ça ne veut plus rien dire pour la paperasse dématérialisée ou les livres.

L'imagination

Ça fait quelques années que j'aimerais bien ajouter à tout une troisième méthode de sauvegarde, spécialement dédié à la situation qui fait l'objet de ce billet (les fichiers immutables éternels).

J'imagine les fichiers nommés et rangés suivant leur somme de contrôle ou leur empreinte de hachage, histoire de les vérifier régulièrement, avec une synchronisation bidirectionnelle sans suppression.

Ce stockage de masse n'aurait que les données brutes, sans méta-données autres que celles qui fuient naturellement (taille du fichier, une certaine date, etc). Il y aurait donc une base de méta-données à côté, que j'imaginais par défaut en sqlite, avec des sauvegardes quotidiennes répliquées de façon intelligente mais non spécifiées pour l'instant.

Je me suis dit qu'il faudrait plusieurs zones de stockage de ce genre (éventuellement avec la même base de méta-données) pour garder les gros fichiers moins importants, comme les livres audio, sur les machines qui ont le plus d'espace disponible, alors que les fichiers plus petits et plus critiques seraient répliqués aussi sur les machines plus limitées.

Je n'ai pas poussé très loin la réflexion sur le chiffrement. J'ai des machines de confiances qui pourraient avoir les fichiers en clair, et des machines plus hostiles qui n'auraient que des fichiers chiffrés ; mais je ne sais pas si un espace de stockage pourrait avoir des copies en clair et des copies chiffrées suivant les machines, ou s'il y aurait des espaces de fichiers en clair indépendant des espaces de fichiers chiffrés.

J'imaginais chiffrer les fichiers avec une clé symétrique qui serait stockée avec le reste des méta-données, mais je n'ai pas trouvé de façon de faire ça qui ne me donne pas l'impression désagréable de ré-inventer de la cryptologie, donc ça risque de se finir à coup d'age et tant pis pour l'asymétrie superfétatoire.

Dit comme ça, je sais que c'est inutilement précis, et que ça ressemble plus à la description d'une architecture logicielle avant de commencer à coder qu'à un cahier des charges.

La réalité

Donc je m'attends à ce que rien dans l'offre logicielle existante ne ressemble à ça, mais j'avais l'impression que mon problème de départ était suffisamment général pour que des gens plus malins que moi, qui pensent à peu près comme moi, aient déjà développé une solution, et qu'il me suffise de renoncer à quelques choix de conception personnels pour avoir quelque chose de tout à fait satisfaisant.

Ma déception a été de ne rien trouver qui s'approche de ça, même de loin. Comme si j'avais été la seule à poser le problème dans ces termes, ou à avoir des valeurs qui poussent à ce genre de compromis.

Le système de stockage que j'ai imaginé ressemble furieusement à du content-adressable storage, mais ils m'ont pratiquement tous donné l'impression d'être abandonnés ou d'être des usines à gaz qui font beaucoup trop choses par rapport à ce dont j'ai besoin. Je ne vais pas essayer de déployer un système de fichiers interplanétaire quand je n'ai besoin que d'un rsync avec un petit script, ou de la plomberie de git.

J'en profite pour saluer les gens de plakar, ça m'a tout l'air d'être un très joli programme, mais beaucoup trop compliqué pour rentrer dans ce que je considère être une infrastructure personnelle critique alors que je n'ai même pas encore essayé de m'en servir.

Je suis tombée récemment sur le projet perkeep, qui a l'air beaucoup plus proche de ce que j'imaginais. Et même si sa description est très séduisante, il y a aussi beaucoup trop de fonctionnalités dont je n'ai que faire pour mon goût, et la documentation est tellement lacunaire que ça m'inquiète sérieusement. Le fait qu'il ait donné l'impression d'avoir été abandonné, et l'historique des commits depuis début 2020 n'est pas vraiment rassurant non plus, sans être complètement mort. Et pour ne rien arranger, le fait que personne autour de moi ne semble jamais en avoir entendu parler amplifie encore mes réticences.

L'appel au public

Voici à peu près où j'en suis aujourd'hui sur la problématique de la sauvegarde longue durée de fichiers importants et définitif.

J'ai un pis-aller qui a l'avantage d'éviter certaines catastrophes, j'ai des rêves trop précis pour exister dans la réalité mais trop flous pour me lancer sans hésiter dans le développement d'un nouveau logiciel, et ce que j'ai trouvé dans logiciels existants est loin de m'enthousiasmer pour cette utilisation précise.

J'en suis à un niveau de désespoir suffisant pour faire appel à la sagesse de mon lectorat.

Que pensez-vous de ma situation ? Est-ce que j'invente des problèmes là où il n'y en a pas ? Est-ce que je suis la seule à avoir posé le problème en ces termes ou sous cette perspective ? Est-ce que mon approche de l'archivage numérique est fondamentalement inappropriée ?

Qu'utilisez-vous pour les sauvegardes de ce genre ? Avez-vous déjà entendu parler de perkeep (ou camlistore avant son renommage) ? Connaissez-vous un logiciel qui répondrait à mes attentes?

Ou devrais-je arrêter de tergiverser et commencer à écrire du code ?

Commentaires

Pas de commentaire pour le moment.

Poster un commentaire

Mise en forme historique : pour mettre en valeur un mot ou un groupe de mot, tapez une étoile de part et d'autre, sans mettre d'espace entre l'étoile et le mot, comme ceci : *mise en valeur*. Pour insérer un lien, mettez le entre crochets, comme ceci : [http://instinctive.eu/].

Mise en forme markdown : voir le guide détaillé, en résumé c'est le Markdown traditionnel, sans HTML ni titres, mais avec les tables PHP-Markdown-Extra.

Attention : les balises HTML entrées dans les commentaires seront affichées telles quelles, et non pas interprétées.

Autour de cette page

 

Autour de cet article

Weblog

Derniers commentaires

Tags

Archives

Site-level navigation and features

 

Instinctive.eu

Contact

Sections

Validation

Copyright © 2008-2026 Natacha Kerensikova

Butterfly images are copyright © 2008 Shoofly