Возможно ли закодировать данные таким образом, чтобы они могли самостоятельно восстанавливаться после повреждений? (повреждения - например, жесткий диск или USB-накопитель с поврежденными секторами)

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

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

Я знаю о ZFS и ее возможностях:

ZFS может лечить данные, если пул хранения имеет избыточность с помощью зеркалирования ZFS или RAID. Если пул хранения состоит из одного диска, можно обеспечить такую избыточность, указав «копии = 2» (или «копии = 3»), что означает, что данные будут храниться на диске дважды (трижды), эффективно уменьшая вдвое (или, для «копий = 3», уменьшив до одной трети) емкость диска.

Но я ищу несколько другие решения / инструменты, например что-то, что позволяет мне защитить данные на USB-накопителе в формате FAT, FAT32, exFAT. Существует ли такая вещь?

2 ответа2

2

Не существует такого инструмента для магического восстановления поврежденных данных, если у вас нет достаточных четных / резервных копий рассматриваемых данных . @grawity означает, что такие инструменты, как PAR2, QuickPar и WinRAR, могут делать то, что вы хотите. Для правильной работы этих инструментов будут встроены данные четности в архив, поэтому восстановление (возможно) будет возможно, если некоторые данные будут повреждены. Я давно пользуюсь WinRAR / 7z, но никогда не исследовал эту функциональность, поэтому не могу комментировать ее эффективность.

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

ZFS - не единственная файловая система с "истинными" возможностями самовосстановления, но она является самой зрелой. Btrfs и ReFS также имеют "истинные" возможности самовосстановления. Даже файловые системы с "истинным" самовосстановлением требуют исцеления данных четности.

Я бы не стал помещать данные, которые вам действительно нужны, на флэш-накопитель, если это вообще возможно, не потому, что это флэш-память, а потому, что даже если у вас есть данные о четности, они все равно будут храниться только на одном физическом устройстве. Если вам необходимо использовать флэш-накопитель, убедитесь, что он использует высококачественную память и избегайте штормов с космическими лучами. Экспериментируйте с некоторыми из упомянутых инструментов @grawity, я знаю, что буду :)

1

Благодаря старому посту slashdot, я нашел решение / инструменты, которые будут защищать данные на флешках.

Экранирование ваших файлов кодами Рида-Соломона

Похоже, он использует четность данных для лечения поврежденных / поврежденных секторов.

Далее следует простое описание способа, которым я использую для дополнительного "защиты" моих важных файлов, так что даже если некоторые сектора, в которых они размещены, потеряны, я все равно в конечном итоге спасу все.

Идея этого процесса заключается в исправлении ошибок, как, например, вездесущий Рид-Соломон. С помощью Рида-Соломона байты четности используются для защиты блока данных от указанного максимального количества ошибок на блок. В инструментах, описанных ниже, блок из 223 байтов экранируется с 32 байтами четности. Исходные 223 байта затем преобразуются в 255 "экранированных" и могут быть восстановлены, даже если 16 байтов из "экранированного" блока превратятся в шум ...

Сценарии "заморозки" и "расплавления" можно использовать для создания файлов, которые можно развернуть на флэш-накопителе USB (или на любом другом носителе).

Мы "экранируем" файл скриптом freeze.sh, который является частью моего пакета; Затем мы расплавляем замороженный файл и проверяем (через md5sum), что новый сгенерированный файл точно такой же, как и исходный. Затем мы намеренно уничтожаем 64 КБ экранированного файла (это много последовательных секторов!), Используя dd для перезаписи 127 секторов нулями. Мы снова вызываем melt.sh и видим, что новый сгенерированный файл (data3) имеет ту же сумму MD5, что и исходный - он был восстановлен идеально.

Фантастика!!!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .