Теория операционных систем

         

Дисковые массивы

  У тебя, Федот, жена, хоть умна, а все ж одна!
А соткать такое за ночь — их дивизия нужна!
Л. Филатов

Еще один прием оптимизация производительности дисковых накопителей — это объединение нескольких физических дисков в один большой логический диск. При таком объединении некоторые диски могут передавать данные, в то время, как другие позиционируют блок головок или ждут подхода нужного сектора к головке. Дисковые массивы выгодны не только с точки зрения производительности, но и повышают единичную емкость запоминающего устройства — это может быть, например, полезно для хранения крупных неделимых объектов, таких, как таблицы реляционной СУБД.


Следует учесть, что объединение дисков приводит к резкому снижению наработки массива на отказ: вероятности независимых событий складываются поэтому вероятность отказа любого из дисков массива равна сумме вероятностей отказа одиночного диска. Для компенсации или устранения этого недостатка данные в дисковых массивах обычно хранятся с избыточностью. Общее название всех технологий объединения дисков — RAID (Redundant Irray of Inexpensive Disks — избыточный массив недорогих дисков). Этот термин был предложен в работе [Gibson/Katz/Patterson I988], в которой проведен анализ различных технологий создания дисковых массивов с точки зрения их производительности и надежности и было рассмотрено пять возможных способов размещения избыточных данных. Предложенная авторами статьи нумерация этих технологий без ссылки на источник используется в самых разнообразных публикациях в форме RAID уровня X. В современных публикациях, например [www.acnc.com], часто упоминаются также дополнительные и комбинированные уровни RAID, в именовании которых общего согласия не достигнуто.
Впрочем, один дополнительный уровень, не упоминавшийся в статье [Gibson/Katz/Patterson 1988], практически везде понимается и именуется одинаково. Под RAID уровня 0 практически единогласно понимают простой стриппинг (stripping — дословно, разделение на полосы). Стриппинг, строго говоря, не является методом создания избыточных массивов, потому что он не предполагает избыточности: емкость результирующего логического диска равна сумме объемов физических дисков (рис. 9.40). Из-за этого RAID 0 не обсуждался в работе [Gibson/Katz/Patterson 1988].
RAID уровня 1 известен также как зеркалирование (mirroring). При зеркали-ровании на каждый из дисков записывается полная копия данных (рис. 9.41). Обычно в зеркальном режиме используется не более двух дисков. Зеркалирование обеспечивает некоторое падение производительности (обычно все-таки менее, чем двукратное), но гарантирует работоспособность системы при отказе любого из дисков. Оба эти приема широко применяются па практике, обычно с небольшим количеством дисков, не более двух, реже, трех. Они не требуют значительных вычислительных ресурсов и потому обычно реализуются программно, драйвером диска или файловой системы.
RAID уровня 2 предлагает снабжение блоков данных на дисках кодом Хэмминга (см. разд. Контрольные суммы) и размещение этого кода на отдельном диске массива. Эта технология имеет смысл, если контроллеры дисков не хранят код восстановления ошибок в собственных заголовках секторов. Поскольку современные диски практически без исключения используют восстанавливающее кодирование и динамическое переназначение дефектных секторов, RAID 2 практически не применяется.

Рис. 9.41. RAID1 (зеркалирование)

RAID уровня 3 и 4 похожи во многих отношениях. Каждый из этих методов требует не менее трех дисков и подсчета контрольной суммы таким способом, чтобы данные могли быть однозначно восстановлены при полной потере одного из дисков. В RAID уровня 3 контрольные суммы подсчитываются для каждого байта записываемых данных, а в RAID уровня 4 — для групп блоков. Для хранения контрольных сумм отводится отдельный диск.
Эти методики обеспечивают более низкую (хотя и достаточную для большинства практических целей) избыточность, чем зеркалирование, но, как стриппинг. увеличивают единичную емкость диска и повышают производительность. Для отказа всей системы требуется полный отказ более чем от одного диска; многие конструктивы дисковых массивов уровня более 2 предусматривают "горячую" (без выключения системы) замену дисков, что допускает теоретически неограниченную наработку на останов, недостижимую при использовании одиночных дисков.
RAID 3 требует изменения формата секторов диска и соответствующей переделки контроллера и не может применяться с серийными дисковыми приводами. Основным недостатком RAID 4 является необходимость обращения к диску с контрольной суммой при каждой модификации одного из блоков группы. При записи большого количества логически последовательных блоков это не проблема, но может превратиться в проблему при случайно распределенных записях одиночных блоков.
Этого недостатка лишен RAID уровня 5, в котором контрольные суммы распределены по всем дискам массива (рис. 9.42). RAID 5 находят широкое применение в серверах уровня рабочей группы, или подразделения. При программной реализации, впрочем, подсчет контрольных сумм требует значительной доли вычислительной мощности ЦПУ, поэтому широкое распространение получили "аппаратные" контроллеры RAID 5, имеющие собственный процессор и, как правило, довольно большой объем собственной памяти. Это не мешает некоторым ОС, в частности Windows NT/2000/XP, реализовать RAID 5 программно на уровне файловой системы.

Рис. 9.42. RAID уровня 5

Содержание раздела