Introduction
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.
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.
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.
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é 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 fichier provenant d'AIX)
fsck.xfs pour XFS
Pour la compatibilité avec les systèmes de fichiers de Minix
fsck.minix, pour MINIX fs
fsck.xiafs pour Xiafs
Pour la compatibilité avec les systèmes de fichiers d'Apple
fsck pour HFS+ (système de fichier provenant de Mac OS)
Même les systèmes de fichiers de Microsoft sont supportés :
Pour les systèmes de fichiers en réseau, il y a entre autres
Pour les systèmes de fichiers compressés, il y a entre autres
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
À 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…).
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 les premières versions d'Unix, il était nécessaire d'effectuer manuellement une commande sync avant de rebooter l'ordinateur.
Dans les très rares cas où fsck échoue à réparer un système de fichier ext2 ou ext3, un expert pourra utiliser les utilitaires suivants pour tenter une réparation :
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.
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
tune2fs -i 1w /dev/hda7
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
Sur la version Sarge de la distribution debian, il y a, par défaut, un appel de fsck s'il y a eu 30 boot sans appel de fsck. Ceci est fait par précaution.
La vérification initiale des systèmes de fichiers est faite via deux scripts checkroot.fs et checkfs.sh qui sont appelés via des liens symboliques dans /etc/rcS.d. Ces deux scripts utilisent fsck.
Actuellement sur la version Lenny ce principe est toujours en vigueur. Fsck est lancé automatiquement s'il n'a pas été appelé lors des 35 derniers démarrages.
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.
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 :
Sur d'anciennes versions de Windows (95, 98 et Millennium), les utilitaires chkdsk et scandisk faisaient l'équivalent du fsck d'Unix.
Voir :