44 votes

Pourquoi ne peut-on pas fsck une partition montée ?

Il est bien connu qu'il ne faut jamais fsck une partition montée. Je peux comprendre comment cela pourrait facilement conduire à la corruption si le système de fichiers est écrit par fsck (par exemple, si l'option -a est utilisée), mais pourquoi ne peut-on pas exécuter des vérifications en lecture seule sur des disques montés ?

32voto

tkit Points 2908

Le problème de base est que le vérificateur du système de fichiers n'est généralement pas une partie intégrante du système de fichiers. Au lieu de cela, c'est un programme séparé qui lit et écrit sur le même disque que le code du système de fichiers dans le noyau. Par conséquent, si vous exécutez fsck sur un système de fichiers actif, vous avez deux entités différentes qui lisent (et potentiellement modifient) les mêmes données (le disque), mais elles ne se coordonnent d'aucune manière. Le résultat, comme d'autres l'ont souligné, est que la plupart des vérificateurs s'attendent à ce que personne d'autre ne modifie les métadonnées du système de fichiers pendant leur exécution. Ils seront confus et/ou signaleront des erreurs fantaisistes si le système de fichiers du noyau modifie quelque chose que le vérificateur n'attend pas.

Il existe quelques systèmes de fichiers avec des vérificateurs spécifiquement conçus pour être exécutés "en ligne" (c'est-à-dire lorsque le système de fichiers est actif). Les nouvelles versions de FFS/UFS font cela en exécutant fsck contre un instantané récent du système de fichiers (une copie en lecture seule, point dans le temps, réplique en écriture différée). S'il trouve des problèmes, tels que des incohérences dans les cartes d'allocation, il les corrige via un appel système, plutôt que d'écrire sur le disque brut. Cela lui permet de se coordonner avec le système de fichiers actif.

Le WAFL de NetApp dispose également d'un outil de vérification en ligne. Il y en a probablement d'autres.

31voto

MathewC Points 6777

De:

http://linux.die.net/man/8/fsck.ext3

"Notez qu'en général, il n'est pas sûr d'exécuter e2fsck sur des systèmes de fichiers montés. La seule exception est si l'option -n est spécifiée, et que les options -c, -l, ou -L ne sont pas spécifiées. Cependant, même s'il est sûr de le faire, les résultats imprimés par e2fsck ne sont pas valides si le système de fichiers est monté. Si e2fsck vous demande si vous devez vérifier un système de fichiers monté, la seule réponse correcte est ''non''. Seuls les experts qui savent vraiment ce qu'ils font devraient envisager de répondre à cette question d'une autre manière. "

11voto

Evan Anderson Points 140581

Exécuter fsck sur une partition montée en lecture-écriture serait absurde, même avec fsck en mode lecture seule. Le système de fichiers changera sous fsck, et les données en mémoire que fsck met en cache à partir du système de fichiers deviendront invalides (et donc fsck constatera une incohérence). Vous pouvez exécuter fsck sur un système de fichiers monté en lecture seule en mode lecture seule et obtenir des résultats valides. Exécuter fsck en mode lecture/écriture sur un système de fichiers monté en lecture seule, si fsck apporte des modifications au système de fichiers au cours de son exécution, ferait en sorte que le noyau voit des structures de système de fichiers changer de manière inattendue en dessous. Ce serait également mauvais.

9voto

Glomek Points 12183

Outre le fait que cela pourrait probablement tuer votre débit E/S, si le système de fichiers est modifié pendant qu'il est vérifié par fsck, il n'y a aucun moyen pour fsck de suivre les modifications et de signaler les incohérences.

Certains systèmes de fichiers comme XFS vous permettent d'effectuer la vérification de la cohérence alors que le système de fichiers est monté en lecture-écriture, avec l'avertissement que des erreurs fictives seront probablement signalées. xfs_check recommande de démonter le système de fichiers ou de le monter en lecture seule avant d'effectuer la vérification.

6voto

Andrew Grimm Points 928

Eh bien, le point de fsck est de signaler les incohérences du système de fichiers, c'est-à-dire les invariants violés.

Cependant, bon nombre de ces vérifications impliquent plus d'une structure de système de fichiers. Si quelqu'un modifie le système de fichiers (écrit des données), ces structures peuvent être temporairement désynchronisées. fsck verrait cela comme une incohérence, même si ce n'est pas vraiment un problème. fsck n'a aucun moyen de dire si une incohérence n'est que temporaire, ou un problème permanent qui nécessite une correction. Donc cela ne peut pas fonctionner (Sauf si un SE est conçu spécifiquement pour permettre une vérification en ligne. Certains le font, mais ce n'est pas le cas d'ext3).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X