fsck: Options pour la vérification la plus complète du disque

12

J'ai un disque avec un problème connu (je le sais parce que dd gags quand j'essaye de le cloner). Mais lorsque je démarre avec un CD live et que j'exécute fsck sur la partition non montée, j'obtiens ceci:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf1
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
/dev/sdf1: clean, 227091/9625600 files, 12789815/38497756 blocks

une milliseconde plus tard. Il est difficile de croire qu'il a vérifié l'intégralité du disque dur en quelques secondes.

Je ne sais pas non plus si je devrais être fsck'ing sdf1 ou tout le disque physique sdf. Lorsque j'essaie le lecteur entier:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext2: Device or resource busy while trying to open /dev/sdf
Filesystem mounted or opened exclusively by another program?

Ce que je ne comprends pas car aucune des partitions ne semble montée (je viens de démarrer à partir d'un CD live et d'exécuter la commande).

Donc, ma question de base est: comment puis-je faire en sorte que fsck (ou un autre outil qui fonctionne mieux) passe plus d'une milliseconde à analyser mon disque problématique?

Fred Hamilton
la source

Réponses:

14

Tout d'abord, vous avez raison d'exécuter fsck sur la partition - fsck ne fonctionne que sur les systèmes de fichiers, pas sur des disques entiers. Vous pouvez obtenir une liste de toutes les partitions sur le disque avec fdisk -l /dev/sdd.

Votre type de système de fichiers est probablement ext3 (la valeur par défaut dans la plupart des distributions Linux), ce qui signifie qu'il passera généralement un fsck tant que son journal sera propre. fsck -fcomme mentionné ci-dessus, forcera un contrôle complet.

Cependant, si vous avez lu des erreurs sur le disque, aucune quantité de fsck n'aidera dd - puisque dd ne se soucie vraiment pas du contenu du disque.

Pour que dd lise le disque et continue sur les erreurs de lecture, utilisez dd conv=noerror,sync, qui continuera sur les erreurs de lecture et ajoutera des octets nuls à n'importe quel bloc en cas d'erreur de lecture.

Une fois la sauvegarde terminée, vous devez exécuter fsck -fle clone pour le réactiver.

Un autre conseil: si vous sauvegardez la partition dans un fichier, vous pouvez la monter en boucle avec mount -o loop filename.ext3 /mountpoint. Supposons également que vous cloniez une partition 200G sur un lecteur 500G, vous pouvez ensuite l'exécuter resize2fs /dev/sdx1(où sdx est votre nouveau lecteur, partitionné avec une seule partition 500G), et le système de fichiers sera redimensionné à 500G.

Enfin, si le disque est dans une forme telle qu'il vous donne des erreurs de lecture, je vous conseillerais d'éviter d'éteindre et de rallumer le disque jusqu'à ce que vous ayez terminé de récupérer les données. Dans certains modes de défaillance, le disque à un moment donné ne tournera plus ou ne sera plus reconnu par le système d'exploitation, et à ce stade, la récupération des données du lecteur devient assez coûteuse.

Kristian
la source
J'ai essayé "dd conv = noerror, sync", mais le disque cloné résultant n'était pas démarrable. Ce qui est frustrant, car le disque de démarrage fonctionne bien, fscks bien, mais je ne peux pas le cloner sur un autre disque car le disque a 1 mauvais bloc (où il n'y a apparemment aucune donnée). J'ai l'impression d'être coincé ...
Fred Hamilton
N'oubliez pas qu'il peut y avoir d'autres raisons pour lesquelles le disque n'était pas amorçable (problèmes différents de géométrie de disque et de MBR / chargeur de démarrage). Si vous pouvez d'abord confirmer que le système de fichiers sur le nouveau disque est OK, vous pouvez alors démarrer sur le système en utilisant le mode de secours à partir du CD d'installation, en mettant à jour le chargeur de démarrage GRUB, etc. exécutez d'abord fsck -f / dev / sdx1, puis essayez de monter le système de fichiers avec mount / dev / sdx1 / mnt - remplacez le x par la lettre de lecteur appropriée.
Kristian
Excellente suggestion, mais lorsque j'ai exécuté fsck -f sur la partition clonée, j'ai eu littéralement des centaines d'erreurs (blocs illégaux dans les inodes, bits de compression définis sur un système de fichiers sans prise en charge de la compression, mauvais blocs d'attributs étendus, etc.) avant de concéder que le dd le clone a été totalement arrosé ... Je ne sais pas quoi faire ensuite ... Je suppose que je vais essayer de copier tous les fichiers sur une partition propre ... Merci quand même.
Fred Hamilton
4
Il vaut mieux utiliser ddrescue (ou dd_rescue + dd_rhelp) que dd; il est plus intelligent de gérer les erreurs, de réessayer les secteurs qui ont eu des erreurs. gnu.org/software/ddrescue/ddrescue.html kalysto.org/utilities/dd_rhelp/index.en.html garloff.de/kurt/linux/ddrescue
freiheit
1
La vérification la plus complète du disque (avec tous les correctifs automatisés si possible) pour la partition racine ext2, ext3 ou ext4 est exécutée comme suit: (1) démarrage à partir du support de secours (la partition racine doit être démontée), (2) exécution e2fsck -f -cc -D -p. Cela effectue une vérification forcée avec une vérification en lecture-écriture non destructive du support et répare tous les problèmes détectés qui peuvent être résolus en toute sécurité. Cela peut prendre quelques jours pour un disque dur de 2 To ...
Mikko Rantalainen
10

Cela peut ne pas être pertinent dans votre cas, mais j'ai pensé que je le mentionnerais quand même:

Pour une vérification de disque de niveau inférieur, vous pouvez utiliser l' badblocksutilitaire. Il passe par un appareil et signale tout bloc défectueux (il ne peut rien réparer, bien sûr). C'est utile, au moins, pour vérifier si un disque est physiquement endommagé.

e2fsckPeut également être utilisé badblockspour éviter que de mauvais blocs soient utilisés par un système de fichiers. Du e2fsckmanuel:

  -c     This option causes e2fsck to use badblocks(8) program to do a  read-
         only scan of the device in order to find any bad blocks.  If any bad
         blocks are found, they are added to the bad block inode  to  prevent
         them from being allocated to a file or directory.  If this option is
         specified twice, then the bad block scan will be done using  a  non-
         destructive read-write test.
Jonik
la source
Notez également fsck_hfs -sque les blocs défectueux seront analysés.
awiebe
5

Vous voulez que l'option -f fsck (Force la vérification même si le système de fichiers semble propre.)

Vous devez exécuter fsck en mode mono-utilisateur. Un moyen facile de le faire sans démarrage de cdrom en direct est de redémarrer avec l'option -F.

shutdown -rF now 
Richard Hoskins
la source
Merci, mais une question: si je redémarre avec l'option -F à l'aide d'un CD live, comment le live CD sait-il qu'il était censé exécuter la vérification? C'est un CD, il n'a pas de mémoire que je sache ...
Fred Hamilton
Je ne pense pas que vous ayez besoin de le faire à partir du CD live. Il suffit de démarrer à partir du live cd et d'exécuter fsck sur la partition non montée avec l'option -f (force) incluse. OU, vous pouvez redémarrer à partir de votre disque dur avec shutdown -rF. Cela forcera un fsck avant le montage du système de fichiers.
Richard Hoskins
En fait, il fera le fsck en mode mono-utilisateur. J'ai édité ma réponse.
Richard Hoskins
1
Le -Fdrapeau de shutdownn'est généralement pas officiellement documenté (voir man shutdownet shutdown --helpremarquer qu'il n'est pas là), vous ne pouvez donc pas lui faire confiance pour qu'il fonctionne. Parfois, c'est un no-op. Officiellement, la seule méthode pour analyser la partition racine est de démarrer à partir d'un autre média.
Mikko Rantalainen