fsck

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 20 avril 2020 à 14:35 et modifiée en dernier par Pautard (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

Fsck

Description de l'image Fsck output.jpg.
Informations
Type Utilitaire UNIX (d)Voir et modifier les données sur Wikidata

fsck (File System Check ou File System Consistency Check) est un outil sous UNIX/Linux pour vérifier la cohérence d'un système de fichiers. S'il y a des incohérences, il est capable de les corriger dans la plupart des cas.

Présentation générale

En général, fsck s'exécute automatiquement lors de la phase de boot de l'ordinateur s'il détecte qu'il y a eu un arrêt brutal.

Selon le paramétrage, les corrections se feront sans que l'utilisateur ait à s'en préoccuper ou, à l'extrême opposé, fsck peut aussi proposer à l'utilisateur de faire des choix. Dans ce dernier cas, cela nécessite que l'utilisateur ait des connaissances très pointues sur le système de fichiers utilisé (ext2 ou autre).

fsck peut aussi être lancé manuellement par l'administrateur s'il a un doute sur le système de fichiers.

Les systèmes de fichiers journalisés rendent beaucoup plus rare l'utilisation de fsck.

Les multiples systèmes de fichiers supportés

fsck appelle en général un programme adapté au type de système de fichiers concerné (le nom par défaut est fsck.xxx, xxx étant le type de système de fichier).

Pour les systèmes de fichiers basés sur les i-nœuds, les plus connus sont :

  • e2fsck ou fsck.ext2 pour ext2 et ext3
  • reiserfsck pour ReiserFS
  • fsck.jfs pour JFS (système de fichiers provenant d'AIX)

Par contre, pour XFS, en pratique, il n'existe pas de fsck. Plus précisément, la commande fsck.xfs affiche uniquement un message préconisant d'appeler xfs_repair.

Pour la compatibilité avec les systèmes de fichiers de Minix :

Pour la compatibilité avec les systèmes de fichiers d'Apple :

  • fsck pour HFS+ (système de fichiers provenant de Mac OS)

Les systèmes de fichiers de Microsoft sont également supportés :

Pour les systèmes de fichiers en réseau, il y a entre autres :

  • fsck.nfs pour NFS (en fait, le script shell correspondant ne fait rien, il se contente de toujours renvoyer le code retour qui indique le succès de l'opération)

Pour les systèmes de fichiers compressés, il y a entre autres :

Les 5 à 6 phases de fsck pour les systèmes de fichiers basés sur un i-nœud

Ce qui suit concerne des systèmes de fichiers basés sur des i-nœuds : UFS (Unix File System), ext2 de linux, etc.

À la fin du fsck, il est conseillé de vérifier la présence éventuelle de fichiers dans le répertoire /lost+found.

Les différentes phases du fsck sont les suivantes

  • Phase 1 : blocs associés aux i-nœuds et de leurs tailles (vérification et correction)
  • Phase 2 : Chemins d'accès (vérification et correction)
  • Phase 3 : Connectivité entre les répertoires et les i-nœuds (vérification et correction)
  • Phase 4 : Compteurs de références (vérification et correction)
À cette étape, le message CLEAR (ou REMOVE) indique de confirmer la suppression d'un fichier. En général, il s'agit d'un fichier temporaire dont la suppression n'a aucune conséquence (sauf si vous êtes malchanceux…).
  • Phase 5 : Liste des disponibilités (vérification et correction).
  • La phase 6 ne se produit que si des corrections ont été nécessaires dans les phases précédentes : remplacement de la liste de disponibilité.

Fichier fstab et commande fsck

L'option -A de fsck permet d'utiliser la table des systèmes de fichiers (fstab) pour la vérification des différents systèmes de fichiers montés.

L'ordre de vérification est paramétré par la sixième colonne du fichier fstab.

Commandes Unix ayant un lien avec fsck

Commande sync

La commande sync permet d'effectuer toutes les écritures disques en attente. Si on craint un arrêt électrique brutal, il est prudent d'effectuer cette commande, (pour éviter de devoir réparer le système de fichiers avec fsck).

Sur certaines versions d'Unix très anciennes, il était nécessaire d'effectuer manuellement une commande sync avant de rebooter l'ordinateur.

e2image, dumpe2fs et debugfs

Dans les très rares cas où fsck échoue à réparer un système de fichiers ext2 ou ext3, un expert pourra utiliser les utilitaires suivants pour tenter une réparation :

  • e2image
  • dumpe2fs
  • debugfs

Commande fsdb pour les experts

Sur certaines versions d'Unix/linux, la commande fsdb (fs debug) est un débogueur de système de fichiers, elle est complémentaire de fsck, mais est réservé à un petit nombre d'experts.

Tune2fs et le lancement automatique de fsck

La commande tune2fs permet de paramétrer l'exécution d'un fsck automatique sur des partitions ext2 ou ext3.

Exemple de modification des paramètres

  • Faire une vérification toutes les semaines
tune2fs -i 1w /dev/hda7
  • Faire une vérification tous les 30 montages
tune2fs -c 30 /dev/hda7

Exemple de consultation de ces paramètres

tune2fs -l /dev/hda7
Le résultat de cette commande est volumineux (plus de 30 lignes), voici ceux qui concernent le lancement automatique du fsck
Last mount time:          Sat Jan 20 15:44:28 2007
Last write time:          Sat Jan 20 18:13:19 2007
Mount count:              13
Maximum mount count:      30
Last checked:             Wed Jan 17 22:25:21 2007
Check interval:           604800 (1 week)
Next check after:         Wed Jan 24 22:25:21 2007

Commande wipefs

Si la signature dans la table des partitions n'a pas le type adéquat de type de système de fichiers, il est possible de l'effacer avec la commande wipefs. Ensuite, il faudra appeler le fsck spécifique correspondant au bon type de système de fichier.

Le fsck sur les différentes versions d'Unix/linux

Le fsck avec le upstart

Pour les Linux qui utilisent upstart, l'appel du fsck dans la phase de boot est paramétré via le fichier /etc/init/mountall.conf[1]. Il y a de plus un fichier /etc/default/rcS avec une directive FSCKFIX[2] (il faut mettre cette directive à "yes" pour un utilisateur néophyte, et le laisser à "no" sinon).

En , cela concerne entre autres la dernière version de la distribution Ubuntu.

Le fsck et l'ancien package sysvinit

Sur un linux utilisant le package sysvinit (le nom est une référence à UNIX System V, l'appel du fsck dans la phase de boot est paramétré via les fichiers checkroot.fs et checkfs.sh.

C'était le cas des versions Sarge et Lenny de la distribution Debian et d'anciennes versions d'Ubuntu.

Sur la version Lenny de la distribution Debian, fsck est lancé automatiquement s'il n'a pas été appelé lors des 35 derniers démarrages.

Le fsck sur Red Hat et CentOS

Sur la distribution Red Hat et sa dérivée CentOS, l'appel du fsck dans la phase de boot est paramétré via le shell /etc/rc.d/rc.sysinit.

Le fsck sur FreeBSD

Le système de fichiers UFS de FreeBSD a une tâche fsck tournant en arrière-plan, ce qui fait qu'il n'est pas nécessaire d'attendre la fin du fsck pour accéder au disque.

Comparaison avec Windows

Comparaison avec Windows de la version NT à la version 2003

Le programme analogue à fsck sur Windows est autochk.exe.

Sous Windows, c'est le gestionnaire de session (smss.exe) qui appelle autochk.exe.

Autochk.exe appelle à son tour chkdsk.exe pour NTFS (c'est l'équivalent du e2fsck pour ext2). NTFS est basé sur une structure d'allocation de fichier basé sur des bitmap/extents au lieu de i-nœuds.

chkdsk.exe fait la vérification et la correction du système de fichiers NTFS en 4 étapes :

  • Vérification de la MFT (Master File Table) et des fichiers
  • Vérification des index
  • Vérification des descripteurs de sécurité
  • Éventuellement, si cela est demandé, il vérifie les secteurs

Voir (en) Les 4 étapes de CHKDSK sur le site Microsoft.com

Comparaison avec versions de Windows datant de l'année 2000 ou avant

Sur d'anciennes versions de Windows (95, 98 et Millennium), les utilitaires chkdsk et scandisk faisaient l'équivalent du fsck d'Unix.

Voir :

Voir aussi

Articles connexes

Références externes

Notes