Sauvegarde de données et RAID

La disponibilité d'un serveur peut rapidement devenir importante à maintenir. Une fois le problème de l'alimentation et de l'accès à internet résolus, il reste une variable dont la maitrise est un peu plus aléatoire : le stockage des données.

En effet, si votre disque dur lâche, vos données sont perdues, et votre site est inaccessible. Si jamais vous n'avez aucun backup sur un autre support, non seulement il faudra recréer votre site, mais votre site restera hors-ligne tant que vous n'aurez pas remédié au problème(s).

Dans la mesure où un serveur sollicite le disque dur de façon régulière, et avec une intensité qui dépend du nombre de visites et des applications qui tournent dessus (seedbox, mysql...), votre disque dur peut très bien lâcher sans prévenir, ou presque.

Of course, comme ce problème est récurrent, il existe beauuucoup de moyens d'y échapper. Je me concentrerais seulement sur quelques uns de ceux-ci, simples à mettre en place et ne nécessitant pas de dépense supplémentaire.

Mais dans un premier temps, comment savoir si votre disque dur est en bonne santé ?

SMART

Il existe depuis pas mal de temps maintenant une technologie qu'on appelle SMART, pour Self Monitoring and Reporting System. Elle est disponible en fonction de l'âge de votre disque dur, et lui permet d'effectuer certains tests, et d'accéder à des statistiques détaillées de son utilisation.

Pour accéder à ces données, il suffit de lancer smartctl sur la machine:

sudo smartctl -a /dev/sdX 

où sdX est votre disque dur (souvent hda ou sda si vous n'en avez qu'un)

Bon mais si on à pas accès à la machine en CLI, parce que le SSH est pas encore en place par exemple ? On peut toujours utiliser le module présent dans Webmin. Si il n'est pas installé, vous le trouverez dans le module "Inutilisé" de la partie gauche de l'interface. Ensuite, il est accessible via le module "Matériel". Il suffit de sélectionner le disque dur qui vous intéresse, puis de cliquer sur "Show" et toutes les infos disponibles s'afficheront. Pour vérifier l'état du SMART, en bas de page, cliquer sur le bouton "Short self test" pour un test de 2 minutes, et sur "Extended test" pour un test de 55 minutes, plus complet.

La progression de ce test est affichée sur la page du disque à la ligne

"Self-test execution status"

et devrait retourner un joli

"The previous self-test routine completed without error or no self-test has ever been run."

Une section à vérifier régulièrement donc.

Mirroring, mon beau mirroring...

Le mirroring est une opération qui consiste à dupliquer le contenu d'un disque sur un autre, à l'identique et régulièrement. Si le contenu de l'un est inaccessible, la copie est fonctionnelle à l'identique. Dans le cas d'un site web, le mirroring consiste à copier toutes les données d'un site web sur un autre serveur web, lequel prendra le relais en cas de défaillance du premier, ou si le premier serveur est surchargé de travail.

Pour mettre la première solution ( que nous verrons en deuxième ) en place, on utilise un RAID-1 et pour la seconde (que nous verrons en premier), un simple script.

Mirroring FTP

Cette méthode à l'avantage de pouvoir se mettre en place après l'installation du système. Elle nécessite la mise en place d'un script, et un accès ftp à un autre serveur, avec suffisamment d'espace de stockage pour y copier vos données.

Si jamais votre serveur à un problème, il ne vous reste alors qu'à rediriger votre nom de domaine vers un serveur de secours.

On va donc écrire un script qui à un intervalle régulier enverra par ftp les nouveaux fichiers ou les fichiers modifiés depuis la dernière exécution.

Dans un premier temps, installons le programme lftp ) qui permet en une ligne de commande de se connecter à un ftp et de lui envoyer une commande.

Avertissement : FTP est un protocole peu sécurisé, et cette méthode envoie le login et mdp en clair pour ouvrir la connexion. Il est donc conseillé d'utiliser un compte ftp dédié au miroir et qui ne contient aucune autre donnée.

sudo apt-get install lftp 

lftp permet beaucoup d'opération avancées et dans notre cas, s'utilisera comme suit :

lftp hôte_ftp -u utilisateur,mdp -e "mirror -R --only-newer /chemin/en/local/dossier /chemin/sur/le/ftp ; quit" ; 

Explications :

Il est possible de remplacer cette commande par "put" pour le transfert d'un fichier unique.

Voilà donc comment on procède en passant par Webmin ( ceux qui savent utiliser la ligne de commande doivent savoir comment créer un nouveau fichier. )

Le script

Dans le module "Autres" >"Gestionnaire de fichiers". Un navigateur va s'ouvrir dans la partie de droite ( vous devez accepter l'exécution de Java ). Rendez-vous dans le dossier de votre choix ( /home/votre_login par exemple ) et cliquez sur l'icône "new file" dans la barre d'outils.

Dans la nouvelle fenêtre qui s'ouvre, ajoutez le contenu suivant ( que vous aurez adapté à votre configuration bien sûr ) :


#!/bin/sh
#transfert ftp du dossier

lftp hôte_ftp -u utilisateur,mdp -e "mirror -R --only-newer /chemin/en/local/dossier /chemin/sur/le/ftp ; quit" ;

#affichage d'un message de confirmation

echo "La commande a ete executee" 

Si vous avez plusieurs dossiers à transférer, il suffit de dupliquer la commande "mirror" comme ceci (ne pas oublier les ";" entre chaque commande) :

 lftp hôte_ftp -u utilisateur,mdp -e "mirror -R --only-newer /chemin/en/local/dossier /chemin/sur/le/ftp ; mirror -R --only-newer /chemin/en/local/dossier /chemin/sur/le/ftp ; quit" 

Il ne reste plus qu'à entrer le nom de fichier du script avec une extension ".sh" et à cliquer sur le bouton "Save and Close" en bas à droite.

Sous GNU/Linux, il faut autoriser explicitement un fichier à s'exécuter. Pour cela, il va falloir passer par un peu de ligne de commande. Dans la partie gauche de Webmin, dans le module "Autres" > "Commandes shell". Ce module permet d'envoyer des commandes au système.

A droite, dans la zone de saisie, entrez en adaptant le chemin vers votre script :


sudo chmod +x /home/votre_login/script_backup.sh

Ouf ! Ayé, finis avec le script, il ne reste plus qu'à dire au système de l'exécuter à intervalle régulier.

La tâche CRON

Une tâche CRON, c' est une tâche qu'on file au système, en lui disant quoi faire, où, quand et comment. Il garde tout ça dans un fichier, et il s'en occupe tout seul comme un grand.

Pour créer une nouvelle tâche, dans le module "Système" > "Tâches Cron", en haut du tableau ou apparaissent toutes les tâches déjà configurées, cliquez sur "Créer une nouvelle tâche cron programmée".

Dans la page qui s'affiche, il y a trois choses importantes à entrer :

S'exécute en tant que : root ou votre login Commande : /home/votre_login/votre_script.sh Planification : à vous de voir en fonction de la fréquence de mise à jour de votre site.

Cliquez ensuite sur "Créer" et voilà, finito.

Pour tester la commande, on peut cliquer sur la tâche qu'on vient de créer dans le tableau, et cliquer sur "Exécuter maintenant".

RAID-1

Un [ Raid ](http://fr.wikipedia.org/wiki/RAID_(informatique) est un système de redondance des données, qui permet soit d'accélérer l'accès à celles-ci (raid-0 ), soit de sécuriser leur stockage en créant une copie (raid-1), soit les deux (raid-5).

Malheureusement, pour ce dernier, il faut investir dans du Raid matériel.

Les raids matériels sont les plus sûrs et les plus simples à utiliser, puisqu'ils font automatiquement le travail en "déguisant" un disque dur en un autre en cas de défaillance. Mais ils coûtent aussi plus cher, et nous on veut un serveur pas cher. Donc on va faire du raid logiciel.

Concrètement, il faut au moins deux disques dur de la même taille branchés sur le serveur. Si les deux disques ne font pas la même taille, ça marchera, mais l'utilisation du plus grand disque sera limitée à la taille du petit.

Dans notre cas, on va utiliser un raid-1 logiciel. On va donc avoir deux disques dur identiques en taille, contenant exactement les mêmes données. Si jamais l'un des disques dur à un problème de démarrage, le second prendra le relais automatiquement. On peut bien sur mettre en place plus de deux disques, la manip restera là même, mais sera plus longue, c'est tout.

Pour mettre en place un raid-1 logiciel, c'est à l'installation de l'os que ça se passe. Au moment du partitionnement de vos disques, arrangez vous pour vous retrouver avec les quatre mêmes partitions sur chaque disque :

Partition 1 :

Partition 2 :

Partition 3 :

Partition 4 :

Vous vous retrouverez alors avec quelque chose comme ça :

  1. Rendez-vous alors sur "Configurer le RAID avec gestion logicielle", puis validez les changements dans l'écran suivant.

  2. Dans l'écran suivant, sélectionnez "Créer un périphérique multidisque".

  3. Choisissez le type "Raid-1", entrez le nombre de disques durs à utilisez, et si vous en avez plus de deux, vous pouvez en mettre en réserve ( qui ne seront utilisés qu'en cas de défaillance ).

4.Ici, il faudra faire correspondre chaque partition de chaque disque dur en fonction de leur utilisation. Il faut donc cocher avec espace toutes les partitions qui ont la même taille. Pour commencer, cochez donc toutes les partitions de 120 Mo, puis validez.

  1. Répondez "Oui" deux fois et vous voila de retour au menu de départ avec un nouveau périphérique RAID

Recommencez au point 1 pour chaque partition, en changeant vos choix au point 4. Après tout ça, vous devriez obtenir un périphérique RAID avec 4 partitions.

Ces quatres partitions sont à configurer comme si elles étaient normales, je vous renvoie donc vers le chapitre précédent pour configurer ça.

Vérification du RAID

Il est très important de laisser la construction du RAID se faire jusqu'au bout lors du premier redémarrage de la machine ! Si vous interrompez ce processus, il vous faudra recommencer l'installation du début. Après vous être loggé, pour lancer cette vérification :

sudo watch -n 10 cat /proc/mdstat 

Qui devrait vous renvoyer un truc du genre :

Personalities : [raid1] md0 : active raid1
sdb1[0] sda1[1] sdb2[0] sda2[1] sdb3[0] sda3[1]

 76670144 blocks [2/2] [UU] 
 [=================>...] resync 

## 88.9% (68220800/76670144) finish

4.3min speed=32422K/sec unused devices:

Si vous n'avez qu'une ligne "unused devices:" c'est que la synchronisation est terminée. Votre raid est alors opérationnel.

Il existe un module dans webmin qui permet de vérifier l'état du Raid de façon détaillée.

Vos données sont maintenant un petit peu plus assurées, mais ces deux techniques sont loins d'être les seules pour ce genre de chose, alors n'hésitez pas à faire une petite recherche sur le sujet...

Chapitre suivant