10 votes

Comment identifier et réparer les fichiers dont les blocs de disque sont corrompus ou inaccessibles ?

J'ai un Macbook Pro de fin 2011, fonctionnant sous Mavericks 10.9.2. Son seul disque dur est un disque de 750 Go, formaté avec Bootcamp. Il fonctionne encore raisonnablement bien, mais en exécutant une passe de défragmentation sur lui, j'ai identifié qu'il y a un tas de fichiers qui refusent d'être déplacés par le défragmenteur (iDefrag).

iDefrag rapporte un code d'erreur POSIX de 5 lors de l'accès aux fichiers. En choisir un au hasard et essayer de copier le fichier à un autre emplacement dans le shell signale également une erreur, ce qui me fait penser que le problème est réel et qu'il se situe au niveau du disque / FS. La sortie de cp est :

cp: unity_nophysx.nexe: Input/output error

Le code d'erreur 5 est "accès refusé" pour autant que je sache, mais le processus de défragmentation est exécuté en tant qu'administrateur et l'exécution de cp en utilisant sudo sur le fichier suspect ne fait aucune différence.

Disk Utility, fsck et Apple Hardware Test affirment tous que le disque est en bon état. Aucune erreur SMART n'a été signalée, et bien qu'il y ait eu quelques erreurs de permissions, elles ne concernaient pas les fichiers dont iDefrag se plaint, et Disk Utility affirme les avoir corrigées sans se plaindre.

Il y a peut-être une centaine de fichiers corrompus ou plus, mais cela ne représente qu'une très petite fraction du disque. Pour autant que je puisse dire, aucun fichier système ou données cruciales ne sont affectés. Bien qu'il serait agréable de récupérer les données, cela ne me dérange pas de réinstaller ou d'utiliser des sauvegardes. À ce stade, je ne sais pas si c'est vraiment le disque qui meurt, si ce ne sont que des secteurs défectueux dus au fait que le disque a été déplacé pendant l'écriture, ou si c'est une autre corruption mineure qui peut être contournée. Je suppose que c'est le pire des cas, et qu'il est fort probable que je doive acheter un disque dur légèrement plus grand et cloner le disque existant pour éviter de devoir reconstruire le système.

Ma question est vraiment comment faire pour marquer ces fichiers cassés comme étant correctement cassés et les réparer ou les purger ? afin qu'un clone du disque réussisse et ne soit pas bloqué par des fichiers ou des blocs auxquels il ne peut pas accéder. L'utilitaire de disque ne voit pas le problème, et je ne connais pas de ligne de commande ou d'outil tiers qui puisse faire le travail. Je ne veux pas effacer le disque entier et repartir de zéro, car le disque semble sain par ailleurs, je cherche donc des outils de réparation / diagnostic.

9voto

Rich Points 2429

Si vous êtes face à un système de fichiers sain au niveau de sa structure et que vous voulez trouver les fichiers qui ont des blocs défectueux sur le disque, voici comment je procéderais :

  1. Faites une sauvegarde complète de votre disque avec Time Machine o Carbon Copy Cloner

    Vérifiez cette sauvegarde.

  2. Exécutez la commande suivante, lourde et risquée (au cas où vous auriez des blocs défectueux en dehors de la structure de votre système de fichiers) (assurez-vous que le {} est cité pour que les noms de fichiers contenant des espaces fonctionnent) :

    find / -type f -print -exec dd if="{}" of=/dev/null bs=1m \;

Ce lourd find imprimera le nom de n'importe quel fichier ordinaire (sans le lire, mais seulement son entrée dans le répertoire) et continuera ensuite à lire rapidement tous ses blocs de données.

Lors de l'accès au premier fichier contenant des blocs défectueux, cette fonction find fera en sorte que le noyau enregistre read error sur /var/log/system.log et il ralentira ou arrêtera complètement votre système. Cela dépendra principalement de la capacité du disque dur à déplacer les blocs défectueux trouvés sur son pool interne dédié à cette tâche de réparation habituelle. Ce fichier contenant les mauvais blocs sera le dernier nom imprimé par find .

Notez ce nom de fichier sur une feuille de papier ! Disons que ce nom de fichier est :

/.DocumentRevisions-V100/.cs/ChunkStorage/0/0/0/9

A ce stade, vous pouvez avoir la possibilité de tuer find rapidement en frappant ctrl + C . Si le fait de le tuer gentiment échoue, faites planter votre Mac.

Au redémarrage de votre Mac, vérifiez directement le fichier contenant les mauvais blocs :

dd if='/.DocumentRevisions-V100/.cs/ChunkStorage/0/0/0/9' of=/dev/null bs=1m

Si la commande se termine correctement, alors l'erreur était suffisamment légère pour que votre disque soit capable de lire ce fichier et de réallouer les blocs défectueux.

  • Si la commande ne se termine pas, vous ne pourrez pas la tuer. normalement, vos données sont totalement perdues, et vous devrez planter votre Mac une fois de plus.

Dans ce dernier cas, vous devez envisager de remplacer votre disque et de travailler à partir de vos dernières sauvegardes. D'autres fichiers peuvent également contenir des blocs défectueux et peuvent être passés inaperçus depuis longtemps tant que vous ne les avez pas lus.

Le noyau ne déclenchera pas une erreur de lecture sur un bloc que vous n'avez jamais lu.

5voto

Matt Points 881

Redémarrez en mode utilisateur unique en maintenant la touche Command + S pendant le démarrage. Lorsque vous voyez une invite (qui devrait ressembler à root # ou quelque chose de similaire), tapez fsck -f et appuyez sur Return . Il s'agit de l'outil intégré de vérification de la cohérence du système de fichiers du Mac, qui vous permet de trouver et de réparer les erreurs du système de fichiers de démarrage. Exécutez cette commande jusqu'à ce que vous ne voyiez plus **The volume [volume name] was modified.** ou l'outil échoue trois fois de suite.

Si l'outil échoue, cela peut être le signe d'un problème plus important (mais je ne pourrais pas vous dire lequel sans voir le résultat de l'outil). Dans tous les cas, assurez-vous d'avoir sauvegardé tout ce que vous pouvez avant de lancer un outil disque. Lorsque vous avez terminé, tapez reboot dans l'invite et appuyez sur Entrée pour (vous l'avez deviné !) redémarrer votre ordinateur.

Pour plus d'informations, vous pouvez trouver les pages du manuel fsck ici .

2voto

Adam Points 49

Je recommande vivement DiskWarrior pour reconstruire les catalogues de disques et pour recherche de fichiers potentiellement endommagés .

Pendant la reconstruction du catalogue, il peut également vous informer s'il subit un retard dû à un dysfonctionnement du disque.

2voto

awiebe Points 299

À partir de la réponse de Buscar, vous pouvez faire cela automatiquement en utilisant une ligne de commande assez lourde.

sudo find / -type f -print0  | xargs -0 -I{} dd if='{}' of=/dev/null bs=1m 2>&1 | grep 'error' >>badfiles.txt  & 
  • sudo:Mode administrateur
  • find -print0 : chemin absolu
  • xargs -0 -I{} : remplace {} dans la commande suivante
  • dd 2>&1 : redirige l'erreur std vers stdout
  • pipe stdout vers grep pour chercher une erreur de chaîne de caractères
  • Ajouter les résultats à un fichier liste.( note : Ceci devrait être sur un support externe si vous pensez que votre disque interne est douteux).

1voto

Ruskes Points 44895

Comme vous le dites, il n'est même pas certain que ces fichiers soient endommagés, du moins votre Mac ne le pense pas.

Chaque système d'exploitation crée des fichiers inamovibles qui sont nécessaires à ses opérations (points de restauration, fichiers actuellement actifs, etc.). Certains défragments les montrent, d'autres non.

Le fait que vous ne puissiez pas y accéder ou les déplacer ne signifie pas qu'ils sont endommagés.

Normalement, les Mac's prennent très bien soin d'eux-mêmes.

L'utilisation de la maintenance d'Apple se fait de la manière suivante : ouvrez le Terminal et tapez :

sudo periodic daily weekly monthly 

suivi de Return, saisissez votre mot de passe d'administrateur, et OS X s'occupera de tout pour vous.

Regardez dans la Console pour les rapports sur ceux-ci si vous êtes intéressés.

Dans la console, recherchez les erreurs d'E/S qui pourraient indiquer que votre disque commence à avoir des problèmes, pour compléter les résultats de l'utilitaire de disque et de fsck.

À l'occasion, j'utilise un outil gratuit appelé OnyX pour une tâche d'entretien supplémentaire. Il est fabriqué par des Français et comme ils le disent, il est tout simplement génial :)

OnyX est un utilitaire multifonctions pour OS X qui permet de vérifier le disque de démarrage et la structure de ses fichiers système, d'exécuter diverses tâches de maintenance du système, de configurer certains paramètres cachés du Finder, du Dock, de QuickTime, de Safari, de Mail, d'iTunes, de la fenêtre de connexion, de Spotlight et de nombreuses applications Apple, de supprimer les caches, de supprimer un certain nombre de fichiers et de dossiers qui peuvent devenir encombrants, et plus encore.

Cela dit, je ne remets pas en cause votre décision d'utiliser le défragmenteur (iDefrag) puisque je ne le connais pas, mais je vous propose plutôt des solutions alternatives.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X