Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТКАЗОУСТОЙЧИВОСТЬ КЛАСТЕР RAID.doc
Скачиваний:
14
Добавлен:
17.06.2016
Размер:
294.4 Кб
Скачать

17

ДОПОЛНЕНИЕ К РАЗДЕЛУ «ПОНЯТИЕ ОТКАЗОУСТОЙЧИВОЙ

ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ»

1.1. Организация отказоустойчивой внешней памяти

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

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

Например, к 8-ми информационным битам добавляется бит четности (четность количества единиц). Общее количество единиц кода должно быть четным (нечетным).

1 0 0 1 1 1 1 0 1 Значение бита четности вычисляется сложением по модулю 2 значений информационных разрядов.

1 0 0 0 1 1 1 0 0

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

Для исправления возникающих одиночных ошибок используются коды Хемминга.

Любой код можно описать выражением (n, k), где

n – длина информационной посылки (вместе с контрольными разрядами);

k – количество информационных разрядов.

Для кода Хемминга это выражение имеет вид (2r – 1, 2r – r – 1), где

r – число проверочных разрядов, r = n – k.

Например, для 11 информационных разрядов необходимо 4 проверочных (r = 4). Для 4 информационных разрядов потребуется 3 контрольных. Отметим, что избыточность уменьшается при увеличении количества информационных разрядов.

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

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

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

Х . . . Х Х 1,

где Х – произвольное значение 0 или 1, то есть разряды с нечетными десятичными номерами составляют группу: 1, 3, 5, 7, 9, … .

2-ой контрольный разряд связан с группой разрядов, двоичные номера которых имеют единицу во втором справа разряде.

Х . . Х 1 Х, т. е. группу составляют разряды с десятичными номерами: 2, 3, 6, 7, 10, … .

3-ий контрольный разряд связан с группой разрядов, двоичные номера которых имеют в 3-ем справа разряде единицу.

Х . . . Х 1 Х Х, т. е. номера десятичные: 4, 5, 6, 7, 12, … .

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

Пример. Составление кода Хемминга для слова из 4-х информационных разрядов.

А = а3 а2 а1 а0

Пусть Р1 Р2 Р3 – соответствующие групповые контрольные разряды.

Р – общий контрольный разряд всей кодовой комбинации для обнаружения двойной ошибки.

Выбор места для размещения в кодовой комбинации контрольных разрядов производится так, чтобы контрольные разряды участвовали только в одной операции подсчета четности (нечетности). Это упрощает процесс кодирования. Поэтому размещают контрольные разряды в позиции с номерами 2i (i = 0, 1, ...). Ниже приведены строки, отображающие подсчет четности (нечетности).

Пример составления кода Хемминга приведен в таблице 1. В верхней строке таблицы 1 указаны номера позиций.

Таблица 1.

8

7

6

5

4

3

2

1

P

a1

a2

a3

P3

a0

P2

P1

0

0

0

0

0

0

0

0

1

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

0

0

0

1

1

1

1

0

1

0

1

0

1

0

1

0

0

0

1

0

1

1

0

1

0

0

1

1

0

0

1

1

1

0

1

1

0

1

0

0

0

1

0

0

1

0

1

1

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

1

1

1

1

1

1

1

1

Рассмотрим процесс контроля правильности передачи кодовой комбинации без общего контрольного разряда Р от источника данных к приемнику. После передачи кода на приемной стороне осуществляются проверки, количество которых определяется количеством контрольных разрядов в кодовой комбинации. Пусть выполнена передача информационного слова 0110 = а3 а2а1а0 с ошибкой.

Правильная кодовая комбинация Хемминга имеет вид:

Р3Р2 Р1

7 6 5 4 3 2 1

01 10 0 1 1 Кодовая комбинация (без общего контрольного разряда Р).

Пусть вместо кода 0 1 1 0 в приемник при передаче информация поступила с ошибкой 00 1 0.

Кодовая комбинация Хемминга после передачи имеет вид:

7 6 5 4 3 2 1

00 1 0 0 1 1

При первой проверке разрядов 1, 3, 5, 7 суммированием по модулю 2 получаем значение 0, соотвествующее младшему разряду синдрома. Вторая проверка разрядов 2, 3, 6, 7 формирует значение 1 следующего разряда синдрома. При третьей проверке разрядов 4, 5, 6, 7 формируется значение 1 очередного разряда синдрома.

Синдром – это двоичный код номера разряда, в котором произошла ошибка (6 разряд). Для исправления ошибки нужно инвертировать 6-ой разряд.