L'espace... Cifiste

Parce que la terre est dure ;)

Récupérer des données d'un VG dispersé sur plusieurs disques

file_disc

Sommaire :

  1. État des lieux,
  2. Créer une image disque,
  3. L'utilitaire dd,
  4. L'utilitaire ddrescue,
  5. Montage des images,
  6. Les volumes logiques,
  7. Conclusion,
  8. Références.

État des lieux

Récemment j'ai été confronté à un problème de taille :

Mon serveur de fichier m'a lâché, avec dessus 1To de données. Alimentation HS et un disque avec des erreurs d'entrée / sortie.

Le problème aurait pu rester simple si je n'avais pas mis en place un VG éclaté sur trois disques durs dont 1 en scsi et 2 en sata.

Mais comme chaque problème à toujours sa solution sous GNU/Linux je vous propose la méthode que j'ai utilisé pour récupérer mes données.

Créer une image disque

Le premier réflexe à avoir pour tout problème concernant le stockage est de créer des images. En effet, travailler sur une image en plus d'être plus rapide, est plus sécurisé.
Si le fait de récupérer des données sur un média défecteux risque de dégrader celui-ci, l'image ne bougera pas et vous ne risquez pas de formater par erreur.

Pour cette étape, j'ai utilisé dd1 et GNU ddrescue2.

dd est réservé aux disques sains, en effet, à la première erreur celui-ci stoppera net. Mais sur un média propre je le trouve plus rapide.

ddrescue lui sera donc utilisé sur les disques contenant des erreurs. Cet outil est un peu le sauveur des médias HS. Non seulement il va continuer à créer l'image en évitant les secteurs erronés, mais en plus va tenter de les lire avec des tailles de blocs différents pour essayer de récupérer ceux-ci.

Le temps nécéssaire à la création des images sera bien-sûr en fonction de la taille de votre média. À titre d'exemple, il m'a fallut 2h pour les disques scsi en réseau, 30 minutes en local, 5 heures pour 500 gigas avec 3 secteurs HS et 8 heures pour 500 gigas avec plus de 130 secteurs HS.

L'utilitaire dd

Pour les disques scsi j'ai monté la carte sur une autre machine puis j'ai booté sur un liveUSB Fedora17. La machine de sauvegarde étant à distance je suis passé par le réseau :

Sur un terminal :

dd if=/dev/sdf | ssh user@192.168.1.x "dd of=/media/hdd/save/scsi01.img"
dd if=/dev/sdh | ssh user@192.168.1.x "dd of=/media/hdd/save/scsi02.img"

Ici, rien de compliqué : if= -> le média à sauvegarder of= -> l'image à créer. J'utilise un pipe pour envoyer les données via ssh puis dd sur la machine distante pour compléter la commande.

L'extension est accessoire et ne sert simplement qu'à se repérer plus facilement. De ce fait vous pouvez très bien ne rien mettre, sous GNU/Linux ce n'est pas un souci3 !

L'utilitaire ddrescue

Pour les disques sata avec les I/O errors, on va d'abord sauvergarder les secteurs sains du disque :

ddrescue -B -v -n /dev/sdb /media/save/seagate.img /media/save/seagate.log

Explication de la commande4 :

l'option la plus importante ici est l'option -n, elle nous permet de ne copier que les secteurs sain. Ainsi ddrescue saute tout ce qui ne va pas et crée une première image.

L'option -B permet d'avoir les tailles et dimensions en binaire

L'option -v pour avoir un affichage de ce qu'il se passe.

Le premier paramètre est le disque à sauvegarder (non monté),

Le second est l'image dans laquelle sauvegarder les données,

Afin de pouvoir travailler sur la même image il faut spécifier à l'utilitaire un fichier de log qui sera déclaré à chaque appel de la commande sur un même disque. Ce fichier enregistrera les zones défectueuses, il sera ainsi possible revenir dessus plus tard pour travailler dessus sans à avoir à tout sauvegarder de nouveau.

ddrescue -B -v -c 16 -r 2 /dev/sdb /media/save/seagate.img /media/save/seagate.log

L'option -c 16 permet de lire les secteurs corrompus par blocs de 16 secteurs (par défaut 128).

L'option -r 2 pour faire deux passes.

Si vous avez toujours des erreurs, il faut refaire une lecture de celles-ci secteur par secteur (et avec 5 passes) afin de récupérer le maximum de données, et ce autant de fois que nécéssaire pour que ddrecue vous affiche un joli "finished !".

ddrescue -B -v -c 1 -r 5 /dev/sdb /media/save/seagate.img /media/save/seagate.log

Pour mon disque contenant plus de 130 I/O erros, j'ai du le faire dix fois (donc 50 passes !) et toutes les données ont été récupérées.

Montage des images

Cette étape consiste à monter les images disque sur la machine de sauvegarde. Non pas un montage classique de système de fichiers car ça ne fonctionnerait pas avec des VG mais un montage en "bloc disque" qui se compare à une représentation d'un disque physique dans /dev afin d'avoir accès aux commandes lvm dessus. C'est à ma connaissance le seul moyen de travailler des images de volumes logiques.

Pour pouvoir monter ces images en bloc nous avons besoin de l'utilitaire losetup5 qui permet de créer des disques dur virtuels à partir d'image.

Il y a deux façon de monter l'image, la première, plus simple est disponible si le module loop n'a pas été compilé en dur dans le noyau, quand à la seconde, je ne l'expliquerai pas ici (ne l'ayant pas utilisée) je vous laisse le soin de suivre le lien dans mes références6.

Si vous avez plusieurs partitions, afin qu'elle soient toutes disponibles, il faut décharger puis charger le module loop avec les bons paramètres :

modprobe -r loop modprobe & modprobe loop max_part=63

max_part=63 demander à loop de monter jusqu'à 63 partitions d'une image (on a de quoi voir venir ;) )

Ceci fait, il ne reste qu'à monter les différentes images :

losetup /dev/loop0 /media/hdd/save/scsi01.img
losetup /dev/loop1 /media/hdd/save/scsi02.img
losetup /dev/loop2 /media/hdd/save/seagate.img
losetup /dev/loop3 /media/hdd/save/western.img

Si le besoin de vouloir des explications se faisait resentir : /dev/loop0 => la boucle ou l'on veut monter l'image disque et ensuite le chemin vers l'image concernée.

Les volumes logiques

Si tout c'est bien passé, vous devriez voir apparaitre vos disques comme non monté. Ou comme ici, voir votre groupe de volumes logiques dans /dev/mapper/

Si c'est le cas, Il ne vous reste maintenant qu'à travailler vos partitions de manière tout à fait classique avec les outils lvm7.

Pour commencer il faut scanner les disques :

pvscan

Si le groupe apparait il suffit de le charger :

vgchange -ay mongroupe

ou simplement vgchange -ay si vous n'avez qu'un groupe sur vos disques

Et il ne nous reste plus qu'à lister et monter les volumes logiques :

lvs

Puis :

mount /dev/mapper/myvol /media/source

À ce stade, les données devraient être présentes.

Conclusion

Comme d'habitude sous GNU/Linux l'impossible n'existe pas. Et avec ces utilitaires indispensables, nous pouvons facilement récupérer nos chères données !

Il faut certes un peu de temps, mais qu'est ce que sont quelques heures de travail pour nos précieuses photos de famille.

Références

1 https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html
2 https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html
3 https://fr.wikipedia.org/wiki/Extension_de_nom_de_fichier
4 http://forum.pcastuces.com/recuperation_de_donnees_sous_linux_ddrescue__tuto-f1s120710.htm?page=1
5 https://en.wikipedia.org/wiki/Loop_device
6 http://www.thegibson.org/blog/archives/467
7 https://fr.wikipedia.org/wiki/Gestion_par_volumes_logiques

Écrit le lundi 18 février 2013,3 commentaire(s).

Vous êtes accroc !

drugs

 

Si, quand vous allez à votre PC, le premier réflexe que vous avez c'est de mettre les mains sur le clavier, les 10 doigts prenant naturellement la position de frappe, avant de vous rappeler que vous avez une souris.

Si vous n'avez pas installé de splashscreen afin de vérifier le bon déroulement de votre init.

Si vous devez taper un mot de passe de plus de 10 caractères qui ressemble plus à une regex qu'à un mémo facile à retenir.

Si le premier programme lancé est un émulateur de terminal ou pire ! Un coup de [Ctrl] [Alt] [F1].

Si, la journée à peine entamée, vous êtes plus au fait des derniers commit sur votre noyau préféré que des nouvelles mesures d'austérité d'économies prises la nuit dernière dans votre pays.

Si la première chose que vous faites pendant votre pause c'est de vérifier votre boite mail / agrégateur de flux en pensant à votre dernier projet perso qui va surement peupler /dev/null dans quelques semaines.

Si, quand vous devez faire des manipulation fastidieuses dans votre /home pour retrouver les photos, musiques, que sais-je, afin de générer truc bidule, vous préférez faire un .sh qui vous aura pris autant de temps que de traiter à la main, qui ne vous servira qu'une fois, mais... On ne sait jamais.

Si, au moment ou vous envoyez un mail, il vous arrive de vous imaginer le chemin que celui-ci va parcourir: de votre client en passant par votre serveur postfix, switch, routeur, les entrailles de votre FAI, etc ...

Si, quand votre moitié / ami(e) vous demande de lui envoyer un fichier, le premier réflexe que vous avez c'est d'ouvrir un terminal et de taper scp ...  [ctrl][shift][d] "Rhaaaa ! Il est sous Windows ! Elle est ou cette fichue clé USB" !

Si quand vous décidez de regarder un film sur votre PC branché à la TV, vous vous rendez compte que le dernier pilote nouveau / radeon fait encore des siennes car vous avez voulu tester une feature de votre GPU uniquement disponible dans la version BETA de la branche testing la semaine dernière, en vous promettant de tout remettre en ordre après les tests.

Si, quand vous êtes au téléphone avec un technicien car votre connexion internet est en panne, c'est vous qui lui donnez le type de panne avec le code d'erreur et lui expliquez les procédures qu'il doit engager suivant le cahier des charges de votre FAI.

Si, quand vous jouez à un jeu vidéo, vous comprenez qu'il est scripté et résultat des courses vous ne vous faites plus toucher car vous savez exactement ce qui va arriver et quand (ou alors vous y allez comme un gros bourrin parce que vous vous dites qu'il n'y a pas que les autres qui doivent mourir).

Si, quand vous passez devant votre modem / point d'accès, vous vous dites qu'il y a quelque chose de louche car la led "ACT" clignote frénétiquement alors que vos serveurs ne transmettent pas de paquets par cette route et que votre PC est éteint.

Si, pendant une série ou un film, vous ne pouvez pas vous empêcher de faire l'inventaire de tout le matériel High Tech présent allant parfois même jusque énoncer à haute voix les numéros de version.

Si, dans une soirée avec des gens lambda, vous n'arrivez pas obtenir l'adhésion de l'assemblée sur le bienfait de la GPLv3 et du matériel open source, juste parce que l'hôte vous a fait part de son mécontentement au sujet de sa machine à café dernier cri tombée en panne au lendemain de la garantie.

Si, quand vous prenez de l'argent au guichet, vous n'êtes pas rassuré car la machine qui vous donne vos billet tourne sous windows.

Si votre entourage est persuadé que vous êtes un hacker comme dans matrix alors que vous codez simplement une commande en PHP / Python etc... sur votre SublimeText2 avec le thème Monokai.

Si, parfois quand vous vous couchez, vous trouvez la solution à un bug qui vous a bloqué toute la journée.

Si, à 3 heures du matin vous vous dites "encore 5 minutes et je me couche" et ce depuis trois heure.

Si, quand vous êtes obligé d'arrêter votre PC en appuyer sur le bouton pendant 30 secondes, vous vous imaginez les têtes de votre disque crasher lamentablement et vous souffrez.

Si, vous remplissez au moins 80% de ces contextes.

Vous n'êtes pas seul (mais ça ne se soigne pas ;) ).

Écrit le jeudi 31 janvier 2013,0 commentaire(s).

Faire prendre la mayonnaise

microscope

 

Le site avance doucement.

Je partage en paralèlle quelques article / lien que je met ici sur mon profil google+ ainsi, le jour ou je décide de basculer définitivement sur le blog, il n'y aura qu'à supprimer le profil google+.

Mais avant il y a encore du travail ici !

Je pense ajouter un module de statistiques prochainement. Comme ça pas de service tiers (je n'en met aucun) et par la même aucune dépendance de quoi que ce soit.

Si vous voyez des bugs n'hésitez ma à me le noter en commentaire (certains sont connus mais le manque de temps fait qu'ils sont corrigé lentement).

Autre chose, si vous constatez des indisponibilités sur le site, c'est normal car souvent je teste des nouvelles choses et parfois ça plante ;) En théorie, j'ai testé sur le serveur de dev mais parfois un oubli et hop, page blanche !

@ bientôt !

Écrit le lundi 14 janvier 2013,0 commentaire(s).

Nems de colin au vin blanc

cube

 

Recette faite à l'Actifry qu'on a eu pour Noël, rapide, pratique et diététique.

Pour le temps de cuisson au four, il faut que les feuilles de bricks soient croustillantes.

Pour 4 personnes :

2 grosses pommes de terre,
2 courgettes moyennes,
1 oignon de Roscoff,
400g de colin,
10cl de « soja cuisine » (remplaçant de la crème fraîche),
Feuilles de brick,
½ verre de vin blanc,
1 cuillère à soupe d'huile d'olives,
2 jaunes d’œuf,
Sel,
Poivre du moulin.

Note : n'hésitez pas à prendre des légumes bio, le gout n'en sera que meilleur !

Préparation : 30 minutes,
Cuisson : 35 minutes.

Coupez les pommes de terre et les mettre à cuire (sans sel). Pendant ce temps, coupez les courgettes en dés, émincez l'oignon finement et réservez.

Hachez le colin et retirez les pommes de terre de la cuisson quand elles sont moelleuses.
Dans une poêle, versez l'huile d'olive et une fois celle-ci bien chaude, ajoutez le oignons mélangez puis laissez cuire 5 minutes à feu moyen.

Mettez y ensuite les dés de courgette, mélangez pendant 2 minutes, puis le vin blanc tout en mélangeant. Laissez cuire 5 minutes.

Ajoutez le colin et les pommes de terre, salez légèrement, poivrez bien (environ 4 tours d'un grand moulin) mélangez et laissez cuire encore 10 minutes. 5 minutes avant la fin de la cuisson incorporez au mélange le « soja cuisine ».

La cuisson terminée, coupez 10 feuilles de brick en rectangle d'environ 15 centimètres.
Badigeonnez l'intérieur de chaque feuille de jaune d’œuf avec un pinceau et remplissez les sur la largeur d'une bonne cuillère à soupe de la garniture. Roulez les, pliez les sur les côtés, mettez les sur le plateau de l'Actifry et réservez de nouveau.

10 minutes avant le repas, mettez le plateau à cuire dans l'Actifry pendant 8 minutes.

Mangez les et régalez vous :D

Écrit le mardi 8 janvier 2013,0 commentaire(s).

renaître de ses cendres

light

 

Je trouve que le titre colle parfaitement à ce billet.

En effet, j'ai maintenu un blog pendant quelques temps. D'abord motorisé par mes soins, avant de vraiment connaître le PHP, puis par wordpress. Mais comme d'habitude, je ne suis satisfait que par mon travail !

Ayant eu l'opportunité de créer ma société, j'ai créé un système permettant de faire ce que l'on veut de son espace web (pour peu que l'on veuille bien écrire le module correspondant ;) ).

Ce qui tourne actuellement est donc composé des modules suivants :

- blog,

- pages,

- partenariats,

- commentaires,

- tags.

Mais revenons à l'essentiel, le blog.

À terme, je compte changer le design, celui-ci est celui de mes présentations et bien sur je ne suis pas designer ;). Je pense aussi modifier le module de blog afin d'intégrer un système de type shaarli.

Peut-être qu'un jour je quitterai alors google+

Ne voyez pas mon blog comme une volonté de prêcher la bonne parole, non, simplement mon petit bout d'internet à moi, juste pour mettre quelque part (ailleurs que sur le minitel 2.0) mes trouvailles, mes recettes et mes bouts de code.

Sur ce, je m'en vais finir ce que j'ai à faire en backend, afin que tout soit prêt !

@ bientôt !

Écrit le lundi 7 janvier 2013,0 commentaire(s).