Код удаления для фрагментированного файла

Существует ли код стирания, который можно применить к нескольким фрагментам (возможно, 100 или 200, каждые несколько сотен килобайт) путем (каким-либо образом) добавления фрагментов избыточности?

Я слышал о Риде-Соломоне, но, похоже, его нельзя использовать для огромных наборов данных и нескольких фрагментов, я не прав?

Спасибо!

2 ответа

Коды стирания кодируют куски исходных данных $N$ в блоки четности $M$ для избыточности, в то время как эти куски исходных данных $N$ и блоки четности $M$ являются лишь полосой всего хранилища. Теоретически, размер $N$ может быть произвольно большим для кодов Рида-Соломона (RS), только если поле Галуа $GF(2^w)$, построенное поверх RS, достаточно велико. Исходя из вышеизложенного, ваш вопрос, скорее всего, как следует

Почему количество фрагментов (исходных данных) в полосе редко бывает слишком большим, например, $N = 100$ или $200$?

Причины update problem а также repair problem: Если вы кодируете большое количество фрагментов данных в блоки четности с помощью кодов стирания, многие фрагменты данных / четности взаимосвязаны. Пока вы обновляете один блок данных, все блоки четности также должны обновляться, что приводит к интенсивным операциям ввода-вывода для части контроля четности; repair problem Это ситуация, когда происходит сбой одного блока данных / четности, доступ к множеству блоков данных / контроля четности и их восстановление для восстановления, что вызывает огромный дисковый ввод-вывод или сетевой трафик.

В качестве примера возьмем RAID5 из $3$ блоков данных (A, B, C) и блок контроля четности P=A+B+C. Для устранения сбоя любого блока требуется участие всех остальных трех блоков.

Чем большее количество фрагментов закодировано, тем серьезнее update problem а также repair problem для системы хранения может встретиться, что в дальнейшем значительно влияет на производительность системы.

Кстати, скорость декодирования (процесс получения исходных данных) сильно падает при увеличении $N$.

Конечно, Рид-Соломон может быть использован для любого размера данных.

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

Если ваша длина данных не кратна размеру блока RS, т.е. последний блок слишком короткий, просто добавьте 0 байтов, чтобы заполнить его перед кодированием, и удалите 0 после повторного декодирования. Вам придется где-то сохранить исходную длину данных, но это не должно быть проблемой.

Другие вопросы по тегам