Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (1114685), страница 57
Текст из файла (страница 57)
Данная модель не хранит избыточную информацию, поэтому в ней могутхраниться данные объемом, равным суммарной емкости дисков, при этом за счет параллельноговыполнения обменов доступ к информации становится более быстрым.Рис. 141.полоса 0полоса 1полоса 2полоса 3полоса 4полоса 5полоса 6полоса 7полоса 8полоса 9полоса 10полоса 11полоса 12полоса 13полоса 14полоса 15RAID 0.RAID 1, или система зеркалирования (6.1.4). Предполагается наличие двух комплектовдисков. При записи информации она сохраняется на соответствующем диске и на диске-дублере.При чтении информации запрос направляется лишь одному из дисков.
К диску-дублерупроисходит обращение при утере информации на первом экземпляре диска.Рис. 142.полоса 0полоса 0полоса 1полоса 1полоса 2полоса 2полоса 3полоса 3RAID 1.Данная модель является достаточно дорогой, причем дороговизна заключается не внепосредственной стоимости дисков (если предположить, что средняя цена диска 100 USD, тоорганизация на покупку 10 основных дисков и 10 дисков-дублеров должна потратить порядка2000 USD, что не является большой суммой для юридического лица). Цена вопроса встает приобслуживании данной системы: 20 дисков занимают много места, потребляют довольноприличную мощность и выделяют много тепла.
К этому можно добавить расходы на обеспечениерезервного питания: чтобы эти 20 дисков не отключались при перебоях с электропитаниемнеобходимо закупить источники бесперебойного питания с очень емкими аккумуляторами.Отметим, что модели RAID нулевого и первого уровней могут реализовыватьсяпрограммным способом.Следующие две модели (RAID 2, 6.1.4, и RAID 3, 6.1.4) — это модели с т.н.синхронизированными головками, что, в свою очередь, означает, что в массиве используются ненезависимые устройства, а специальным образом синхронизированные.
Эти модели обычноимеют полосы незначительного размера (например, байт или слово). Данные модели содержатизбыточную информацию, позволяющие восстановить данные в случае выхода из строя одного из219устройств. В частности, RAID 2 использует коды Хэмминга (т.е. коды, исправляющие однуошибку и выявляющие двойные ошибки). Модель RAID 3 более проста, она основана на четностис чередующимися битами. Для этого один из дисков назначается для хранения избыточнойинформации — полос, дополняющих до четности соответствующие полосы на других дисках (т.е.,по сути, в каждой позиции должно быть суммарное число единиц на всех дисках должно бытьчетным). И в том, и в другом случае при сбое одного из устройства за счет избыточнойинформации можно восстановить потерянные данные.b0b1b2b3f0(b)f1(b)f2(b)Рис.
143.RAID 2. Избыточность с кодами Хэмминга (Hamming, исправляет одинарные ивыявляет двойные ошибки).b0Рис. 144.b1b2b3P(b)В данном случае имеется 4 дискаданных и 1 диск четности. Тогдадля диска четности:X4(i)=X0(i)xorX1(i)xorX2(i)xorX3(i)Если произойдет потеря данныхна первом диске, то длявосстановлениядостаточновоспользоваться формулой:X1(i)=X0(i)xorX2(i)xorX3(i)xorX4(i)RAID 3.
Четность с чередующимися битами.RAID 4 является упрощением RAID 3 (6.1.4). Это массив несинхронизированныхустройств. Соответственно, появляется проблема поддержания в корректном состоянии дискачетности. Для этого каждый раз происходит пересчет по соответствующей формуле.Модели RAID 5 (6.1.4) и RAID 6 (6.1.4) спроектированы так, чтобы повысить надежностьсистемы по сравнению с RAID 3 и 4 уровней.
Опасно оказывается хранить важную информацию(в данном случае полосы четности) на одном носителе, т.к. при каждой записи происходит всегдаобращение к одному и тому же устройству, что может спровоцировать его скорейший выход изстроя. Надежнее разнести служебную информацию по разным дискам. Соответственно, RAID 5распределяет избыточную информацию по дискам циклическим образом, а RAID 6 используетдвухуровневую избыточную информацию (которая также разнесена по дискам).220полоса 0полоса 1полоса 2полоса 3полоса 4полоса 5полоса 6полоса 7полоса 8полоса 9полоса 10полоса 11полоса 12полоса 13полоса 14полоса 15Рис. 145.P(0-3)В данном случае имеется 4 дискаданных и 1 диск четности.
Тогдадля диска четности:X4(i)=X0(i)xorX1(i)xorX2(i)xorX3(i)P(4-7)P(8-11)P(12-15)После обновления полосы напервом диске:X4new (i)=X4(i)xorX1(i)xorX1new (i)RAID 4.P(0-3)полоса 0полоса 1полоса 2полоса 4полоса 5полоса 6полоса 8полоса 9P(8-11)полоса 10полоса 11полоса 13полоса 14полоса 15полоса 12Рис. 146.P(12-15)P(4-7)полоса 7RAID 5. Распределенная четность (циклическое распределение четности).полоса 0полоса 1полоса 2полоса 4полоса 5полоса 6полоса 8полоса 9P(8-11)P(12-15)Q(12-15)полоса 12полоса 3полоса 3P(0-3)Q(0-3)P(4-7)Q(4-7)Q(8-11)полоса 10полоса 11полоса 13полоса 14полоса 15полоса 7Рис. 147.RAID 6. Двойная избыточность (циклическое распределение четности сиспользованием двух схем контроля; требуется N+2 диска).6.26.2.1Работа с внешними устройствами в ОС UnixФайлы устройств, драйверыКак уже неоднократно упоминалось, одной из основных особенностей ОС Unix являетсяконцепция файлов: практически все, с чем работает система, представляется в виде файлов.Внешние устройства не являются исключением и также представлены в системе в видеспециальных файлов устройств, хранимых обычно в каталоге /dev.С точки зрения интерфейсов организации работы с внешними устройствами система делитабсолютно все устройства на две категории: байт-ориентированные и блок-ориентированныеустройства.
С блок-ориентированными устройствами обмен осуществляется порциями данныхфиксированной длины, называемыми блоками. Обычно размер блока кратен степени двойки, азачастую кратен 512 байтам. Все остальные устройства относятся к байт-ориентированным. Такиеустройства позволяют осуществлять обмен порциями данных произвольного размера (от 1 байтадо некоторого k). Надо отметить, что к байт-ориентированным устройствам помимо физическихустройств, с которыми можно осуществлять обмен, могут относиться устройства, с которыми221обмен не осуществим.
Примером такого устройства может служить таймер: реально обмены стаймером не происходят, он используется для генерации в системе через определенныепромежутки времени прерываний, но относится таймер именно к байт-ориентированнымустройствам.Но, говоря о блок- и байт-ориентированных устройствах, следует помнить, что зарегистрацию устройств в системе в конечном счете отвечает драйвер устройства: именно онопределяет тип интерфейса устройства.
Бывают ситуации, когда одно и то же устройстворассматривается системой и как байт-ориентированное, и как блок-ориентированное. В качествепримера можно привести оперативную память. Заведомо ОЗУ является байт-ориентированнымустройством, но организации обменов или при развертывании в оперативной памяти виртуальнойфайловой системы ОЗУ может рассматриваться уже как блок-ориентированное устройство. Такжеотметим, что априори считается, что те устройства, на которых может располагаться файловаясистема, являются блок-ориентированными.Рассмотрим системную организацию информации, необходимой для управления внешнимиустройствами.
Как упоминалось выше, в системе имеется специальный каталог устройств, вкотором располагаются файлы особого типа — специальные файлы устройств. Эти файлыобеспечивают решение следующих задач:− именование устройств (если быть более точными, то именование драйвера устройства);− связывание выбранного для именования устройства имени с конкретным драйвером.Соответственно, структурная организация файлов устройств отличается от организации,например, регулярных файлов. Специальные файлы устройств не имеют блоков файла, хранимыхв рабочем пространстве файловой системы.
Вся содержательная информация файлов данного типаразмещается исключительно в соответствующем индексном дескрипторе. Индексный дескрипторсостоит из перечня стандартных атрибутов файла, среди которых, в частности, указывается типэтого файла, а также включает в себя некоторые специальные атрибуты. Эти атрибуты содержатследующие поля: тип файла устройства (блок- или байт-ориентированное), а также еще 2 поля,позволяющие осуществлять работу с конкретным драйвером устройства, — это т.н.
старшийномер и младший номер. Старший номер (major number) — это номер драйвера всоответствующей типу файла устройства таблице драйверов. А младший номер (minor number) —это некоторая дополнительная информация, передаваемая драйверу при обращении. За счет этогореализуется механизм, когда один драйвер может управлять несколькими сходнымиустройствами.6.2.2Системные таблицы драйверов устройствДля регистрации драйверов в системе используются две системные таблицы: таблицыблок-ориентированных устройств — bdevsw, и таблица байт-ориентированных устройств —cdevsw.
Соответственно, старший номер хранит ссылку на драйвер, хранящийся в одной изтаблиц; тип таблицы определяется типом файла устройств.Каждая запись этих таблиц содержит структуру специального формата, называемуюкоммутатором устройства. Коммутатор устройства хранит указатели на всевозможные точкивхода (т.е. реализуемые функции) в соответствующий драйвер, либо же в соответствующей записитаблицы вместо указанной структуры хранится специальная ссылка-заглушка на точку ядра.Стоит отметить следующие типовые имена точек входа в драйвер:− βopen(), βclose();− βread(), βwrite();− βioctl();− βintr().Символ β является аббревиатурой имени устройства: обычно в Unix-системах для именованияустройства используют двухсимвольные имена. Например, lp — принтер, mt — магнитная лента, ит.п.222В общем случае система специфицирует наиболее полный набор функций, который можетпредоставить драйвер пользователю. Если какая-либо функция отсутствует, то на ее месте вкоммутаторе может стоять заглушка. Заглушки могут быть двух типов: заглушка типа nulldev(),которая при обращении сразу возвращает управление, и заглушка типа nodev(), которая приобращении возвращает управление с кодом ошибки.