Научная статья на тему 'ИСПОЛЬЗОВАНИЕ КОДОВ РИДА-СОЛОМОНА ДЛЯ ВОССТАНОВЛЕНИЯ ПОВРЕЖДЕННЫХ ФАЙЛОВ'

ИСПОЛЬЗОВАНИЕ КОДОВ РИДА-СОЛОМОНА ДЛЯ ВОССТАНОВЛЕНИЯ ПОВРЕЖДЕННЫХ ФАЙЛОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
116
14
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОД / ОБНАРУЖЕНИЕ ОШИБКИ / ИСПРАВЛЕНИЕ / КОДЕР / ДЕКОДЕР

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Иванов В.В., Самсонова М.Ю.

Статья посвящена обнаружению ошибок при выполнении операции, устранение и восстановление поврежденных файлов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ИСПОЛЬЗОВАНИЕ КОДОВ РИДА-СОЛОМОНА ДЛЯ ВОССТАНОВЛЕНИЯ ПОВРЕЖДЕННЫХ ФАЙЛОВ»

Использованные источники:

1. Уровни RAID — краткие теоретические сведения [Электронный ресурс], режим доступа -http://www.nix.ru/computer_hardware_news/hardware_news_viewer.html?id=187 685, свободный;

2. SSD против RAID из 4 НЖМД: что лучше для десктопа? [Электронный ресурс], режим доступа - http://www.ixbt.com/storage/ssd-vs-4hdd-raid.shtml/, свободный;

3. RAID-массивы: классификация, особенности, применение, [Электронный ресурс], режим доступа - http://web-profi.by/raid-massivy-klassifikaciya-osobennosti-primenenie/, свободный.

УДК 004.6

Иванов В.В., к.т.н.

доцент

Чувашский государственный университет

Россия, г. Чебоксары Самсонова М.Ю. студент 1 курса магистратуры факультет «дизайна и компьютерных технологий»

Россия г. Чебоксары ИСПОЛЬЗОВАНИЕ КОДОВ РИДА-СОЛОМОНА ДЛЯ ВОССТАНОВЛЕНИЯ ПОВРЕЖДЕННЫХ ФАЙЛОВ Статья посвящена обнаружению ошибок при выполнении операции, устранение и восстановление поврежденных файлов. Ключевые слова: код, обнаружение ошибки, исправление, кодер, декодер. Современная вычислительная техника и средства передачи информации не являются абсолютно надежными. Не смотря на все принимаемые меры, ошибки все же происходят. Они могут возникать на всех этапах работы с информацией: при хранении (долговременном или оперативном), передаче, обработке.

На каждом этапе работы с информацией есть свои причины возникновения ошибок.

При хранении случайные ошибки могут возникнуть в результате повреждения носителя или некорректного выполнения операций ввода/вывода.

При передаче — как правило, в результате помех в линиях связи. При обработке — в результате ошибок в программном обеспечении (ПО), некорректной работы обрабатывающего устройства (процессора) или устройства временного хранения данных (оперативное запоминающее устройство — ОЗУ). При этом процессор или ОЗУ могут быть вполне

исправными, а их нормальная работа нарушена в результате действия радиации или помех других компонентов. Так, по статистике Google102 в результате действия космического излучения и других факторов в среднем 10 раз в день происходит единичный сбой в модуле оперативной памяти, хотя частота ошибок в разных модулях может отличаться в десятки раз.

Для обеспечения надежности обработки информации применяются различные методы: как аппаратные, так и программные. Однако все они сводятся к снижению вероятности возникновения ошибок, обнаружению возникших ошибок и, по возможности, их исправлению.

Наиболее естественный метод — снижение вероятности возникновения ошибок, однако он имеет множество ограничений. Так, нельзя устранить все причины возникновения ошибок. А устранение некоторых будет стоить слишком дорого либо значительно снизит производительность.

Обнаружение ошибок позволит лишь зафиксировать факт возникновения ошибки при выполнении операции, но далее либо придется повторно выполнять операцию, либо прекратить обработку информации.

В отличие от предыдущих методов, исправление ошибок позволит продолжить обработку информации, даже если нельзя устранить причину возникновения ошибок, а ошибки носят систематический характер. Разумеется, этот метод имеет недостатки. Так, его применение так же требует накладных расходов и он неприменим, когда ошибок больше, чем его корректирующая способность.

Существуют как аппаратные методы исправления ошибок, так и программные. Однако практически все они основаны на использовании кодов, устойчивых к ошибкам, или на использовании дополнительной информации, позволяющей восстановить исходную. Наиболее часто используются код Хэминга и код Рида-Соломона. Так же применяются сверточный код и турбокод.

Код Хэминга обеспечивает обнаружение 2 и исправление 1 ошибки. Его кодер и декодер просты, и могут быть выполнены в виде комбинационных схем. Поэтому его часто используют при передаче данных по надежным каналам, в которых редко могут происходить одиночные ошибки, в частности его, используют некоторые типы ОЗУ. Недостатком этого кода являются низкая корректирующая способность и относительно большие накладные расходы при малой разрядности исходных данных (4 контрольных бита при 4 информационных; 5 при 11).

Коды Рида-Соломона, по сравнению с кодом Хэминга, могут обеспечить много большую корректирующую способность. Фактически может быть исправлено до половины от объема избыточной информации. Однако кодер сложнее, чем у кода Хэминга, а декодер — намного сложнее.

102 Bianca Schroeder, Eduardo Pinheiro, Wolf-Dietrich Weber. DRAM Errors in the Wild: A Large-Scale Field Study. http://www.cs.toronto.edu/~bianca/papers/sigmetrics09.pdf_

Коды Рида-Соломона — это циклически недвоичные совершенные линейные блочные коды, позволяющие исправлять ошибки в блоках данных. Элементами кодового вектора являются не биты, а группы битов (блоки).

Основная идея кодирования Рида-Соломона заключается в умножении информационного слова, представленного в виде полинома D, на неприводимый полином G, одинаковый для кодера и декодера, в результате чего получается кодовое слово C, представленное в виде полинома.

Декодирование осуществляется с точностью до наоборот: если при делении кодового слова C на полином G декодер получает остаток, то это говорит об ошибке. Соответственно, если кодовое слово разделилось нацело, то ошибок нет.

Если степень полинома G (называемого также порождающим полиномом) превосходит степень кодового слова, по меньшей мере, на две степени, то декодер может не только обнаруживать, но и исправлять одиночные ошибки. Если же превосходство степени порождающего полинома над кодовым словом равно четырем, то восстановлению поддаются и двойные ошибки. Степень полинома k должна быть вдвое больше максимального количеством исправляемых ошибок t (k = 2 * t). Следовательно, кодовое слово должно содержать два дополнительных символа на одну исправляемую ошибку. В то же время, максимальное количество распознаваемых ошибок равно t, т.е. избыточность составляет один символ на каждую распознаваемую ошибку.

В отличие от кодов Хемминга, коды Рида-Соломона могут исправлять любое разумное количество ошибок при вполне приемлемом уровне избыточности. В кодах Хемминга контрольные биты контролировали лишь те информационные биты, что находятся по правую сторону от них, и игнорировали все по левую сторону. В кодах же Рида-Соломона контрольные биты распространяют свое влияние на все информационные биты, и потому с увеличением количества контрольных бит увеличивается и количество распознаваемых и устраняемых ошибок.

Коды Рида-Соломона используются крайне широко. Они применяются

в:

S устройствах памяти (включая магнитные ленты, CD, DVD, штриховые коды и т.д.);

S беспроводных или мобильных коммуникациях (включая сотовые телефоны, WiMax, микроволновые каналы и т.д.); S спутниковых коммуникациях; S цифровом телевидении/DVB (digital video broadcast); S скоростных модемах, таких как ADSL, xDSL и т.д. Во всех этих областях коды Рида-Соломона применяются прозрачно для пользователей. Фактически конечные пользователи о них просто не знают. Для примера рассмотрим применение кодов Рида-Соломона в CD. Именно с CD началось широкое использование этих кодов на практике.

В силу своего устройства CD очень уязвимы к физическим повреждениям. Ошибки могут возникнуть уже на стадии производства, например, из-за недостатков матрицы, с помощью которой они изготавливаются. Так же ошибки могут быть вызваны царапинами на поверхности диска, пылью и т. д. Поэтому при изготовлении CD-DA (Audio CD) используется система коррекции CIRC (Cross Interleaved Reed Solomon Code — код Рида-Соломона с перемешиванием). Перемешивание позволяет разнести несколько последовательных ошибок по всему блоку информации — это облегчает восстановление. Избыточность составляет примерно 25 % от исходной информации.

Коррекция происходит на 2 уровнях: C1 и С2 для блоков по 24 байта. Если часть ошибок не может быть исправлена на первом уровне - C1, то неисправленные ошибки передаются на второй уровень - C2. Если же на этом уровне исправление невозможно, то считается, что информация не может быть восстановлена и, следовательно, прочитана.

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

Можно выделить следующие области, где подобные ситуации происходят наиболее часто:

S хранение данных на ненадежных носителях (дискеты, CD, DVD);

S передача больших файлов через сети с нестабильным соединением

(модемы, радио-модемы).

Например, несмотря на то, что CD обеспечивают очень высокий уровень избыточности, при большом количестве повреждений часть секторов может стать нечитаемой. Или при передаче данных через интернет часть может быть передана неправильно из-за потерь пакетов или обрывов соединения.

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

Во всех случаях для восстановления данных потребуется исходный файл. Во многих случаях это будет затруднительно (попробуйте передать файл размером 4 Гб с помощью модема или найти файл с CD, записанного 10 лет назад).

В этих ситуациях требуется способ, позволяющий восстанавливать файлы. Для этого так же могут использоваться коды Рида-Соломона. Общая схема будет выглядеть следующим образом:

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

2. Исходный файл передается по ненадежным линиям связи или записывается на носитель вместе с файлом, содержащим коды Рида-Соломона.

3. Принимающая сторона проверяет целостность файла.

4. Если файл поврежден, то на основе информации из обоих файлов производится восстановление исходного файла.

5. Корректность восстановления дополнительно проверяется с помощью контрольных сумм. Это необходимо для предотвращения ситуации, когда при очень сильном повреждении восстановление производится некорректно. При использовании такой схемы не требуется никаких изменений в существующем программном и аппаратном обеспечении. Достаточно небольшой программы, например, в виде плагина к браузеру, которая выполнит все действия автоматически.

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

Однако у них есть существенный недостаток: полезная информация находится внутри архива и для доступа к ней требуется ее предварительно извлечь.

Есть у метода и существенный недостаток. Так как все операции над кодами Рида-Соломона необходимо выполнять не по арифметическим правилам, а по правилам работы с полиномами, к тому же в полях Галуа, то для восстановления поврежденной информации потребуется очень большое количество вычислений.

Использованные источники:

1. Блейхут Р. Теория и практика кодов, контролирующих ошибки. М.: Мир, 1986. - 576 с.

2. Семенов Ю.А. Алгоритмы и протоколы каналов и сетей передачи данных. http: //www.intuit.ru/department/network/algoprotnet/

3. Крис Касперски. Могущество кодов Рида-Соломона или информация, воскресшая из пепла. http://www.insidepro.com/kk/027/027r.shtml http://www.cs.toronto.edu/~bianca/papers/sigmetrics09.pdf

4. http: //ru.wikipedia. org/wiki/Код_Рида_-_Соломона

5. http: //ru. wikipedia. org/wiki/Хеширование.

i Надоели баннеры? Вы всегда можете отключить рекламу.