При использовании стратегий SSTF, SCAN и C-SCAN может оказаться возможной ситуация, когда один или несколько процессов с высокой частотой обращений к одной дорожке монополизируют устройство за счет многочисленных повторений запросов к одной и той же дорожке. Наиболее характерна эта особенность для многоповерхностных дисков с большой плотностью записи. Для предотвращения такого "залипания головки" очередь дисковых запросов может быть сегментирована, причем за один прием полностью выполняется весь сегмент заданий. Примерами такого подхода являются стратегии N-step-SCAN и FSCAN.
Стратегия N-step-SCAN позволяет произвести сегментацию очереди дисковых запросов на подочереди длиной N. Каждая подочередь обрабатывается за один прием с использованием стратегии SCAN. В ходе обработки очереди к некоторой другой очереди могут добавляться новые запросы. Если в конце текущего сканирования доступными оказываются менее N запросов, то все они обрабатываются в следующем цикле сканирования. При больших значениях N выполнение алгоритма N-step-SCAN похоже на выполнение SCAN; предельный случай N=1 соответствует стратегии FIFO.
FSCAN — стратегия, использующая две подочереди. С началом сканирования все запросы находятся в одной из очередей; другая при этом остается пустой. Во время сканирования первой очереди все новые запросы попадают во вторую очередь. Таким образом, обслуживание новых очередей откладывается, пока не будут обработаны все старые запросы.
RAID
Как упоминалось ранее, рост производительности вторичных запоминающих устройств значительно отстает от роста производительности процессоров и основной памяти. Такое несоответствие вынуждает обращать особое внимание на дисковую систему при повышении уровня общей производительности.
Как и в других областях, дополнительное повышение эффективности может быть достигнуто путем параллельного использования нескольких устройств. В случае с дисками это означает использование массивов независимо и параллельно работающих дисков. При наличии множества дисков различные запросы ввода-вывода могут обрабатываться параллельно, если блок данных, к которому производится обращение, распределен по множеству дисков.
В случае применения множества дисков имеется большое количество вариантов организации данных и добавления избыточности для повышения надежности (а это может создать трудности при разработке схем баз данных, способных работать на разных платформах под управлением разных операционных систем). К счастью, имеется промышленный стандарт RAID (Redundant Array of Independent Disks — избыточный массив независимых дисков). RAID-схема состоит из 7 уровней1 — от нулевого до шестого. Эти уровни не имеют иерархической • структуры, но определяют различные архитектуры со следующими общими характеристиками.
1. RAID — это набор физических дисков, рассматриваемых операционной системой как единый логический диск.
2. Данные распределены по физическим дискам массива.
3. Избыточная емкость дисков используется для хранения контрольной ин формации, гарантирующей восстановление данных в случае отказа одного из дисков.
Вторая и третья характеристики различны для разных уровней RAID. RAID нулевого уровня не поддерживает третью характеристику вовсе.
Термин RAID первоначально был употреблен в научном докладе группы разработчиков Университета Калифорния в Беркли [РАТТ88]2. В докладе в общих чертах были рассмотрены различные конфигурации и применение RAID, a также определения уровней RAID. Эта стратегия заменяет диски с большой плотностью записи множеством дисков с малой плотностью и распределяет данные таким образом, что обеспечивает возможность одновременного доступа к данным из разных дисков. Это существенно повышает эффективность ввода-вывода и дает возможность постепенного наращивания емкости массива.
Уникальность предложенной технологии заключается в эффективном использовании избыточности. Благодаря наличию большого количества дисков повышается производительность, но увеличивается вероятность сбоев. В связи с этим RAID предусматривает хранение дополнительной информации, позволяю- • щей восстанавливать данные, утерянные вследствие сбойной ситуации.
В табл. 11.4 представлены все 7 уровней RAID. Отметим, что уровни 2 и 4 не подходят для промышленного применения, но, тем не менее, описание этих уровней помогает определиться с выбором схем проектирования некоторых других уровней.
Таблица 11.4. Уровни RAID
Категория
Уровень
Описание
Скорость обработки запросов
Скорость передачи данных
Типичное применение
Расщепление
Без избыточ-
ности
Большие поло-
сы: отлично
Малые поло-
сы: отлично
Приложения
с некритическими
данными,
требующие
высокой
призводи-
тельности
Отражение3
Отражение
Хорошо/удов-
летворительно
Удовлетвори-
тельно/удов-
летворительно
Системные
диски, важ-
ные файлы
Параллельный
доступ
Избыточность
с кодами
Хэмминга
Плохо
Отлично
Четность
с чередую-
щимися
битами
Плохо
Отлично
Приложения
с большими
запросами
ввода-вывода,
такие, как
графические
редакторы
или САПР
Независимый
доступ
Четность с
чередую-
щимися
блоками
Отлично/
удовлетвори-
тельно
Удовлетвори-
тельно/плохо
Распределен-
ная четность с
чередующи-
мися блоками
Отлично/
удовлетвори-
тельно
Удовлетвори-
тельно/плохо
Высокая ско-
рость запро-
сов, интен-
сивное чте-
ние, поиск
данных
Двойная рас-
пределенная
четность с
чередующи-
мися блоками
Отлично/
плохо
Удовлетвори-
тельно/плохо
Приложения,
требующие
исключи-
тельно
высокой на-
дежности
На рис. 11.9 показано использование семи схем RAID для поддержки того же объема данных, который требует четырех дисков без применения избыточности. Рисунок показывает размещение пользовательских и избыточных данных, а также указывает относительные требования уровней к дисковому пространству.
RAID 0
Уровень 0 не является настоящим RAID-уровнем, поскольку он не использует избыточность для повышения эффективности. Тем не менее существует ряд применений, таких, как некоторые суперкомпьютеры, где доминируют вопросы производительности и емкости, а снижение стоимости более важно, чем надежность.
В схеме RAID 0 пользовательские и системные данные распределяются по всем дискам массива. Это дает заметное преимущество перед использованием одного большого диска: если два различных запроса ввода-вывода обращаются к двум различным блокам данных, то имеется немалая вероятность того, что эти блоки размещены на различных дисках, и два запроса могут быть обработаны, уменьшая тем самым время ожидания в очереди ввода-вывода.
Заметим, однако, что RAID 0 идет дальше простого распределения данных по массиву дисков: данные расщеплены (stripped) по всем имеющимся дискам (см. рис. 11.10). Все пользовательские и системные данные рассматриваются как хранящиеся на одном логическом диске. Диск делится на полосы, которые могут быть физическими блоками, секторами или другими единицами хранения. Полосы циклически размещаются на последовательных дисках массива. В n-дисковом массиве первые п логических полос физически располагаются как первые полосы каждого из га дисков; вторые га полос располагаются как вторые полосы каждого из дисков и т.д. Преимущество такой компоновки состоит в том, что если один запрос ввода-вывода обращается к множеству логически последовательных полос, то параллельно может быть обработано до га полос, и намного уменьшается тем самым время обработки запроса.
На рис. 11.10 показано, что для отображения логического и физического дисковых пространств используется соответствующее программное обеспечение, которое может быть реализовано как в дисковой подсистеме, так и в компьютере.