RAID: большая польза от небольшой избыточности
Методы повышения надежности систем
Избыточность в RAID: распределяй и властвуй
Методы повышения надежности систем
Информация — это товар. И товар нередко очень ценный. Для защиты от потери данных придумано немало способов, но технология RAID — пожалуй, один из немногих коренным образом изменивших подход к хранению данных. Она облегчила жизнь системных администраторов, а наиболее ленивым даже позволила отказаться от резервного копирования.
Итак, одна из причин, ведущих к утрате информации, — аппаратные сбои и поломки. Они чаще случаются в механических, нежели в чисто электронных устройствах. Накопители на жестких магнитных дисках — устройства электромеханические, и, как следствие, они представляют собой слабое звено всей корпоративной подсистемы хранения данных. Наиболее известным способом повышения общей надежности системы, состоящей из относительно ненадежных элементов, является резервирование. На боевых самолетах, вертолетах и даже космических кораблях системы управления имеют два-три параллельных канала, что повышает общую «живучесть» летательного аппарата. В офисные компьютеры, слава Богу, обычно никто не стреляет, так что при некоторых допущениях можно обойтись и меньшей степенью избыточности. А именно — той, которая диктуется теорией информации. Продолжая механическую аналогию, представим, что тяга управления самолета не дублируется, а делается из нескольких более тонких тяг. Все вместе они имеют прочность несколько большую, чем необходимо. Тогда, если вражеский снаряд перебьет одну из них, остальные все же позволят пилоту добраться до своего аэродрома. Таким образом, затратив меньше материала, чем при полном дублировании, мы получили требуемую надежность.
Разработка технологии RAID1 велась на основе похожей философии: важно, чтобы информация сохранилась при отказе одного привода из всего массива. Значит, должна быть обеспечена минимальная избыточность, которая в «мирное время» не слишком обременяет дополнительными расходами, но «в бою» спасает важную информацию.
Избыточность в RAID: распределяй и властвуй
Контроллер RAID-массива содержит микропроцессор, часто i960 производства Intel. Этот процессор вычисляет контрольные суммы блоков данных, получаемых от компьютера, и распределяет как данные, так и избыточную информацию по дискам массива. Помимо вычисления контрольных сумм и распределения данных по дискам контроллер должен уметь собирать «разбросанные» (распределенные) по дискам данные в единое целое, определять исправность дисков, проверять целостность считанных данных при помощи контрольных сумм и восстанавливать на основе избыточной информации данные, ранее записанные на отказавший диск. Распределять данные по нескольким дискам желательно еще и потому, что это может дать выигрыш в скорости чтения/записи за счет параллельной работы нескольких устройств. Распределение может производиться различными способами. Эти различные способы именуются уровнями (Levels), которые обозначаются цифрами от 0 до 5. Все уровни с номерами более 5 являются частными разработками фирм — производителей контроллеров, и с ними нужно знакомиться, изучая описания конкретных устройств. Например, RAID 7 является зарегистрированной торговой маркой фирмы Storage Computer Corporation.
RAID-массив состоит из контроллера и подсоединяемого к нему набора дисков. Диски могут располагаться как непосредственно в сервере, что практикуется многими ведущими производителями, так и во внешнем устройстве, представляющем собой миниатюрную дисковую стойку. Легкая установка дисков в массив обеспечивается специальным кожухом, внутри которого устанавливаются обычные диски с интерфейсом SCSI. На кожухе, как правило, устанавливается 96-контактный разъем, который обеспечивает подключение к контактной панели. Внутри кожуха имеется стандартный разъем SCSI, обеспечивающий подключение диска. Другой разъем устанавливается вместо перемычек, предназначенных для установки номера устройства (SCSI ID). Таким образом, номер устройства устанавливается в зависимости от номера «посадочного места». Еще один разъем служит для управления раскруткой двигателя винчестера. При выведении скорости вращения на номинальную двигатель жесткого диска потребляет повышенную мощность, поэтому запуск дисков производится по очереди, во избежание перегрузки блока питания.
RAID-контроллер, в свою очередь, может представлять собой как карту, устанавливаемую в сервер, так и внешнее устройство, подключаемое при помощи интерфейса SCSI. Кроме того, контроллер «обманывает» BIOS, представляя несколько дисков как один винчестер большего размера. Этот размер вычисляется в случае RAID 5 по формуле C=(n-1)C0, где C — суммарная емкость, C0 — емкость одного диска, n — количество дисков в массиве. Исключением являются массивы с резервированием.
Большинство современных RAID-контроллеров поддерживает функцию резервирования, которая позволяет указывать один из дисков массива как запасной. Резервный диск не используется до тех пор, пока не произойдет отказ одного из рабочих. Тогда происходит автоматическое подключение резервного и восстановление на нем той информации, которая хранилась на отказавшем диске. Во время восстановления скорость чтения и записи может снижаться в зависимости от алгоритма работы массива.
Значительное количество современных RAID-массивов поддерживает Hot Plug («горячую» замену, то есть смену диска без отключения питания). Во многих массивах, выполненных в виде отдельного устройства, имеются резервные блоки питания, которые также можно заменять без выключения.
В настоящее время растущей популярностью пользуются RAID-массивы на базе дисков с интерфейсом IDE. Будучи дешевле, они обеспечивают приемлемый уровень надежности для недорогих систем начального уровня, однако их нельзя всерьез рассматривать как конкуренцию массивам с интерфейсом SCSI. Например, контроллер FastTrack производства фирмы Promise Technology, Inc. обеспечивает подключение не более четырех дисков и уровень RAID 0 или 1. Требование невысокой стоимости не позволило реализовать более сложные алгоритмы.
Программные реализации RAID, имеющиеся, например, в ОС Windows NT2, следует применять только в тех случаях, когда заранее известно, что нагрузка на сервер будет гораздо ниже номинала и у процессора останется много свободного времени на жонглирование данными.
Уровни RAID
Для лучшего понимания, а значит, и более успешного применения рассмотрим уровни RAID в порядке возрастания.
Уровень 0 подразумевает отсутствие избыточности. Данные разбиваются на блоки, и каждый следующий блок записывается на следующий диск в кольцевом порядке. Работа идет параллельно с несколькими дисковыми контроллерами, поэтому производительность чтения/записи достигается очень высокая. Никакой избыточной информации нет, поэтому контроллер работает с максимальной скоростью и минимальной нагрузкой. Основной недостаток проистекает из достоинства — при выходе из строя одного диска полностью теряется вся информация, имевшаяся в массиве. Этот уровень может применяться там, где высокая скорость доступа является решающим требованием, например, при редактировании видео или при допечатной подготовке. При этом резервное копирование строго обязательно.
Уровень 1 — это знакомое со времен Novell NetWare SFT зеркальное отображение дисков. Обладает удвоенной скоростью чтения, так как последовательные блоки параллельно считываются двумя дисковыми контроллерами. При отказе одного диска скорость чтения хотя и снижается вдвое, но остается на уровне скорости отдельного устройства. Механизм восстановления синхронизации после замены отказавшего диска предельно прост. Еще одно уникальное свойство уровня 1 — возможность продолжения работы при отказе более чем одного диска, при этом, правда, все отказавшие устройства должны находиться по одну сторону «зеркала».
Сфера применения RAID уровня 2 лежит там, где при не очень большом объеме данных требуется высокая надежность и обеспечение быстрого доступа к данным, например в бухгалтерии, при выписке счетов и т.д. При своевременном переносе устаревшей информации на ленты можно ограничиться небольшой емкостью дисков, сведя, таким образом, расходы на двойное резервирование к небольшой в абсолютном исчислении сумме.
При использовании RAID уровня 2 записываемые данные «распыляются» по дискам бит за битом. При этом вычисляются коды Хэмминга для коррекции ошибок и записываются на отдельные диски. При чтении коды Хэмминга используются для проверки и исправления данных. Таким образом, коррекция производится «на лету», и используется преимущество параллельного чтения с нескольких устройств сразу. Ускорению чтения данных способствует и простота алгоритма работы контроллера. Однако из-за несовершенства системы кодов Хэмминга для их хранения требуется довольно много места, то есть избыточность становится выше теоретически достижимой, что повышает стоимость системы. Скорость записи в лучшем случае, то есть при синхронизации дисков, равна скорости записи на одиночный диск. Этот уровень RAID применяется не очень часто, однако по области применения он универсален.
В RAID уровня 3 блоки записываемых данных разбиваются на подблоки меньшего размера (так называемые полосы). Эти полосы записываются на разные диски параллельно. Одновременно рассчитываются и записываются на отдельный диск контрольные суммы. Этот уровень обеспечивает высокую скорость чтения из-за параллельной работы всех устройств и меньшую избыточность по сравнению с уровнем 2. Даже при отказе одного диска скорость чтения снижается ненамного. Скорость записи маленьких файлов также очень высока, но падает при росте их размеров, так как узким местом становится диск четности. Обычно массив этого уровня состоит из четырех-пяти дисков, один из которых выделен для хранения контрольных сумм. Из-за высокой скорости чтения может быть рекомендован для применения в тех же областях, что и RAID 0.
Примерно так же организован RAID уровня 4 , только блоки не разбиваются на полоски, а распределяются целиком по разным дискам массива. Контрольные суммы также хранятся на отдельном диске. Из-за принятого алгоритма работы преимущества хранения данных на нескольких дисках проявляются только при чтении больших файлов. Если в массиве уровня 3 диски начинают работать параллельно при запросе на чтение размером более одной полоски, то в уровне 4 параллельная работа начинается при запросе на чтение более чем одного блока. Скорость записи у массивов этого уровня наименьшая, а восстановление после замены отказавшего диска происходит долго и мучительно. RAID 4 следует применять только в тех случаях, когда требуется быстро считывать большие объемы данных, смирившись с медленной записью.
Наконец, RAID уровня 5 является компромиссом между достоинствами RAID Level 3 и RAID Level 4. По дискам распределяются блоки данных, так что скорость чтения велика только для больших файлов, но алгоритм работы контроллера упрощается. Но упрощается он только для того, чтобы контроллер успевал справляться с другой задачей — распределением по дискам контрольных сумм. RAID 5 не имеет специального диска для хранения контрольных сумм. Минимальна избыточность — всегда только один лишний диск. Да и эстетически полностью симметричная система воспринимается лучше. Однако при отказе любого из дисков неизбежно замедление (уровни 2-4 при отказе диска четности работают даже быстрее), так как контроллер вынужден собирать недостающие данные по всем оставшимся дискам. Восстановление после замены отказавшего диска происходит легче, чем в уровне 4, но не так просто, как в уровне 1. Тем не менее этот уровень остается наиболее гибким, экономичным и поэтому широко применяемым в тех случаях, когда не предъявляется специальных требований типа ускоренного чтения гигантских файлов.
Помимо шести базовых уровней существует множество вариаций и комбинаций, но видно, что основными признаками являются: способ распределения основной информации по дискам (чем мельче порции, тем эффективнее работа при поблочном чтении) и наличие выделенных дисков для хранения избыточной информации.
КомпьютерПресс 8'1999