6 votes

APFS: l'arborescence de fsroot est invalide après la sauvegarde Time Machine - comment récupérer et éviter à l'avenir?

Système

MacBook Pro, fin 2013, 1 To SSD (tout neuf, récemment remplacé par Apple), APFS (non journalisé, insensible à la casse), High Sierra 10.13.2, Time Machine vers HDD réseau.

Qu'est-il arrivé

  • Le Mac a cessé de fonctionner, aucun espace disponible sur le périphérique.
  • Le redémarrage a échoué.
  • Essayé de démarrer en mode récupération avec Commande-R et de exécuter First Aid à partir de l'Utilitaire de disque - échec, car apparemment le système de récupération réside également sur le même disque ce qui rend impossible fsck sur APFS.
  • Essayé de supprimer manuellement certains fichiers via rm, obtenu aucun espace disponible sur le périphérique
  • Essayé de tronquer manuellement certains fichiers via cat /dev/null > somefile, obtenu aucun espace disponible sur le périphérique
  • Démarré en mode récupération avec Maj-Commande-R (télécharge le système depuis Internet) et exécuté First Aid à nouveau. Cette fois-ci avec un succès limité :

    ** Vérification du volume.
    ** Vérification du superblock du conteneur.
    ** Vérification de l'enregistrement de démarrage EFI.
    ** Vérification du gestionnaire d'espace.
    ** Vérification de la carte des objets.
    ** Vérification du superblock du volume APFS.
    ** Vérification de la carte des objets.
    erreur : taille de dstream invalide (10730881024), est supérieure à dstream.alloced_size (71151616)
    erreur : xf : INO_EXT_TYPE_DSTREAM : dstream invalide
    erreur : inode_val : objet (oid 0x16309a1) : xfields invalides
    ** Vérification de l'arbre fsroot.
       l'arbre fsroot est invalide.
    ** Le volume /dev/rdisk2s1 n'a pas pu être totalement vérifié.

Apparemment, l'arbre fsroot est invalide. J'ai cherché, mais je n'ai pas pu trouver de conseils utilisables sur la façon de résoudre ce problème (à part bien sûr, reformater et restaurer à partir de la sauvegarde, ce que j'aimerais éviter).

Informations complémentaires

Sur le système se trouve une machine virtuelle Windows Parallels avec un disque dur virtuel de 100 Go (oui, un seul gros fichier), qui a été récemment utilisé (donc une sauvegarde était nécessaire). La dernière fois que j'ai utilisé l'ordinateur, environ 20 Go étaient encore libres sur le SSD macOS. Pendant une journée environ, les sauvegardes Time Machine n'ont pas été terminées, mais aucun message d'erreur n'a été affiché. Lorsque le problème est survenu, j'ai laissé la machine allumée toute la nuit pour effectuer une sauvegarde Time Machine incrémentielle. La connexion ici est que Time Machine utilise apparemment des instantanés APFS. Je soupçonne que c'est la cause profonde de ce désordre.

Questions

  1. Y a-t-il un moyen de résoudre ce problème (sans reformater et restaurer à partir de la sauvegarde) ?
  2. Quelle est la meilleure façon d'éviter cela à l'avenir (en particulier en ce qui concerne Time Machine) ?

Merci.

Mise à jour

Lors de l'exécution de fsck_apfs avec le drapeau de débogage -d, la sortie contient un peu plus d'informations :

** Vérification du volume.
** Vérification du superblock du conteneur.
** Vérification de l'enregistrement de démarrage EFI.
** Vérification du gestionnaire d'espace.
** Vérification de la carte des objets.
** Vérification du superblock du volume APFS.
** Vérification de la carte des objets.
erreur : taille de dstream invalide (10730881024), est supérieure à dstream.alloced_size (71151616)
erreur : xf : INO_EXT_TYPE_DSTREAM : dstream invalide
erreur : inode_val : objet (oid 0x16309a1) : xfields invalides
obj-id: 23267745 type: Inode      
id-privé: 23267745 parent-id: 12896552 cr/mtime: 1515089959653928186/1515090145416398252 
classe-de-prot-définie: 0 
uid/gid/mode: 0/0/0x8180 bsd_flags: 0x0 internal_flags: 0x8280 nom: NO-NAME
** Vérification de l'arbre fsroot.
   l'arbre fsroot est invalide.
** Le volume /dev/disk2 n'a pas pu être totalement vérifié.

5voto

CWoods Points 151

Je viens de rencontrer un problème similaire. Il est probable que vous auriez trouvé que le problème se trouvait dans l'un des fichiers de la machine virtuelle Parallels - du moins, c'était le coupable dans mon cas. Votre vérification fsck_apfs -d /disk/ a renvoyé :

obj-id: 23267745 type: Inode

Si vous aviez ouvert le terminal, vous auriez pu obtenir le chemin du fichier (ou des fichiers) utilisant cet inode en utilisant la commande suivante :

find / -inum 23267745

À partir de là, vous auriez su quels fichiers devaient être restaurés au lieu de faire une restauration complète.

Dans mon cas, le fichier de la machine virtuelle n'était disponible que dans la capture instantanée car j'excluais mes machines virtuelles de TimeMachine. J'ai juste restauré ce fichier à partir d'une capture instantanée antérieure et j'ai pu aller plus loin avec fsck_apfs - il a vérifié la terminé la vérification des instantanés puis a planter sur le même fichier dans la 2ème capture. Heureusement, les instantanés ne sont conservés que pendant au plus 24 heures donc cela devrait s'arranger après ce point.

Votre expérience peut varier cependant car cela pourrait être aussi "simple" qu'un fichier ou juste la partie visible de l'iceberg.

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