2011. Машбук (1114722), страница 67
Текст из файла (страница 67)
152. RAID 1.Данная модель является достаточно дорогой, причем дороговизна заключается не внепосредственной стоимости дисков (если предположить, что средняя цена диска 100USD, то на покупку 10 основных дисков и 10 дисков-дублеров организация должнапотратить порядка 2000 USD, что не является большой суммой для юридического лица).Цена вопроса встает при обслуживании данной системы: 20 дисков занимают многоместа, потребляют довольно приличную мощность и выделяют много тепла. К этомуможно добавить расходы на обеспечение резервного питания: чтобы эти 20 дисков неотключались при перебоях с электроэнергией, необходимо закупить источникибесперебойного питания с очень емкими аккумуляторами.Отметим, что модели RAID нулевого и первого уровней могут реализовыватьсяпрограммным способом.250Следующие две модели (RAID 2, Рис.
153, и RAID 3, Рис. 154) — это модели с т.н.синхронизированными головками, что, в свою очередь, означает, что в массивеиспользуются не независимые устройства, а специальным образом синхронизированные.Эти модели обычно имеют полосы незначительного размера (например, байт или слово).Данные модели содержат избыточную информацию, позволяющую восстановить данныев случае выхода из строя одного из устройств. В частности, RAID 2 использует кодыХэмминга (т.е. коды, исправляющие одну ошибку и выявляющие двойные ошибки).Модель RAID 3 более проста, она основана на четности с чередующимися битами. Дляэтого один из дисков назначается для хранения избыточной информации — полос,дополняющих до четности соответствующие полосы на других дисках (т.е., по сути, вкаждой позиции суммарное число единиц на всех дисках должно быть четным). И в том, ив другом случае при сбое одного из устройства за счет избыточной информации можновосстановить потерянные данные.b0b1b2b3f0(b)f1(b)f2(b)Рис.
153. RAID 2. Избыточность с кодами Хэмминга (Hamming, исправляетодинарные и выявляет двойные ошибки).b0b1b2b3P(b)В данном случае имеется 4 дискаданных и 1 диск четности. Тогдадля диска четности:X4(i)=X0(i)xorX1(i)xorX2(i)xorX3(i)Если произойдет потеря данныхна первом диске, то длявосстановлениядостаточновоспользоваться формулой:X1(i)=X0(i)xorX2(i)xorX3(i)xorX4(i)Рис. 154.
RAID 3. Четность с чередующимися битами.RAID 4 является упрощением RAID 3 (Рис. 155). Это массивнесинхронизированных устройств. Соответственно, появляется проблема поддержания вкорректном состоянии диска четности. Для этого каждый раз происходит пересчет посоответствующей формуле.Модели RAID 5 (Рис.
156) и RAID 6 (Рис. 157) спроектированы так, чтобыповысить надежность системы по сравнению с RAID 3 и 4 уровней. Оказывается опаснымхранить важную информацию (в данном случае полосы четности) на одном носителе, т.к.при каждой записи происходит обращение всегда к одному и тому же устройству, чтоможет спровоцировать его скорейший выход из строя. Надежнее разнести служебнуюинформацию по разным дискам. Соответственно, RAID 5 распределяет избыточнуюинформацию по дискам циклическим образом, а RAID 6 использует двухуровневуюизбыточную информацию (которая также разнесена по дискам).251полоса 0полоса 1полоса 2полоса 3P(0-3)полоса 4полоса 5полоса 6полоса 7P(4-7)полоса 8полоса 9полоса 10полоса 11P(8-11)полоса 12полоса 13полоса 14полоса 15P(12-15)В данном случае имеется 4 дискаданных и 1 диск четности.
Тогдадля диска четности:X4(i)=X0(i)xorX1(i)xorX2(i)xorX3(i)После обновления полосы напервом диске:X4 new(i)=X4(i)xorX1(i)xorX1 new(i)Рис. 155. RAID 4.полоса 0полоса 1полоса 2полоса 3P(0-3)полоса 4полоса 5полоса 6P(4-7)полоса 7полоса 8полоса 9P(8-11)полоса 10полоса 11полоса 12P(12-15)полоса 13полоса 14полоса 15Рис.
156. RAID 5. Распределенная четность (циклическое распределение четности).полоса 0полоса 1полоса 2полоса 3P(0-3)Q(0-3)полоса 4полоса 5полоса 6P(4-7)Q(4-7)полоса 7полоса 8полоса 9P(8-11)Q(8-11)полоса 10полоса 11полоса 12P(12-15)Q(12-15)полоса 13полоса 14полоса 15Рис. 157. RAID 6. Двойная избыточность (циклическое распределение четности сиспользованием двух схем контроля; требуется N+2 диска).6.2Работа с внешними устройствами в ОС Unix6.2.1 Файлы устройств, драйверыКак уже неоднократно упоминалось, одной из основных особенностей ОС Unixявляется концепция файлов: практически все, с чем работает система, представляется ввиде файлов.
Внешние устройства не являются исключением и также представлены всистеме в виде специальных файлов устройств, хранимых обычно в каталоге /dev.С точки зрения интерфейсов организации работы с внешними устройствамисистема делит абсолютно все устройства на две категории: байт-ориентированные иблок-ориентированные устройства. С блок-ориентированными устройствами обменосуществляется порциями данных фиксированной длины, называемыми блоками.
Обычноразмер блока кратен степени двойки, а зачастую кратен 512 байтам. Все остальныеустройства относятся к байт-ориентированным. Такие устройства позволяютосуществлять обмен порциями данных произвольного размера (от 1 байта до некоторого252k). Надо отметить, что к байт-ориентированным устройствам помимо физическихустройств (с которыми можно осуществлять обмен) могут относиться и устройства, скоторыми обмен не осуществим.
Примером такого устройства может служить таймер:реально обмены с таймером не происходят – он используется для генерации в системепрерываний через определенные промежутки времени, но таймер относится именно кбайт-ориентированным устройствам.Но, говоря о блок- и байт-ориентированных устройствах, следует помнить, что зарегистрацию устройств в системе в конечном счете отвечает драйвер устройства: именноон определяет тип интерфейса устройства. Бывают ситуации, когда одно и то жеустройство рассматривается системой и как байт-ориентированное, и как блокориентированное. В качестве примера можно привести оперативную память.
ЗаведомоОЗУ является байт-ориентированным устройством, но при организации обменов или приразвертывании в оперативной памяти виртуальной файловой системы ОЗУ можетрассматриваться уже как блок-ориентированное устройство. Также отметим, что априорисчитается, что те устройства, на которых может располагаться файловая система,являются блок-ориентированными.Рассмотрим системную организацию информации, необходимой для управлениявнешними устройствами. Как упоминалось выше, в системе имеется специальный каталогустройств, в котором располагаются файлы особого типа — специальные файлыустройств. Эти файлы обеспечивают решение следующих задач:именование устройств (если быть более точными, то именование драйверовустройств);связывание имени, выбранного для именования устройства, с конкретным драйвером.Соответственно, структурная организация файлов устройств отличается от организации,например, регулярных файлов.
Специальные файлы устройств не имеют блоков файла,хранимых в рабочем пространстве файловой системы. Вся содержательная информацияфайлов данного типа размещается исключительно в соответствующем индексномдескрипторе. Индексный дескриптор состоит из перечня стандартных атрибутов файла,среди которых, в частности, указывается тип этого файла, а также включает в себянекоторые специальные атрибуты.
Эти атрибуты содержат следующие поля: тип файлаустройства (блок- или байт-ориентированное), а также еще 2 поля, позволяющиеосуществлять работу с конкретным драйвером устройства, — это т.н. старший номер имладший номер. Старший номер (major number) — это номер драйвера в таблицедрайверов, соответствующей типу файла устройства. А младший номер (minor number) —это некоторая дополнительная информация, передаваемая драйверу при обращении. Засчет этого реализуется механизм, когда один драйвер может управлять несколькимисхожими устройствами.6.2.2 Системные таблицы драйверов устройствДля регистрации драйверов в системе используются две системные таблицы:таблица блок-ориентированных устройств — bdevsw, и таблица байт-ориентированныхустройств — cdevsw. Соответственно, старший номер хранит ссылку на драйвер,находящийся в одной из таблиц; тип таблицы определяется типом файла устройств.Каждая запись этих таблиц содержит структуру специального формата,называемую коммутатором устройства.
Коммутатор устройства хранит указатели навсевозможные точки входа (т.е. реализуемые функции) в соответствующий драйвер, либоже в соответствующей записи таблицы вместо указанной структуры хранится специальнаяссылка-заглушка на точку ядра.Стоит отметить следующие типовые имена точек входа в драйвер:βopen(), βclose();βread(), βwrite();253βioctl();βintr().Символ β является аббревиатурой имени устройства: обычно в Unix-системах дляименования устройства используют двухсимвольные имена. Например, lp — принтер,mt — магнитная лента и т.п.В общем случае система специфицирует наиболее полный набор функций, которыйможет предоставить драйвер пользователю.
Если какая-либо функция отсутствует, то наее месте в коммутаторе может стоять заглушка. Заглушки могут быть двух типов:заглушка типа nulldev(), которая при обращении сразу возвращает управление, и заглушкатипа nodev(), которая при обращении возвращает управление с кодом ошибки. Например,для таймера скорее всего будут отсутствовать функции чтения и записи, причем припопытке чтения или записи система должна «ругнуться» (т.е.
заглушка типа nodev()).Некоторые из перечисленных точек входа являются специализированными. Спомощью функции βioctl() можно производить разного рода настройки и управлениедрайвером. Функция βintr() вызывается при поступлении прерывания, ассоциированного сданным устройством.Традиционно часть функций драйверов может быть реализована синхроннымспособом, а другая часть — асинхронным способом. Соответственно, синхронная частьдрайвера называется top half, а асинхронная — bottom half.6.2.3 Ситуации, вызывающие обращение к функциям драйвераСписок ситуаций, при которых происходит обращение к функциям драйверов,четко детерминирован.