Outils pour utilisateurs

Outils du site


4._a_sauvegarde_de_donnees_et_raid

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 fiable.

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 :

  • hôte_ftp : l'adresse du serveur ftp (ftpperso.free.fr par exemple)
  • u : option qui permet de spécifier les informations d'authentification. Si vous ne voulez pas les rentrer à chaque fois que le script s'exécute, elle est nécessaire.
  • utilisateur : votre login de connexion
  • mdp : votre mot de passe
  • e : option suivi d'une ou plusieurs commandes séparées par un point virgule (ex: “commande_1 ; commande_2 ; bye” )ftp à exécuter entre guillemets.
  • mirror -R –onlynewer : la commande mirror permet d'utiliser l'option –onlynewer. Celle-ci indique qu'il ne faut copier sur le ftp que les fichiers plus récents et économise donc du temps machin et de la bande passante.

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

  • /chemin/en/local/dossier : chemin absolu du dossier à copier sur le serveur.
  • /chemin/sur/le/ftp : chemin absolu de la destination du fichier sur le ftp distant.

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 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 :

  • Taille : 120 Mo
  • Utiliser comme: Volume physique pour Raid
  • Type : Primaire
  • Emplacement : début
  • Point de montage : n/a
  • Indicateur d'amorçage : présent

Partition 2 :

  • Taille : Double de votre mémoire vive
  • Utiliser comme: Volume physique pour Raid
  • Type : Logique
  • Emplacement : début
  • Point de montage : n/a
  • Indicateur d'amorçage : absent

Partition 3 :

  • Taille : 2 à 10 Go en fonction de votre capacité de stockage ( + = mieux )
  • Utiliser comme: Volume physique pour Raid
  • Type : Logique
  • Emplacement : début
  • Point de montage : n/a
  • Indicateur d'amorçage : absent

Partition 4 :

  • Taille : Reste du disque
  • Utiliser comme: Volume physique pour Raid
  • Type : Primaire
  • Emplacement : début
  • Point de montage : n/a
  • Indicateur d'amorçage : absent

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.

5. 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

2013/11/05