2008-11-17 8 views
3

Je stocke de nombreux fichiers de différentes longueurs dans un support orienté bloc (taille fixe, par exemple 1 024 octets). Lors de la relecture du fichier, chaque bloc sera manquant ou correct (pas d'erreurs sur les bits ou autres). Les blocs manquants sont aléatoires et il n'y a pas nécessairement de séquence aux blocs manquants. J'aimerais pouvoir réassembler le fichier entier, tant que le nombre de blocs manquants est inférieur à un certain seuil, ce qui varie probablement selon le schéma d'encodage.Nécessité d'un schéma de correction d'erreur orienté bloc

La plupart de la littérature que j'ai vu traite des séquences d'erreurs binaires dans un flux de données, ce qui ne semble pas s'appliquer.

Une approche simple consiste à prendre N blocs à la fois, puis à stocker un bloc contenant le XOR des N blocs. Si l'un des N blocs est manquant mais que le bloc de contrôle ne l'est pas, alors le bloc manquant peut être reconstruit. Y a-t-il des schémas de correction d'erreur qui sont bien adaptés à ce problème? Des liens vers la littérature ou le code sont appréciés.

Répondre

1

Votre meilleur endroit pour commencer votre recherche est parchive Parity Volume Set spec. Le plus gros problème que vous aurez est les métadonnées de surcharge nécessaires dans chaque bloc. De plus, cette spécification est orientée vers les fichiers d'archive compressés.

Un autre bon lien est le parchive docs on the 2.0 format (basé sur mais plus orienté bloc que parchive 1.0). Voir QuickPar pour une bonne ventilation sur la façon dont 2.0 amélioré sur PAR 1.0.