Comment interpréter la sortie des badblocks

44

Les pages de manuel relatives aux badblocks ne semblent pas mentionner ce que les trois chiffres de la sortie signifient en particulier:

Pass terminé, 7 blocs défectueux trouvés (erreurs 7/0/0)
Pass terminé, 120 blocs défectueux trouvés (erreurs 0/0/120)

Je devine que c'est « erreurs lors de la lecture / écriture / comparer ». Est-ce que quelqu'un peut m'éclairer?

Tomalak
la source

Réponses:

46

Votre proposition est correcte.

Le code source ressemble à ceci:

if (v_flag)
    fprintf(stderr,
            _("Pass completed, %u bad blocks found. (%d/%d/%d errors)\n"),
            bb_count, num_read_errors, num_write_errors, num_corruption_errors);

Donc, ses erreurs de lecture / écriture / corruption. Et corruption signifie comparaison avec des données précédemment écrites:

if (t_flag) {
    /* test the comparison between all the
       blocks successfully read  */
    int i;
    for (i = 0; i < got; ++i)
        if (memcmp (blkbuf+i*block_size,
            blkbuf+blocks_at_once*block_size,
            block_size))
            bb_count += bb_output(currently_testing + i, CORRUPTION_ERROR);
}
Frostschutz
la source
Parfait. En recherchant dans la source, il y aurait une chose qui aurait dû me venir à l'esprit, mais ce n'est pas le cas. Merci. :)
Tomalak
Bien entendu, c’est aussi la raison pour laquelle il n’ya pas de message d’erreur du noyau dans ce (0/0/120 errors)cas.
Tomalak
Une cause possible d'erreurs de corruption est que quelque chose d'autre a écrit sur le disque alors qu'il badblocksétait en cours d'exécution, auquel cas il ne s'agirait pas du tout d'une erreur (autre que l'erreur de l'utilisateur).
Frostschutz
Dans ce cas, c’est un disque suspect que j’utilise exclusivement avec des badblocks. Aucun autre processus n'y écrit. Existe-t-il un moyen de visualiser le fichier de sortie avec la liste des secteurs défectueux, à moins de calculer manuellement leur position?
Tomalak
-8

Faux. Si badblocks dit quelque chose qui n'est pas "pas d'erreur trouvée", cela signifie:

  • Éteindre la machine immédiatement
  • Obtenir un disque de remplacement
  • Priez pour $ GOD_OF_BACKUPS que les données importantes soient en sécurité
  • Faites ce qui est nécessaire pour installer le nouveau disque et copiez les données de l'ancien

Vous pouvez éventuellement conserver le disque à des fins de divertissement ou sous forme de presse-papiers.

(Disques modernes ont un ensemble de cylindres supplémentaires pour remappant blocs défectueux, car il n'y a aucun moyen de fabriquer des disques sans eux, et les utilisateurs crié l' enfer sanglant quand ils ont vu la liste des blocs défectueux. Si les blocs défectueux n'apparaissent, cela signifie que cet espace Comme les modes de défaillance courants des disques en rotation donnent un nombre de plus en plus important de blocs défectueux, voir que cela signifie qu'il reste généralement quelques heures au disque.)

vonbrand
la source
10
Ce n'était même pas la question.
Tomalak
1
Ne jamais exécuter badblockssur un disque qui contient des données importantes. Si le disque présente une erreur, il badblockspeut causer des dommages supplémentaires, même en mode écriture non destructive, s’il ne parvient pas à réécrire les données originales en raison de l’erreur.
Frostschutz
@frostschutz, le -ntest est censé être en lecture seule?
vonbrand
3
Non, -nc'est une écriture non destructive. Donc, il écrit, mais restaure les données d'origine après le test. Ce qui peut échouer à cause d'erreurs. En lecture seule badblocks, je pense que vous n’utilisez aucune option.
Frostschutz
Pas de mauvais conseil, mais ne correspond pas à la question. Vous auriez pu en faire une réponse de style questions-réponses.
neverMind9