Ext4 peut-il détecter un contenu de fichier corrompu?

Le système de fichiers ext4 peut-il détecter la corruption des données du contenu des fichiers? Si oui, est-il activé par défaut et comment puis-je rechercher des données corrompues?

J’ai lu que ext4 conserve les sums de contrôle pour les métadonnées de fichier et son journal, mais je n’ai pas pu trouver d’informations sur les sums de contrôle pour le contenu réel du fichier.

Pour plus de clarté: je veux savoir si un fichier a changé depuis la dernière opération d’écriture.

“Le système de fichiers ext4 peut-il détecter la corruption des données du contenu des fichiers?” Pas dans le sens que vous attendez. Il effectue la journalisation en créant une copie booléenne {before vs after} pour assurer la fin de io.

Un CRC / checksum est un test de modification à partir d’un état connu et bien que le CRC ou le checksum ne puisse pas être comparé à l’original, cela n’implique pas que le fichier est “corrompu” modifié. Au sens ssortingct, une forme de “corruption” consisterait à modifier le “nombre magique” au début d’un fichier, par exemple en changeant% PDF en% xYz – ce qui rendrait le contenu inutilisable pour tout programme.

“… pour savoir si un fichier a changé depuis la dernière opération d’écriture”. Les systèmes qui suivent mtime () le feront de manière uniforme, donc chaque écriture modifiera mtime (), rendant votre requête impossible.

La seule façon dont mtime () ne refléterait pas la dernière écriture io serait la dégradation des médias.

Non, ext4 ne détecte pas et ne peut pas détecter la corruption du contenu du fichier.

ZFS et btrfs sont des systèmes de fichiers bien connus qui implémentent une détection de corruption de données silencieuse et donc capables de la corriger lorsque suffisamment de redondance est disponible.

Ils le font en calculant et en stockant un CRC pour chaque bloc de données écrit et en vérifiant le CRC ou chaque bloc de données lu. Si le CRC ne correspond pas aux données, ce dernier n’est pas fourni à l’appelant et le RAID permet d’utiliser un autre bloc à la place ou une erreur d’ I/O est signalée.

Le processus de lecture ne recevra jamais de données corrompues, que ce soit correctement ou que la lecture échoue.