Que fait fsck -p (preen) sur ext4?

16

Je lisais un article de blog sur la réparation du système de fichiers et l'auteur a posté une bonne question… fsck -pest censé corriger automatiquement les erreurs mineures sans intervention humaine. Mais que va-t-il résoudre exactement quand on lui dit de lisser le système de fichiers? Quelles erreurs va-t-il corriger et qu'est-ce qui le fera s'arrêter et dire à l'utilisateur qu'il doit exécuter fsck de manière interactive? Y a-t-il une liste quelconque?

J'ai fait des recherches sur Google et tout ce que je trouve, c'est la page de manuel, qui ne dit pas vraiment ce qui -pva être corrigé ou ce qui déclenche le drapeau pratique. Je suis spécifiquement intéressé par le système de fichiers ext4.

Bart Silverstrim
la source

Réponses:

18

La réponse à votre question réside dans le e2fsck/problems.cfichier du code source e2fsprogs . La recherche du PR_PREEN_OKdrapeau devrait vous aider à démarrer.

Comme la gestion complète des erreurs est un peu plus complexe, en raison de la multitude de conditions d'erreur différentes qui peuvent survenir, il est conseillé de regarder de plus près le code si vous êtes préoccupé par un cas spécifique. Cependant, les listes ci-dessous ont été extraites des commentaires des conditions d'erreur et devraient vous donner un aperçu approximatif des effets du mode preen.

Les erreurs / avertissements suivants sont actuellement traités automatiquement lorsque l' -pindicateur est spécifié:

  • Relocaliser l'indice
  • L'inode de journal n'est pas valide
  • Le superbloc du journal est corrompu
  • Le drapeau de superbloc has_journal est clair mais a un journal
  • L'indicateur Superblock needs_recovery est défini mais aucun journal n'est présent
  • La révision du système de fichiers est 0, mais les indicateurs de fonctionnalité sont définis
  • Astuce Superblock pour superblock externe
  • descripteur de groupe N marqué non initialisé sans jeu de fonctionnalités.
  • bitmap du bloc N du groupe non initialisé mais bitmap inode utilisé.
  • Le descripteur de groupe N a un nombre d'inodes inutilisé non valide.
  • Bitmap du dernier bloc de groupe non initialisé.
  • L'indicateur test_fs est défini (et ext4 est disponible)
  • Le dernier montage est dans le futur (truqué)
  • La dernière heure d'écriture est dans le futur (truquée)
  • La somme de contrôle du groupe de blocs (question de verrouillage) n'est pas valide.
  • Le répertoire racine a défini dtime
  • L'inode réservé a un mauvais mode
  • L'inode supprimé a zéro dtime
  • Inode en cours d'utilisation, mais dtime défini
  • Répertoire de longueur nulle
  • Inode a une i_size incorrecte
  • Inode a des i_blocks incorrects
  • Superbloc incorrect dans le groupe
  • Descripteurs de groupe de blocs incorrects dans le groupe
  • Bloc revendiqué sans raison
  • Erreur lors de l'allocation des blocs pour déplacer les métadonnées
  • Erreur lors de l'allocation du tampon de bloc pendant le processus de relocalisation
  • Déplacement des informations du groupe de métadonnées de X vers Y
  • Déplacement des informations du groupe de métadonnées vers X
  • Erreur de lecture de bloc pendant le processus de relocalisation
  • Erreur d'écriture de bloc pendant le processus de relocalisation
  • Indicateur immuable défini sur un inode de périphérique ou de socket
  • Taille non nulle pour l'appareil, le fifo ou l'inode de socket
  • La révision du système de fichiers est 0, mais les indicateurs de fonctionnalité sont définis
  • L'inode de journal n'est pas utilisé, mais contient des données
  • Le journal a un mauvais mode
  • Indicateur INDEX_FL défini sur un système de fichiers non HTREE
  • Indicateur INDEX_FL défini sur un non-répertoire
  • Noeud racine non valide dans le répertoire HTREE
  • Version de hachage non prise en charge dans le répertoire HTREE
  • Indicateur incompatible dans le nœud racine HTREE
  • HTREE trop profond
  • inode invalide-> i_extra_isize
  • entrée ea invalide-> e_name_len
  • entrée ea invalide-> e_value_offs
  • entrée ea invalide-> e_value_block
  • entrée ea invalide-> e_value_size
  • entrée ea invalide-> e_hash
  • inode manquant EXTENTS_FL, mais est un inode d'étendue
  • Inode ne doit pas avoir EOFBLOCKS_FL défini
  • L'entrée du répertoire a supprimé ou inutilisé l'inode
  • Type de fichier d'annuaire non défini
  • Type de fichier de répertoire défini sur le système de fichiers
  • Noeud racine HTREE non valide
  • Limite HTREE non valide
  • Nombre HTREE non valide
  • Le nœud intérieur HTREE a des hachages hors service dans le tableau
  • Inode trouvé dans le groupe où _INODE_UNINIT est défini
  • Inode trouvé dans la zone inodes du groupe inutilisé
  • i_blocks_hi doit être nul
  • / perdu + trouvé introuvable
  • Inode de longueur nulle non attaché
  • Inode ref count incorrect
  • Le remplissage à la fin du bitmap d'inode n'est pas défini.
  • Le remplissage à la fin du bitmap n'est pas défini.
  • Bloquer l'en-tête des différences de bitmap
  • Bloc non utilisé, mais marqué dans le bitmap
  • Bloc utilisé, mais non marqué comme utilisé dans le bitmap
  • Fin des différences de bitmap
  • En-tête des différences de bitmap d'inode
  • Inode non utilisé, mais marqué dans le bitmap
  • Inode utilisé, mais non marqué comme utilisé dans le bitmap
  • Fin des différences de bitmap d'inode
  • Le nombre d'inodes libres pour le groupe est incorrect
  • Les répertoires comptent pour le groupe incorrect
  • Les inodes libres comptent mal
  • Les blocs libres comptent pour le groupe incorrect
  • Les blocs gratuits comptent mal
  • Plage de blocs non utilisée, mais marquée dans le bitmap
  • Plage de blocs utilisée, mais non marquée comme utilisée dans le bitmap
  • Plage d'inodes non utilisée, mais marquée dans le bitmap
  • Plage d'inodes utilisée, mais non marquée comme utilisée dans le bitmap
  • Groupe N bloc (s) en cours d'utilisation mais le groupe est marqué BLOCK_UNINIT
  • Inode (s) du groupe N en cours d'utilisation mais le groupe est marqué INODE_UNINIT
  • Recréer le journal si l'indicateur E2F_FLAG_JOURNAL_INODE est défini

Les conditions d'erreur suivantes provoquent l'abandon du processus fsck non interactif, même si l' -pindicateur est défini:

  • Bloquer le bitmap pas dans le groupe
  • Bitmap d'inode pas dans le groupe
  • Table d'inode pas dans le groupe
  • La taille du système de fichiers est incorrecte
  • Le nombre d'inodes dans le superbloc est incorrect
  • Le Hurd ne prend pas en charge la fonction de type de fichier
  • Le journal a un type de superbloc inconnu
  • Demandez si nous devons effacer le journal
  • Le superbloc de journal a un ensemble d'indicateurs de fonctionnalité en lecture seule inconnu
  • Le superbloc de journal a un ensemble d'indicateurs de fonctionnalité incompatible inconnu
  • Le numéro de version du journal n'est pas pris en charge
  • Demandez si nous devons quand même gérer le journal
  • Blocs réservés sans resize_inode
  • Resize_inode non activé, mais le redimensionnement de l'inode n'est pas nul
  • Redimensionner l'inode invalide
  • Le dernier montage est dans le futur
  • La dernière heure d'écriture est dans le futur
  • Le total de contrôle N du descripteur de groupe n'est pas valide.
  • Le répertoire racine n'est pas un inode
  • Bloquer les conflits de bitmap avec d'autres blocs fs
  • Le bitmap d'inode entre en conflit avec un autre bloc fs
  • La table d'inode entre en conflit avec un autre bloc fs
  • Le bitmap de bloc est sur un mauvais bloc
  • Le bitmap d'inode est sur un mauvais bloc
  • Numéro de bloc illégal dans l'inode
  • Le numéro de bloc chevauche les métadonnées fs
  • Inode a des blocs illégaux (question de verrouillage)
  • Trop de mauvais blocs dans l'inode
  • Numéro de bloc incorrect dans un inode de bloc incorrect
  • Un inode de bloc incorrect contient des blocs illégaux (question de verrouillage)
  • Bloc incorrect utilisé comme bloc indirect de bloc incorrect
  • L'incohérence ne peut pas être corrigée
  • Mauvaise invite de blocage principal
  • Supprimer l'invite des messages
  • Drapeau imagique défini sur un inode lorsque le système de fichiers ne le prend pas en charge
  • Indicateur de compression défini sur un inode lorsque le système de fichiers ne le prend pas en charge
  • Traiter les inodes qui faisaient partie de la liste chaînée orpheline
  • Traiter les inodes qui faisaient partie d'une liste de liens orphelins corrompus (question de verrouillage)
  • Erreur lors de la lecture du bloc d'attributs étendu
  • Bloc d'attribut étendu non valide
  • Nombre de références d'attribut étendu incorrect
  • Plusieurs blocs EA non pris en charge
  • Erreur de collision d'allocation EA
  • Nom d'attribut étendu incorrect
  • Valeur d'attribut étendu incorrecte
  • Inode trop grand (question de verrouillage)
  • Répertoire trop volumineux
  • Fichier ordinaire trop volumineux
  • Symlink trop grand
  • Le bloc incorrect a un bloc indirect qui entre en conflit avec le bloc du système de fichiers
  • Échec du redimensionnement de l'inode
  • inode semble être un répertoire
  • Erreur lors de la lecture de l'arborescence des extensions
  • Échec de l'itération des étendues
  • Bloc de démarrage incorrect dans l'étendue
  • L'étendue se termine au-delà du système de fichiers
  • Indicateur EXTENTS_FL défini sur un système de fichiers non étendu
  • inode a des extensions, superbloc manquant de la fonction INCOMPAT_EXTENTS
  • Le lien symbolique rapide a la valeur EXTENTS_FL
  • Les extensions sont hors service
  • Inode a un nœud d'extension non valide
  • Cloner des blocs en double / défectueux?
  • Numéro d'inode incorrect pour '.'
  • L'entrée du répertoire a un mauvais numéro d'inode
  • L'entrée de la direction est un lien vers '.'
  • Les points d'entrée du répertoire vers l'inode sont maintenant situés dans un bloc défectueux
  • L'entrée du répertoire contient un lien vers un répertoire
  • L'entrée du répertoire contient un lien vers la racine
  • L'entrée du répertoire contient des caractères illégaux dans son nom
  • Disparu '.' dans le répertoire inode
  • '..' manquant dans l'inode du répertoire
  • La première entrée dans le répertoire inode ne contient pas '.'
  • La deuxième entrée du répertoire inode ne contient pas '..'
  • i_faddr doit être nul
  • i_file_acl doit être nul
  • i_dir_acl doit être nul
  • i_frag doit être nul
  • i_fsize doit être nul
  • inode a un mauvais mode
  • répertoire corrompu
  • nom de fichier trop long
  • L'inode de l'annuaire a un bloc manquant (trou)
  • "." n'est pas terminé par NULL
  • '..' n'est pas terminé par NULL
  • Inode de périphérique de caractère illégal
  • Inode de périphérique de bloc illégal
  • Dupliquer '.' entrée
  • Double entrée
  • Le dernier rec_len est incorrect
  • Erreur lors de la lecture du bloc de répertoire
  • Erreur lors de l'écriture du bloc de répertoire
  • Entrée de répertoire pour '.' est grand. Divisé?
  • Inode FIFO illégal
  • Inode de socket illégal
  • Type de fichier d'annuaire incorrect
  • Le nom de fichier du répertoire est nul
  • Lien symbolique non valide
  • i_file_acl (bloc d'attributs étendu) est incorrect
  • Le système de fichiers contient des fichiers volumineux, mais n'a pas un tel indicateur dans sb
  • Effacer le répertoire HTREE invalide
  • Mauvais bloc dans le nœud intérieur htree
  • Entrée de répertoire en double trouvée
  • Nom de fichier non unique trouvé
  • i_blocks_hi doit être nul
  • Bloc HTREE inattendu
  • Inode racine non alloué
  • Aucune pièce perdue + retrouvée
  • Inode de répertoire non connecté
  • .. l'entrée est incorrecte
  • Perdu + trouvé pas un répertoire
  • Inode non attaché
  • Superbloc corrompu
  • Fragments non pris en charge
  • Erreur lors de la détermination de la taille du périphérique physique du système de fichiers
  • Le journal externe a (non pris en charge) plusieurs systèmes de fichiers
  • Impossible de trouver un journal externe
  • Le journal externe a un superbloc incorrect
  • Superblock a un mauvais journal UUID
  • Erreur lors de l'allocation du bitmap d'inode
  • Erreur lors de l'allocation du bitmap de bloc
  • Erreur lors de l'allocation des informations de lien icount
  • Erreur lors de l'allocation du tableau de blocs de répertoires
  • Erreur lors de la numérisation des inodes
  • Erreur lors de l'itération sur les blocs
  • Erreur lors du stockage des informations de comptage des inodes
  • Erreur lors du stockage des informations de bloc d'annuaire
  • Erreur lors de la lecture de l'inode (pour effacer)
  • Erreur lors de l'allocation de la structure de refcount
  • Erreur lors de la lecture du bloc d'attributs étendus lors de la correction du décompte
  • Erreur lors de l'écriture du bloc d'attributs étendus lors de la correction du décompte
  • Erreur lors de l'allocation de la structure d'allocation des régions EA
  • Erreur lors de la numérisation des inodes
  • Erreur lors de l'allocation du bitmap d'inode
  • Erreur interne: impossible de trouver dir_info
  • Erreur lors de l'allocation de la structure icount
  • Erreur lors de l'itération sur les blocs d'annuaire
  • Erreur de désallocation de l'inode
  • Erreur lors du réglage du décompte EA
  • Erreur lors de l'allocation du bitmap d'inode
  • Erreur lors de la création du répertoire racine
  • L'inode racine n'est pas un répertoire; avortement
  • Impossible de poursuivre sans un inode racine.
  • Erreur interne: impossible de trouver dir_info
  • Erreur de programmation: les points de terminaison bitmap ne correspondent pas
  • Erreur interne: fudging end of bitmap
  • Erreur de copie dans le bitmap d'inode de remplacement
  • Erreur de copie dans le bitmap du bloc de remplacement
Noé
la source
Noah si vous le savez, est-il possible de créer / injecter toutes ces erreurs (ou selon ce qui est possible)? J'essaie d'enquêter sur la cause de ces erreurs et la solution possible de ces erreurs.
AnkurTank du