Нужна блочно-ориентированная схема исправления ошибок - PullRequest
3 голосов
/ 18 ноября 2008

Я храню множество файлов различной длины на блочно-ориентированном носителе (фиксированный размер, например, 1024 байта). При чтении файла каждый блок будет либо отсутствовать, либо исправляться (без битовых ошибок и т. П.). Пропущенные блоки являются случайными, и необязательно какая-либо последовательность к пропущенным блокам. Я хотел бы иметь возможность повторно собрать весь файл, если количество отсутствующих блоков ниже некоторого порога, который, вероятно, зависит от схемы кодирования.

Большая часть литературы, которую я видел, имеет дело с последовательностями битовых ошибок в потоке данных, так что это, похоже, неприменимо.

Простой подход состоит в том, чтобы взять N блоков за раз, а затем сохранить блок, содержащий XOR из N блоков. Если один из N блоков отсутствует, а контрольный блок отсутствует, то отсутствующий блок может быть восстановлен.

Существуют ли схемы исправления ошибок, которые хорошо подходят для этой проблемы? Ссылки на литературу или код приветствуются.

Ответы [ 3 ]

2 голосов
/ 18 ноября 2008

Просмотр кодов Рида-Соломона:

http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction

1 голос
/ 18 ноября 2008

Лучшее место для начала поиска - parchive Parity Volume Set spec . Самая большая проблема, с которой вы столкнетесь, - это дополнительные метаданные, необходимые в каждом блоке. Плюс, эта спецификация ориентирована на сжатые архивные файлы.

Еще одна полезная ссылка - это документы в формате parchive в формате 2.0 (основанные на более ориентированной на блок, чем в версии 1.0) См. QuickPar для получения подробной информации о том, как 2.0 улучшилось в PAR 1.0.

0 голосов
/ 25 июня 2014

Проверьте коды Raptor (https://en.wikipedia.org/wiki/Raptor_code) это самые продвинутые коды фонтанов на данный момент

...