DIBWIFT

Disk Image Backup With Fault Tolerance

Présentation

Bienvenue sur la page de présentation du projet DIBWIFT, celle-ci traitera dans un premier temps de façon explicite le fonctionnement général du programme réalisé dans ce projet. A la suite de ces quelques explications, nous parlerons un peu plus des méthodes employées, mais pour des informations précises, vous pouvez vous intéresser au code source sur le dépot ou nous contacter (dibwift@free.fr).

Principe

Le but principal de ce programme est la réalisation d'images complètes de disques stockées sous la forme d'un fichier sur une autre machine, pour être plus clair :

Imaginez que vous ayez sauvegardé que certains fichiers sur un disque dur externe et que vous ne puissiez plus les récupérer sur votre machine principale (pour diverses raisons). Cela implique de devoir réinstaller un système d'exploitation, le remettre à jour et tout récupérer.
Devoir refaire tout cela correspond à passer du temps à refaire une chose qui avait déjà été faite, d'autant plus que vous n'êtes pas forcément sûr d'avoir sauvegardé tout ce que vous souhaitiez sauvegarder dernièrement.

C'est pourquoi nous avons opté pour des sauvegardes complètes de disques, qui permettent de ramener une machine dans son état un jour en arrière, donc il n'y a pas besoin de tout refaire. Certes on ne peut pas tout récupérer, mais on évite de perdre énormément de temps à tout réinstaller.

Pour être plus clair, voici le schéma qui explique simplement ce qui est réalisé lors de la sauvegarde :

Disque dur vers fichier

Lorsque nous parlons de sauvegarde sur une autre machine, nous n'évoquons pas le fait de mettre en place une machine en tant que serveur principal. Nous souhaitons partitionner chaque machine en conséquence, mais avant de développer là-dessus, qu'est-ce qu'une partition?

Une partition, désigne une fraction d'un disque dur, considérée comme un disque à part entière. C'est à dire qu'un disque dur peut être "divisé" en plusieurs parties. Les avantages sont multiples, il est intéressant de stocker les programmes à l'extérieur des données. Par exemple, il vaut mieux avoir ses photos/vidéos d'un côté et les logiciels de l'autre, les choses sont séparées.
Cela apporte aussi un gain de temps, et ce qui nous intéresse dans le cas actuel c'est de pouvoir lancer deux systèmes d'exploitations différents sur la même machine sans avoir à chercher un second disque dur (voir une seconde machine pour les plus motivés). Vous avez probablement déjà connu un poste de travail comme celui-ci :

Poste de travail, partitions

Le programme que nous réalisons se lance sur une distribution GNU/linux (dans notre cas c'est sur Debian), et nous ne pouvons pas l'installer sur un autre système d'exploitation, c'est là qu'entre en jeu les partitions. La partition supplémentaire que nous installons contient une Debian pas très conséquente et assez de place pour pouvoir "accueillir" la sauvegarde d'une autre machine. On peut aussi s'aider d'un disque dur interne supplémentaire. Lorsque l'on a finit de se servir des machines, on les fait démarrer sur la Debian et on lance la sauvegarde. Chaque machine va sauvegarder la partition de l'utilisateur sous forme de fichier sur la Debian de la machine en face comme sur le schéma suivant :

Sauvegarde d'une partition vers un fichier

Méthodes

1.Les postes démarrent à un horaire prévu

Demarrage CPU Demarrage CPU Demarrage CPU

Les machines démarrent sur leur Debian et lancent le script de sauvegarde.

2.Chaque machine vérifie la présence du compagnon

Test UUID

Le script vérifie la présence de la machine compagnon dans un premier temps grâce à un UUID.
Si cette étape n'est pas vérifiée, le script s'arrête.

3.Transfert des données bloc par bloc

Transfert

Si c'est la première sauvegarde :
-Une sauvegarde complète est réalisée zone par zone (une zone fait 16Mio de façon arbitraire)
-Un md5sum de chacune de ces tranches est stocké dans un fichier
Si ce n'est plus la première
-Une comparaison des md5 de chacune des zones est réalisé et stocké dans un fichier de différence
-On remplace chaque zone différente et on place le fichier de différence dans un historique que l'on testera.

A noter que l'on sauvegarde tout ce qui précède la partition Debian sur la partition Debian de la machine compagnon (d'où une certaine marge d'espace sur le schéma).

4.Démarrage automatique du script de surveillance

Surveillance

Le script de surveillance cherche les anomalies sur la veille et la sauvegarde actuelle
Il arrête la machine après un certains temps en cas de problème dans la procédure
Et envoi un e-mail récapitulatif, à savoir que si on a pas de mail c'est qu'il y a un soucis important

5.Contrôle hebdomadaire des sauvegardes

Un contrôle d'intégrité est réalisé chaque semaine (de préférence un jour avec beaucoup de temps libre)
Toute l'image est contrôlée, ce qui prend bien plus de temps qu'une simple sauvegarde