Элементы дисковых подсистем серверов

Дисковая и файловая подсистемы компьютера обычно не являются предметом особого внимания пользователей. Винчестер довольно надежная штука и функционирует как бы сам по себе, совершенно не привлекая внимание рядового юзера.

Усваивая основные приемы работы с файлами и папками, такой пользователь доводит их до полного автоматизма, не задумываясь о существовании дополнительного инструментария для обслуживания жесткого диска. Управление дисками полностью перекладывается на операционную систему.

Трудности начинаются либо тогда, когда файловая система демонстрирует явное снижение производительности, либо тогда, когда она начинает сбоить. Другой повод для более внимательного изучения этой темы: установка на ПК нескольких «винтов» одновременно.

Как и всякое сложное устройство, винчестер нуждается в регулярном обслуживании. Windows 7 хотя и берет на себя частично эти заботы, она не способна самостоятельно решить за вас все проблемы. В противном случае «тормоза» со временем гарантированы. Как минимум нужно уметь проделывать следующие вещи:

  • Производить очистку файловой системы от мусора. В понятие мусора входят временные файлы, расплодившиеся «кукис» браузеров, дублированная информация и т. д.
  • Осуществлять дефрагментацию жесткого диска. Файловая система Windows построена таким образом, что видимое пользователем как целое на самом деле представляет собой разбросанные по магнитной поверхности винчестера отдельные фрагменты файлов, объединенные в цепочку: каждый предыдущий фрагмент знает каждый следующий. Для чтения файла как целого нужно собрать эти части вместе, для чего необходимо проделать большое количество циклов чтения из разных мест поверхности. То же самое происходит и при записи. Дефрагментация позволяет собрать все эти кусочки в одно место.
  • Просматривать и корректировать информацию о разделах.
  • Уметь открывать доступ к скрытым и системным файлам и папкам.
  • При необходимости уметь работать сразу с несколькими «винтами».

А также выполнять некоторые другие полезные действия. В нашей заметке мы не станем обсуждать весь круг этих вопросов, а остановимся лишь на некоторых.

Как читать информацию о разделах?

Для тех, кто не в курсе, дадим пояснение: в Windows существует такое понятие, как «оснастка».

Это исполняемый файл с расширением.msc, запускаемый как обычный exe. Все оснастки имеют единообразный интерфейс и построены на технологии COM – основе внутреннего устройства этой операционной системы.

Окно управления дисками также является оснасткой. Запустить ее можно набрав в окошке «Выполнить» ее имя diskmgmt.msc так, как показано на следующем рисунке:

В результате перед нами окажется окно самой оснастки с заголовком «Управление дисками». Вот как это приложение выглядит:

Этот интерфейс интуитивно понятен и прост. В верхней панели окна мы видим перечень всех имеющихся на «винте» томов (или разделов) с сопутствующей информацией о них, как то:

  • Имя раздела.
  • Типа раздела.
  • Его полная емкость.
  • Его статус (различные разделы могут иметь разный статус).
  • Оставшееся свободное место, выраженное в гигабайтах и процентах от общего объема.

И другая информация. В нижней панели расположен перечень накопителей и разделов. Именно отсюда можно производить операции с томами и накопителями. Для этого нужно щелкнуть по имени тома правой кнопкой мыши и выбрать конкретную операцию из подменю «Действия».

Главное преимущество интерфейса в том, что здесь все собрано в кучку – нет нужды блуждать по разным меню и окнам, чтобы осуществить задуманное.

Операции с томами

Разберем некоторые неочевидные операции с разделами. Для начала обсудим переход из формата MBR в формат GPT. Оба эти формата соответствуют различным типам загрузчика. MBR – классический, но ныне устаревший формат загрузчика.

У него есть явные ограничения как по объему тома (не более 2 Тб), так и по количеству томов – поддерживается не более четырех. Не стоит путать том и раздел – это несколько отличные друг от друга понятия. Об их отличиях читайте в интернете. Формат GPT построен на технологии GUID и не имеет этих ограничений.

Так что если вы имеете диск большого размера – смело конвертируйте MBR в GPT. Правда, при этом все данные на диске будут уничтожены – их потребуется скопировать в другое место.

Технология виртуализации проникла повсюду. Не обошла она и файловую систему. При желании вы можете создавать и монтировать так называемые «виртуальные диски».

Такое «устройство» представляет собой обычный файл с расширением.vhd и может использоваться как обычное физическое устройство – как для чтения, так и для записи.

Это открывает дополнительные возможности для каталогизации информации. На этом наше повествование окончено. Управление дисками в Windows 7 – довольно обширная тема, погрузившись в которую можно открыть для себя немало нового.

16.01.1997 Патрик Корриган, Микки Эпплбаум

Варианты конфигурации дисковых подсистем серверов многообразны, и, как следствие, неизбежна путаница. Чтобы помочь вам разобраться в этом непростом вопросе, мы решили рассмотреть основные технологии и экономическую оправданность их применения. ДИСКОВЫЕ

Варианты конфигурации дисковых подсистем серверов многообразны, и, как следствие, неизбежна путаница. Чтобы помочь вам разобраться в этом непростом вопросе, мы решили рассмотреть основные технологии и экономическую оправданность их применения.

В случае дисковых подсистем серверов вы имеете выбор из множества вариантов, но изобилие затрудняет нахождение той системы, которая будет в вашем случае лучшей. Ситуация осложняется тем, что в процессе выбора придется разбираться в немалом объеме ложной информации и маркетинговой шумихи.

Понять суть этого вопроса должен помочь предлагаемый нами обзор основных технологий дисковых подсистем серверов и обсуждение целесообразности их применения с точки зрения стоимости, производительности, надежности и отказоустойчивости.

ДИСКОВЫЕ ИНТЕРФЕЙСЫ

Определяете ли вы спецификацию нового сервера или же модернизируете существующий, дисковый интерфейс является важнейшим вопросом. Большинство сегодняшних дисков используют интерфейсы SCSI или IDE. Мы рассмотрим обе технологии, опишем их реализации, обсудим их работу.

SCSI - это стандартизованный ANSI интерфейс, имеющий несколько вариаций. Первоначальная спецификация SCSI, именуемая теперь SCSI-I, использует 8-разрядный канал данных при максимальной скорости передачи данных 5 Мбит/с. SCSI-2 допускает несколько вариаций, в том числе Fast SCSI с 8-разрядным каналом данных и скоростью передачи до 10 Мбит/с; Wide SCSI с 16-разрядным каналом данных и скоростью передачи до 10 Мбит/с; и Fast/Wide SCSI с 16-разрядным каналом данных и скоростью передачи до 10 Мбит/с (см. Таблицу 1).

ТАБЛИЦА 1 - ВАРИАНТЫ SCSI

SCSI-1 Максимальная производительность Ширина канала Частота Число устройств*
5 Мбит/с 8 разрядов 5 МГц 8
SCSI-2
Fast SCSI 10 Мбит/с 8 разрядов 10 МГц 8
Fast/Wide SCSI 20 Мбит/с 16 разрядов 10 МГц 8; 16**
* в число поддерживаемых устройств входит HBA ** с несимметричным выходным сигналом; дифференциальный

С появлением "широкого" 16-разрядного Fast/Wide SCSI 8-разрядные версии стали иногда называть "узкими" - Narrow SCSI. Недавно появилось еще несколько реализаций SCSI: Ultra SCSI, Wide Ultra SCSI и SCSI-3. В сравнении с более распространенными вариантами эти интерфейсы имеют некоторое преимущество в производительности, но, поскольку они распространены еще не очень широко (число использующих данные интерфейсы устройств весьма ограничено), мы не будем обсуждать их в нашей статье.

Кабельная система SCSI-I - это линейная шина с возможностью подключения до восьми устройств, включая главный адаптер шины (host bus adapter, HBA). Такой дизайн шины называется SCSI c несимметричным выходным сигналом (single-ended SCSI), при этом длина шлейфа может достигать девяти метров. SCSI-2 (практически вытеснивший SCSI-I) поддерживает и SCSI c несимметричным выходным сигналом, и дифференциальный SCSI. Дифференциальный SCSI использует иной, нежели SCSI c несимметричным выходом, метод сигнализации и поддерживает до 16 устройств на шлейфе длиной до 25 метров. Он обеспечивает лучшее подавление шума, что во многих случаях означает лучшую производительность.

Одна из проблем с дифференциальным SCSI заключается в совместимости устройств. Например, сегодня количество разновидностей совместимых с дифференциальным SCSI накопителей на магнитной ленте и приводов CD-ROM ограничено. Дифференциальные устройства и HBA обычно немного дороже устройств с несимметричным выходным сигналом, но их преимущество в том, что они поддерживают большее число устройств на канал, имеют более длинный шлейф и, в некоторых случаях, обладают лучшей производительностью.

Выбирая устройства SCSI, вы должны знать о проблемах совместимости. SCSI c несимметричным выходным сигналом и дифференциальный SCSI могут использовать одну и ту же проводку, но сочетать устройства с несимметричным выходным сигналом и дифференциальные устройства нельзя. Wide SCSI применяет отличную от Narrow SCSI кабельную систему, так что использовать на одном и том же канале устройства Wide SCSI и Narrow SCSI невозможно.

КАК РАБОТАЕТ SCSI

В SCSI контроллер устройства (например контроллер диска) и интерфейс с компьютером - устройства разные. Интерфейс с компьютером, HBA, добавляет к компьютеру дополнительную интерфейсную шину для подсоединения нескольких контроллеров устройств: до семи контроллеров устройств на канале SCSI c несимметричным выходным сигналом и до 15 на дифференциальном канале. Технически каждый контроллер может поддерживать до четырех устройств. Однако при высоких скоростях обмена сегодняшних высокоемких дисков контроллер устройства обычно встраивается в диск с целью уменьшения помех и электрических наводок. Это значит, что вы можете иметь до семи дисков на канале SCSI с несимметричным выходным сигналом и до 15 на дифференциальном канале SCSI.

Одно из преимуществ SCSI - обработка нескольких, накладывающихся друг на друга команд. Эта поддержка перекрывающегося ввода/вывода дает дискам SCSI возможность полностью сочетать свои операции чтения и записи с другими дисками системы, благодаря чему разные диски могут обрабатывать команды параллельно, а не по очереди.

Поскольку вся интеллектуальность дискового интерфейса SCSI заключается в HBA, HBA контролирует доступ ОС к дискам. Как результат, HBA, а не компьютер, разрешает конфликты трансляции и доступа к устройствам. В целом это значит, что при условии использования правильно написанных и установленных драйверов компьютер и ОС не видят никакой разницы между устройствами.

Вдобавок, поскольку HBA контролирует доступ между внутренней шиной расширения компьютера и шиной SCSI, он может разрешать конфликты доступа к ним обеим с предоставлением таких расширенных возможностей, как сервис обрыва/восстановления связи. Обрыв/восстановление позволяют ОС послать конкретному устройству команду на поиск, чтение или запись, после чего диск предоставляется самому себе для выполнения команды, благодаря чему другой диск на том же канале может тем временем получить команду. Этот процесс способствует значительному повышению пропускной способности дисковых каналов с более чем двумя дисками, особенно когда данные разнесены или разбросаны по дискам. Другая расширенная функция - синхронный обмен данными, вследствие чего общая пропускная способность дискового канала и целостность данных увеличиваются.

IDE

IDE - фактический стандарт, широко используемый в ПК на базе процессоров х86. Это лишь общая рекомендация для производителей, поэтому каждый мог свободно разрабатывать специфический интерфейс IDE для своих устройств и адаптеров. В итоге продукты от разных производителей, и даже разные модели одного и того же производителя, оказывались несовместимы друг с другом. Когда спецификация устоялась, данная проблема практически исчезла, но несовместимость все же возможна.

В отличие от SCSI, IDE, возлагает выполнение интеллектуальных функций на диск, а не HBA. HBA для IDE практически не обладает интеллектуальностью и просто напрямую выводит шину компьютера к дискам. Без промежуточного интерфейса число устройств на одном канале IDE ограничивается двумя, а длина кабеля тремя метрами.

Поскольку весь интеллект устройств IDE находится на самих устройствах, одно из устройств на канале назначается главным (channel master), а встроенный контроллер на втором отключается, и оно становится подчиненным (chanell slave). Главное устройство контролирует доступ через канал IDE к обоим устройствам и выполняет для них все операции ввода/вывода. Это одна из возможностей конфликта между устройствами из-за различных реализаций производителями интерфейса IDE. Например, один диск может быть рассчитан на работу с конкретной схемой контроллера, а главное устройство, к которому он подключен, может использовать другой тип контроллера. Вдобавок диски более нового расширенного стандарта Enhanced IDE (EIDE) применяют расширенный набор команд и трансляционных таблиц в целях поддержки дисков большей емкости и большей производительности. Если они подсоединены к старому стандартному, главному диску IDE, они не только теряют свои расширенные функции, но и могут не предоставить вам всю свою доступную емкость. Хуже того, они могут сообщать ОС о своей полной емкости, будучи не в состоянии ее использовать, что чревато повреждением информации на диске.

Возможность повреждения данных обусловлена тем, что каждая ОС по-своему воспринимает информацию о конфигурации диска. Например, DOS и системный BIOS допускают максимальную емкость диска только 528 Мбайт. NetWare и другие 32-х разрядные системы не имеют этих ограничений и способны читать весь диск IDE напрямую через его электронику. Когда вы создаете на одном диске несколько разделов различных ОС, каждая из них видит емкость и конфигурацию по-своему, а это может привести к перекрытию таблиц разделов, что, в свою очередь, существенно повышает риск потери данных на диске.

Оригинальная архитектура IDE не позволяет распознавать диски больше 528 Мбайт и может поддерживать только два устройства на канал при максимальной скорости передачи 3 Мбит/с. Для преодоления некоторых ограничений IDE в 1994 году была представлена архитектура EIDE. EIDE поддерживает большую емкость и производительность, однако ее скорости передачи от 9 до 16 Мбит/с по-прежнему медленнее скорости передачи SCSI. Кроме того, в отличие от 15 устройств на канал для SCSI, она может поддерживать максимум четыре на канал. Отметим также, что ни IDE, ни EIDE не реализуют функций многозадачности. И следовательно, не могут обеспечить в типичном серверном окружении тот же уровень производительности, что и интерфейсы SCSI.

Хотя стандарт IDE разрабатывался исходно для дисков, сейчас он поддерживает ленточные устройства и CD-ROM. Однако разделение канала с CD-ROM или ленточным устройством может отрицательно сказаться на производительности диска. В целом преимущества SCSI в производительности и расширяемости делают его в сравнении с IDE или EIDE более предпочтительным для большинства серверных приложений старшего класса, где требуется высокая производительность. Однако для приложений начального уровня, где производительность или расширяемость не играют большой роли, хватит IDE или EIDE. В то же время, если вам требуется избыточность дисков, то IDE из-за потенциальных проблем, связанных с подходом master-slave, не лучший вариант. Кроме того, следует опасаться возможного перекрытия таблиц разделов и проблем несовместимости устройств master-slave.

Тем не менее есть несколько случаев, когда интерфейсы IDE и EIDE могут быть использованы в серверах старшего класса. Обычной практикой является, например, использование небольшого диска IDE для раздела DOS на серверах NetWare. Широко практикуется также применение приводов CD-ROM с интерфейсом IDE для загрузки ПО.

ИЗБЫТОЧНЫЕ ДИСКОВЫЕ СИСТЕМЫ

Еще один важный для обсуждения вопрос при определении спецификации сервера - избыточность. Есть несколько методов повышения надежности дисковой системы из нескольких дисков. Большинство этих схем избыточности - вариации RAID (расшифровывается как "избыточный массив недорогих или независимых дисков"). Оригинальная спецификация RAID была разработана для замены больших и дорогих дисков мэйнфреймов и мини-компьютеров массивами небольших и дешевых дисков, предназначенных для мини-компьютеров, - отсюда слово "недорогие". К сожалению, в системах RAID редко встречается что-нибудь недорогое.

RAID - это серия реализаций избыточных дисковых массивов для обеспечения различных уровней защиты и скорости передачи данных. Поскольку RAID предполагает использование дисковых массивов, лучшим интерфейсом для применения будет SCSI, поскольку он может поддерживать до 15 устройств. Уровней RAID существует 6: от нулевого до пятого. Хотя некоторые производители рекламируют свои собственные схемы избыточности, которые они называют RAID-6, RAID-7 или выше. (RAID-2 и RAID-4 нет в сетевых серверах, поэтому мы о них говорить не будем.)

Из всех уровней RAID нулевой имеет наибольшую производительность и наименьшую защищенность. Он предполагает наличие как минимум двух устройств и синхронизированную запись данных на оба диска, при этом диски выглядят как одно физическое устройство. Процесс записи данных на несколько дисков называется заполнением дисков (drive spanning), а собственно метод записи этих данных - их чередованием (data striping). При чередовании данные пишутся на всех дисках поблочно; этот процесс именуется расслоением блоков (block interleaving). Размер блока определяется операционной системой, но обычно он варьируется в пределах от 2 Кбайт до 64 Кбайт. В зависимости от конструкции дискового контроллера и HBA, эти последовательные операции записи могут перекрываться, в результате чего производительность возрастает. Так, сам по себе RAID-0 может повысить производительность, но не обеспечить защиты от сбоев. Если случается сбой диска, то вся подсистема выходит из строя, что, как правило, приводит к полной потере данных.

Вариантом чередования данных является распределение данных (data scattering). Как и при чередовании, данные записываются последовательно на несколько заполняемых дисков. Однако в отличие от чередования запись не обязательно производится на все диски; если диск занят или полон, данные могут быть записаны на следующем доступном диске - это позволяет добавлять диски к существующему тому. Как и стандарт RAID-0, комбинация заполнения дисков с распределением данных повышает производительность и увеличивает объем тома, но не обеспечивает защиты от сбоев.

RAID-1, известный как зеркалирование диска (disk mirroring), предполагает установку пар одинаковых дисков, причем каждый диск в паре является зеркальным отображением другого. В RAID-1 данные пишутся на две идентичных или почти идентичных пары дисков: когда, например, один диск портится, система продолжает работать с зеркальным диском. Если зеркальные диски имеют общий HBA, то производительность данной конфигурации, по сравнению с однодисковой, будет меньше, поскольку данные должны записываться последовательно на каждый диск.

Novell сузила определение зеркалирования и добавила понятие дублирования (duplexing). Согласно терминологии Novell, зеркалирование относится к парам дисков, когда они подсоединены к серверу или компьютеру через один HBA, в то время как дублирование подразумевает, что зеркальные пары дисков подсоединены через раздельные HBA. Дублирование обеспечивает избыточность всего дискового канала, включая HBA, кабели и диски, и позволяет несколько повысить производительность.

RAID-3 требует как минимум трех одинаковых дисков. Часто это называется технологией "n минус 1" (n-1), поскольку максимальная емкость системы задается, как все количество дисков в массиве (n) минус один диск для контроля четности. RAID-3 использует метод записи, именуемый расслоением битов (bit interleaving), когда данные пишутся на все диски побитово. Для каждого записанного на n-дисках байта на "диск четности" пишется бит четности. Это исключительно медленный процесс, поскольку перед тем, как информация о четности сможет быть сгенерирована и записана на "диск четности", данные должны быть записаны на каждый из n-дисков массива. Вы можете увеличить производительность RAID-3 путем синхронизации механизмов вращения дисков, так чтобы они работали строго "в ногу". Однако из-за ограничений по производительности использование RAID-3 резко снизилось, и сегодня продается очень немного продуктов для серверов, основанных на RAID-3.

RAID-5 - самая популярная на рынке сетевых серверов реализация RAID. Как и RAID-3, она требует, как минимум, трех одинаковых дисков. Однако, в отличие от RAID-3, RAID-5 производит чередование блоков данных без применения выделенного диска для четности. И данные, и контрольная сумма записываются по всему массиву. Этот метод допускает независимое чтение и запись на диск, а также позволяет операционной системе или контроллеру RAID проводить несколько параллельных операций ввода/вывода.

В конфигурациях RAID-5 обращение к диску происходит только тогда, когда с него считывается/записывается информация о четности или данные. Как следствие, RAID-5 имеет более высокую, чем RAID-3, производительность. На практике производительность RAID-5 может иногда достигать или даже превосходить производительность однодисковых систем. Такое повышение производительности, разумеется, зависит от многих факторов, в том числе и от того, как реализован массив RAID и какие собственные возможности есть у операционной системы сервера. RAID-5 обеспечивает также высочайший среди всех стандартных реализаций RAID уровень целостности данных, поскольку и данные, и информация о четности записаны с чередованием. Поскольку RAID-5 использует расслоение блоков, а не битов, синхронизация вращения не дает никаких преимуществ в производительности.

Некоторые производители добавили расширения к своим системам RAID-5. Одно из таких расширений - наличие встроенного в массив диска "горячего резерва" (hot-spare). Если случается сбой диска, то диск из горячего резерва немедленно заменяет аварийный диск и копирует на себя данные путем их восстановления по четности в фоновом режиме. Однако помните то, что восстановление диска RAID-5 оборачивается серьезным падением производительности сервера. (Более подробную информацию о дисках с "горячей заменой" и "горячим резервированием" см. во врезке "Горячие" функции дисков".)

Системы RAID могут быть организованы как при помощи загруженного на сервере и использующего для работы его процессор ПО, так и при помощи специализированного контроллера RAID.

Программно-реализованные системы RAID отнимают значительную часть ресурсов системного процессора, равно как и системной памяти, что сильно понижает производительность сервера. Программные системы RAID иногда включаются в виде функции операционной системы (как это сделано в Microsoft Windows NT Server) или дополнения от третьих поставщиков (как это сделано в NetWare и операционной системе Macintosh).

Аппаратно-реализованные системы RAID используют выделенный контроллер массива RAID; обычно он имеет свой собственный процессор, кэш-память и ПО в ПЗУ - для выполнения дисковых функций ввода-вывода и проверки четности. Наличие выделенного контроллера для выполнения этих операций освобождает процессор сервера для выполнения других функций. Кроме того, поскольку процессор и ПО адаптера специально отлажены для выполнения функций RAID, они обеспечивают большую производительность дисковых операций ввода/вывода и лучшую целостность данных, чем программно-реализованные системы RAID. К сожалению, аппаратно-реализованные контроллеры массивов RAID, как правило, дороже своих программно-реализованных конкурентов.

ЗЕРКАЛИРОВАНИЕ, ДУБЛИРОВАНИЕ И ЗАПОЛНЕНИЕ

Некоторые ОС, включая NetWare и Windows NT Server, позволяют осуществлять зеркалирование дисков на нескольких дисковых каналах, обеспечивая таким образом дополнительный уровень избыточности. Как упоминалось ранее, Novell называет последний подход дублированием дисков. В сочетании с заполнением дисков дублирование может обеспечить большую по сравнению с однодисковыми системами производительность и в целом способно обогнать аппаратные реализации RAID-5. Поскольку каждая половина зеркальной пары дисков использует отдельный дисковый канал, запись на диски, в отличие от случая, когда диски находятся на одном и том же HBA, может производиться одновременно. Также дублирование допускает раздельный поиск - процесс разделения запросов на чтение между дисковыми каналами для более быстрого их выполнения. Эта функция вдвое повышает производительность при чтении дисков, поскольку оба канала параллельно ищут различные блоки из одного набора данных. Это также сокращает влияние на производительность при записи на диск, поскольку один канал может читать данные, в то время как второй производить запись.

NetWare поддерживает до восьми дисковых каналов (некоторые адаптеры SCSI предоставляют несколько каналов), что означает, что вы можете иметь несколько каналов для каждой дублированной пары. Вы можете даже по выбору организовать до восьми отдельных зеркальных каналов. Windows NT Server также предоставляет программные зеркалирование и дублирование, но пока не поддерживает параллельную запись и раздельный поиск.

Выбирая избыточную дисковую систему, вы должны учитывать четыре основных фактора: производительность, стоимость, надежность и защиту от сбоев.

Что касается производительности, встроенные возможности серверной операционной системы являются основным фактором, особенно когда в игру вступает избыточность дисков. Как уже указывалось ранее, дублирование дисков NetWare в сочетании с заполнением дисков дает лучшую производительность, чем аппаратно- или программно-реализованный RAID. Однако производительность аппаратного RAID в целом выше производительности встроенных дисковых служб Windows NT Server. Вообще говоря, в течение нескольких лет технология и производительность систем RAID постоянно улучшаются.

Другая потенциальная проблема производительности систем RAID - это восстановление данных в случае аварии. До недавних пор, если диск ломался, вам приходилось отключать массив RAID для его реставрации. Также, если вы хотели изменить размер массива (увеличить или уменьшить его емкость), надо было сделать полную резервную копию системы, а затем переконфигурировать и переинициализировать массив, стирая во время этого процесса все данные. В обоих случаях система довольно долго оказывается недоступна.

Для решения данной проблемы Compaq разработала контроллер Smart Array-II, позволяющий наращивать емкость массива без переинициализации существующей конфигурации массива. Другие производители, в том числе Distributed Processing Technology (DPT), объявили, что их контроллеры в не столь отдаленном будущем будут выполнять схожие функции. Многие из новых массивов имеют утилиты для различных операционных систем, с помощью которых массив можно реставрировать после замены испорченного устройства без отключения сервера. Однако учтите, что эти утилиты съедают много ресурсов сервера и тем самым отрицательно влияют на производительность системы. Во избежание такого рода трудностей, реставрацию системы следует проводить в нерабочие часы.

В отраслевых изданиях и публикациях производителей RAID неоднократно поднимались дискуссии на тему разницы в стоимости зеркалирования, дублирования и реализаций RAID. Зеркалирование и дублирование дают 100-процентное удвоение дисков и (в случае дублирования) HBA, в то время как реализации RAID имеют один HBA и/или контроллер RAID плюс на один диск больше, чем та емкость, которую вы хотите иметь в итоге. Согласно этим аргументам, RAID дешевле, поскольку число необходимых дисков меньше. Это может быть верно, если ограничения на производительность включенных в операционную систему программных реализаций RAID, как, например, в Windows NT, для вас терпимы. В большинстве случаев, однако, чтобы добиться соответствующей производительности, необходим выделенный контроллер RAID.

Диски и стандартные адаптеры SCSI относительно недороги, в то время как высококачественный контроллер RAID может стоить до 4500 долларов. Чтобы определить стоимость своей системы, вы должны продумать оптимальные конфигурации для всех составляющих. Например, если нужно приблизительно 16 Гбайт адресуемого дискового пространства, то можно реализовать зеркальную конфигурацию с двумя дисками по 9 Гбайт на канал и получить некоторый избыток емкости. В случае RAID-5, по соображениям производительности и надежности, лучше остановиться на пяти дисках по 4 Гбайт, чтобы увеличить число шпинделей для чередования данных и тем самым общую производительность массива.

При использовании внешней дисковой подсистемы стоимость зеркальной конфигурации составит примерно 10500 долларов за 18 Гбайт доступного пространства. Эта цифра основана на реальных розничных ценах: 2000 долларов за один диск, 250 - за один HBA и 300 - за каждую внешнюю дисковую подсистему вместе с кабелями. Система RAID-5, сконфигурированная на 16 Гбайт адресуемого пространства с использованием пяти дисков по 4 Гбайт, будет стоить около 12800 долларов. Эта цифра основана на реальных розничных ценах массива DPT RAID-5.

Многие системы RAID включают в себя "фирменные", разработанные производителем, компоненты. Как минимум, "фирменными" являются корпус и задняя панель. HBA и контроллеры RAID тоже часто бывают "фирменными". Некоторые производители применяют также нестандартные держатели и шины для дисков. Кто-то предоставляет их отдельно за разумную цену, кто-то - только вместе с диском и, как правило, по высокой цене. Последний подход может оказаться дорогостоящим, когда вам надо починить или расширить свою систему. Другой способ, которым поставщик загоняет вас в угол, - предоставление ПО администрирования и наблюдения за дисками, работающее только с конкретными компонентами. Избегая, когда это возможно, нестандартных компонентов, стоимость обычно удается снизить.

При сравнении надежности избыточных дисковых систем надо учесть два фактора: возможность сбоя системы или сбоя любого ее компонента и вероятность потери данных из-за сбоя компонентов. (К сожалению, RAID или зеркалирование не могут спасти от основной причины потери данных - ошибки пользователя!)

P = t / Tc,

где t - время работы, а Tc - комбинированное время наработки на отказ компонентов.

При работе без сбоев в течение года (8760 часов) и Tc гипотетического диска 300000 часов, вероятность сбоя становится равной 3%, или немногим менее чем один случай из 34. По мере того как число компонентов растет, вероятность сбоя любого компонента увеличивается. Как RAID, так и зеркализация увеличивают вероятность сбоя, но уменьшают вероятность потери данных.

Таблица 2, взятая из бюллетеня Storage Dimensions под названием "Отказоустойчивые системы хранения данных для непрерывно работающих сетей", показывает рассчитанную по приведенной выше формуле вероятность сбоя, соотнесенную с вероятностью потери данных для четырех заполняемых дисков, пятидискового массива RAID и восьми зеркальных дисков. (Предполагается, что все диски имеют одинаковый размер и все три системы предоставляют одинаковую полезную емкость. Для получения бюллетеня посетите страницу Storage Dimensions: http://www.storagedimensions.com/raidwin/wp-ovrvw.html .)

ТАБЛИЦА 2 - ОЦЕНКИ ВЕРОЯТНОСТИ СБОЯ

Хотя зеркалирование в сочетании с заполнением из-за увеличения количества дисков имеет большую статистическую вероятность сбоя диска, оно также имеет и значительно меньшую вероятность потери данных при сбое диска. Кроме того, при правильно спроектированной дублированной системе время восстановления может быть значительно короче.

Этот пример не учитывает многие факторы. Для получения статистически правильной цифры должно быть посчитано среднее время наработки на отказ всех компонентов дисковой системы, включая HBA, шлейфы, шнуры питания, вентиляторы и блоки питания. Разумеется, эти вычисления говорят только о том, что может случиться при данной надежности предполагаемых компонентов, но вовсе не обязательно, что это произойдет.

При выборе дисковой системы вы должны четко знать, какие компоненты не продублированы. В системах RAID это могут быть HBA, контроллеры RAID, блоки питания, кабели питания и шлейфы. Одно из преимуществ дублирования с раздельными дисковыми подсистемами на каждом канале - ликвидация большинства единичных мест, где могут произойти сбои.

ЗАКЛЮЧЕНИЕ

В целом устройства SCSI - лучший выбор для дисковой подсистемы сервера, чем диски IDE или EIDE. Приобрести диски SCSI емкостью до 9 Гбайт на диск не составляет труда, в то время как максимальная емкость сегодняшних дисков EIDE около 2,5 Гбайт. При использовании нескольких двухканальных HBA общая емкость SCSI может легко превзойти 100 Гбайт, тогда как предел EIDE - 10 Гбайт. SCSI также имеет лучшую производительность; более того, SCSI не страдает от проблем, которые влечет за собой подход master-slave в IDE/EIDE.

Если вам нужна избыточность дисков, то есть несколько вариантов. Дублирование Novell NetWare в сочетании с заполнением дисков обеспечивает как отличную производительность, так и защиту от сбоев. Аппаратная реализация RAID - тоже хороший выбор, но обычно ее производительность ниже, а цена выше. Если вы используете Windows NT и вам важна производительность, то аппаратный RAID, возможно, будет лучшим выбором.

Патрик Корриган - президент и старший консультант/аналитик консалтинговой и обучающей компании The Corrigan Group. С ним можно связаться по адресу: [email protected] или через Compuserve: 75170,146. Микки Эпплбаум - старший сетевой консультант в GSE Erudite Software. С ним можно связаться по адресу: [email protected]

ЗНАКОМСТВО С ФУНКЦИЯМИ ДИСКОВЫХ ПОДСИСТЕМ

"Горячие" функции дисковых подсистем

Широко используемые для описания специфических функций дисковых подсистем термины "горячая замена" (hot-swap), "горячий резерв" (hot spare) и "горячее восстановление" (hot-rebuild) понимаются зачастую неверно.

"Горячая замена" - это функция, позволяющая вам извлечь неисправный диск из дисковой подсистемы без выключения системы. Поддержка "горячей замены" - аппаратная функция вашей дисковой подсистемы, а не RAID.

В системах, допускающих "горячую замену", жесткие диски обычно монтируются на салазках, которые позволяют контактам заземления между диском и корпусом оставаться соединенными дольше, чем линии питания и контроллера. Это защищает диск от повреждения при статическом разряде или электрической дуге между контактами. Диски с "горячей заменой" могут быть использованы как в массивах RAID, так и в зеркальных дисковых системах.

"Горячее восстановление" означает возможность системы восстановить оригинальную конфигурацию дисков автоматически после замены неисправного диска.

Диски "горячего резерва" встраиваются в массив RAID и, как правило, бездействуют до тех пор, пока не понадобятся. В какой-то момент после того, как диск "горячего резерва" заменяет неисправный диск, вам надо заменить неисправный диск и восстановить конфигурацию массива.

Дисковая система с возможностью "горячей замены" и дисками "горячего резерва" не обязательно имеет возможность произвести "горячее восстановление". "Горячая замена" просто позволяет быстро, безопасно и легко удалить/установить диск. "Горячий резерв", казалось бы, обеспечивает "горячее восстановление", поскольку он позволяет немедленно заменить неисправный диск в массиве RAID, но неисправный диск по-прежнему должен быть заменен, после чего необходимо дать команду на восстановление. Сегодня все доступные для платформы ПК системы RAID требуют для начала реставрации данных вмешательства пользователя на каком-либо уровне - хотя бы на уровне загрузки модуля NLM на сервере NetWare или нажатия кнопки запуска в меню приложений NT Server.



Цель отказоустойчивых архитектур - обеспечить работу информационной системы с малыми затратами на сопровождение и нулевым временем простоев. Недостаточная доступность системы может обернуться для компании громадными финансовыми потерями. Эта сумма складывается из стоимости снижения продуктивности служащих из-за сбоя в системе, стоимости работы, которая не может быть выполнена, пока система не восстановлена, стоимости ремонта вышедших из строя элементов системы. Поэтому при реализации критически важных для предриятия приложений стоит учесть, что цена простоев из-за сбоев системы вполне оправдывает вложение немалых средств в установку отказоустойчивых архитектур.

Для построения отказоустойчивой системы необходимо уделить внимание нескольким основным ее компонентам. Решающее значение имеет надежность дисковой подсистемы. Давайте рассмотрим основные характеристики отказоустойчивых дисковых подсистем и остановимся подробнее на их реализации с помощью технологии RAID.

Что стоит за отказоустойчивостью дисковой подсистемы

Отказоустойчивая система автоматически обнаруживает вышедшие из строя компоненты, затем очень быстро определяет причину неисправности и реконфигурирует эти компоненты.

Ключевым моментом создания отказоустойчивой системы является обеспечение защитной избыточности на базе как аппаратного, так и программного обеспечения. Такая избыточность реализует алгоритмы обнаружения ошибок, которые используются вместе с алгоритмами диагностики, позволяющими выявить причину ошибки.

Существуют три основных метода обнаружения ошибок. Первый - начальное тестирование (Initial Testing), которое проводится производителем до окончательной интеграции системы. На этом этапе выявляются дефекты аппаратуры, которые могли возникнуть в процессе производства и сборки компонентов системы.

Второй метод - параллельное оперативное тестирование (Concurrent Online Testing) - относится ко времени нормальной работы системы. Этот метод ищет главным образом те ошибки, которые могли появится после инсталляции системы. Один из самых известных способов оперативного тестирования - контроль четности (parity checking). Он гарантирует, что каждый байт данных, передаваемый по компьютерной системе, дойдет до следующего ее компонента в целости и сохранности. Метод контроля четности только обнаруживает присутствие ошибки и не может определить, какой бит потерян. Поэтому он используется вместе с кодом коррекции ошибок (Error Correction Code), который точно определяет, какие данные потеряны, позволяя системе быстро их восстановить.

Наконец, третий метод обнаружения ошибок - тестирование избыточности (Redundancy Testing). Он проверяет правильность функционирования средств отказоустойчивости системы.

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

При выборе отказоустойчивой системы надо учитывать и ее способности адаптироваться к новым технологиям, поскольку компьютеры и дисковые устройства, обладающие более высокой производительностью, появляются с просто с фантастической скоростью.

Наконец, пользователи не должны забывать, что при самой лучшей реализации отказоустойчивости они обязаны периодически резервировать данные на магнитной ленте или оптическом диске, чтобы гарантировать их сохранность в случае катастрофы более глобальной, чем выход из строя какого-либо компонента системы. Отказоустойчивость вряд ли спасет в случае пожара, землетрясения или бомбы террориста.

Дисковые подсистемы RAID

Хотя на работоспособность системы влияют многие факторы, например, отключение питания или перегрев, ничто не имеет большего значения, чем защита данных на дисках. Неисправность диска вызывает длительный простой системы, так как прежде чем возобновить выполнение программы, необходимо реконструировать данные.

В 1987 году трое специалистов из университета Беркли опубликовали статью с описанием методов обеспечения отказоустойчивости с помощью массивов небольших (3.5- и 5.25-дюймовых) дисководов, которые могут достичь показателей производительности, характерных для одного большого дорогого диска (Single Large Expensive Disk - SLED) в мэйнфреймах. Эта технология получила название RAID - Redundant Array of Inexpensive Disks (избыточный массив недорогих дисков). Ниже мы рассмотрим основные характеристики шести уровней RAID.

RAID-уровни имеют различные характеристики производительности и разную стоимость. Самым быстрым является RAID 0 (метод дуплексирования), за ним идут RAID 3 или RAID 5 (в зависимости от размеров записей). Стоимость каждого метода зависит от общего объема требуемой памяти на дисках. Например, для небольших и средних файлов метод зазеркаливания может обойтись дешевле, чем RAID 3 или 5.

При выборе отказоустойчивой дисковой подсистемы необходимо также иметь в виду программное обеспечение для автоматического восстановления данных в случае сбоя. Если речь идет о файловом сервере локальной сети, важно, чтобы данные могли быть восстановлены с минимальными усилиями со стороны администратора LAN и с наименьшими потерями для пользователей сервера. Например, для RAID 0 восстановление - это просто копирование данных с дополнительного диска на восстановленный или замененный диск. Для систем RAID 3, 4 и 5 производители поставляют программное обеспечение, восстановливающие данные по XOR-сегментам. Эти программы работают в фоновом режиме, позволяя пользователям не прерывать своей работы во время восстановления. RAID-системы с встроенными интеллектуальными процессорами способны провести реконструкцию гораздо быстрее, чем их аналоги, использующие программное обеспечение, которое выполняется процессором основной системы.

Традиционные RAID-системы имеют неоспоримые преимущества, но при этом создают немало проблем. Разные уровни RAID обеспечивают различную производительность и имеют разную стоимость, и администраторам приходится искать наиболее подходящий для данной конкретной системы вариант. Cегодняшние дисковые подсистемы RAID достаточны сложны в управлении и конфигурации. Увеличение объема дискового пространства и реконфигурация подсистемы также представляет собой трудоемкий и длительный процесс.

Чтобы справиться с этими проблемами, разрабатываются новые технологии дисковых массивов с возможностями автоматической настройки на различные уровни, уже не укладывающиеся в традиционные рамки специфицированных уровней RAID. Мы рассмотрим продукты этого типа компаний Hewlett-Packard и EMC.

AutoRAID компании Hewlett-Packard

После четырех лет напряженной работы подразделение компании Hewlett-Packard по системам хранения данных разработало новую технологию, которая реализует избыточность, присущие традиционным RAID, и при этом ликвидирует многие их недостатки. Дисковая подсистема AutoRAID автоматически выбирает уровень RAID, соответствующий требованиям пользователей, а также реализует ряд других важных возможностей.

Ядро технологии составляет набор алгоритмов контроллера дисковой подсистемы для управления адресами блоков данных. Традиционные дисковые массивы, такие как RAID 4 или 5, используют статические, заранее определенные алгоритмы трансляции адресов блоков данных хост-компьютера в адреса их размещения на дисках. Разработчики AutoRAID отказались от этого подхода и предпочли использовать динамические алгоритмы интеллектуального отображения любого адреса блока на хосте на любой диск массива. Данное отображение может меняться в процессе работы системы.

Динамические алгоритмы позволяют контроллеру перемещать данные, которые хранятся в дисковом массиве, в любое место на любом диске, не оказывая никакого влияния ни на данные, ни на способ их адресации хост-компьютером. Благодаря этому данная технология делает возможным преобразование одного уровня RAID в другой. Основываясь на имеющейся информации о различных характеристиках производительности разных уровней RAID, дисковая подсистема динамически адаптируется для наилучшего удовлетворения потребностей хост-компьютера.

Другая важная возможность подобного подхода состоит в простом смешивании в одной подсистеме дисков различного объема и производительности. Аналогичные средства имеют и некоторые традиционные дисковые массивы, но в них конфигурация подсистемы представляет собой сложный и долгий процесс. Конфигурация в AutoRAID выполняется быстро и просто. Одна из задач администратора при конфигурации любого дискового массива - создание виртуальных дисков из доступного физического пространства. Пользователи работают именно с виртуальными дисками, которые контроллер подсистемы представляет им как физические. Конфигурируя традиционный дисковый массив, администратор должен знать характеристики каждого физического диска, чтобы затем сгруппировать их для создания виртуальных дисков. AutoRAID освобождает администратора от этих сложностей. Теперь ему достаточно знать общий объем памяти в дисковом массиве. Администратор определяет объем памяти, необходимый для каждого виртуального диска, после чего алгоритмы отображения автоматически сгруппируют физические диски, так чтобы гарантировать максимально эффективное использование доступного пространства и обеспечить самую высокую производительность.

Реконфигурация подсистемы также не составляет большого труда. Одной из самых распространенных причин реконфигурации является необходимость увеличения дискового пространства. Традиционные подсистемы RAID решают эту задачу двумя способами. Первый - добавление достаточного количества дисков для создания новой группы избыточности. Этот метод может оказаться достаточно дорогим. Во втором случае администратор сохраняет все данные на резервный диск, добавляет новые диски, реконфигурирует всю подсистему и восстанавливает данные. Очевидно, что этот процесс потребует много времени, в течение которого система не функционирует.

Значительно проще выглядит реконфигурацию для добавления дополнительного дискового пространства. Администратору достаточно установить новые диски и создать еще один виртуальный диск. Эта работа выполняется в интерактивном режиме и занимает несколько секунд.

Такая простота реконфигурации системы опирается на технологии динамического отображения, реализованной в AutoRAID. Каждый диск массива трактуется как последовательность блоков. При добавлении новых дисков их блоки добавляются к общему пулу доступной памяти. Алгоритмы отображения позволяют контроллеру использовать каждый блок независимо, чем способствуют достижению лучших показателей производительности, стоимости и доступности системы.

Уникальной возможностью технологии AutoRAID является автоматическое и непосредственное использование новых дисков для повышения производительности дисковой подсистемы. Когда инсталлируется новый диск, данные равномерно перераспределяются по всем дискам подсистемы. Этот процесс называется балансировкой и выполняется в фоновом режиме между операциями хост-компьютера. Равномерное распределение данных по всем дискам создает больше возможностей для одновременного выполнения нескольких операций с данными. Для систем обработки транзакций увеличение числа параллельных операций означает повышение общей производительности.

На методе балансировки основано еще одно новшество описанной технологии - так называемый "активный горячий резерв" (active hot spare). Функции активного горячего резерва те же, что и у горячего резервного диска в традиционном массиве. В случае сбоя какого-либо диска контроллер подсистемы немедленно начинает процесс перестройки, который реконструирует потерянные данные на резервном диске и восстанавливает избыточность подсистемы. В обычных массивах резервный диск не используется до тех пор, пока в системе что-нибудь не случится, поскольку он содержит резервное пространство для восстановленных данных. Иногда на диске горячего резерва создается временное хранение, но оно должно быть ликвидировано, как только какой-нибудь диск выйдет из строя.

Технология HP AutoRAID использует горячий резерв для повышения производительности подсистемы. Процесс балансировки распределяет пользовательские данные по всем дискам системы, в том числе и на диск горячего резерва (чем больше дисков задействовано под данные, тем больше производительность). При этом на каждом диске часть пространства резервируется для восстановления данных в случае возникновения неисправности. Реконструированные данные в процессе перестройки системы будут сохраняться на резервном участке каждого из дисков массива.

RAID-S компании EMC

Компания EMC, производитель систем хранения данных, предлагает новую реализацию технологии RAID, RAID-S, которая, обеспечивает улучшенную производительность и защиту данных и ликвидирует многие недостатки, свойственные традиционным RAID-системам.

RAID-S нельзя отнести к какому-либо одному уровню RAID. Используя новые достижения в аппаратном и программном обеспечении и средствах отображения данных, EMC комбинирует позитивные аспекты систем RAID 4 и 5, а также уровня RAID 6, с новыми технологиями и создает новую схему защиты данных. Дисковые массивы RAID-S предназначены для использования в системах класса мейнфреймов.

RAID-S позволит пользователям строить системы хранения, способствующие созданию наилучшего соотношения между производительностью, защитой данных и доступностью системы. RAID-S дает возможность выбирать уровень RAID, наиболее подходящий для задач конкретной организации. Кроме того, EMC позволяет комбинировать в одной системе технологию RAID-S, дисковый массив RAID 1 и другие системы дискового хранения компании.

Например, крупный банк может эксплуатировать системы оперативной обработки транзакций для обслуживания своих клиентов, а кроме того системы пакетной обработки для решения административных задач. Каждое из приложений имеет свои требования к хранению и доступу к данным. Дисковые системы EMC позволят предоставить каждому из них необходимый уровень доступности и защиты данных.

Ступени совершенства RAID

RAID 0. RAID 0 по существу не является отказоустойчивой системой, но способен существенно повысить производительность. В обычной системе данные последовательно записываются на диск, пока не будет исчерпан его объем. RAID 0 распределяет данные по дискам массива следующим образом. Если, например, используются четыре диска, то данные записываются на первую дорожку первого диска, затем на первую дорожку второго диска, первую дорожку третьего и первую дорожку четвертого. Затем данные записываются на вторую дорожку первого диска и т.д. Такое распределение данных позволяет одновременно читать и писать данные на четырех дисках и тем самым увеличивает производительность системы. С другой стороны, если один из дисков выйдет из строя, восстанавливать данные придется также на всех четырех дисках.

RAID 1. RAID 1 реализует метод зазеркаливания/дуплексирования данных, создавая для каждого диска массива вторую копию данных на отдельном диске. Дуплексирование помимо данных на диске дублирует также адаптерную плату и кабель, обеспечивая еще большую избыточность. Метод хранения двух копий данных - надежный способ реализации отказоустойчивой дисковой подсистемы, и он нашел широкое применение в современных архитектурах.

RAID 2. RAID 2 распределяет данные на дисках массива побитно: первый бит записывается на первом диске, второй бит - на втором диске и т.д. Избыточность обеспечивается засчет нескольких дополнительных дисков, куда записывается код коррекции ошибок. Эта реализация является более дорогой, поскольку требует больших накладных расходов на избыточность: массив с числом основных дисков от 16 до 32 должен иметь три дополнительных диска для хранения кода коррекции. RAID 2 обеспечивает высокую производительность и надежность, но его применение ограничено главным образом рынком компьютеров для научных исследований из-за высоких требований к минимальному объему дискового пространства. В сетевых файловых серверах этот метод в настоящее время не используется.

RAID 3. RAID 3 распределяет данные на дисках массива побайтно: первый байт записывается на первом диске, второй байт - на втором диске и т.д. Избыточность обеспечивает один дополнительный диск, куда записывается сумма данных по модулю 2 (XOR) для каждого из основных дисков. Таким образом, RAID 3 разбивает записи файлов данных, храня их одновременно на нескольких дисках и обеспечивая очень быстрые чтение и запись. XOR-сегменты на дополнительном диске позволяют обнаружить любую неисправность дисковой подсистемы, а специальное ПО определит, какой из дисководов массива вышел из строя. Использование побайтового распределения данных позволяет выполнять одновременное чтение или запись данных с нескольких дисков для файлов с очень длинными записями. В каждый момент времени может выполняться только одна операция чтения или записи.

RAID 4. RAID 4 аналогичен RAID 3 за тем исключением, что данные распределяются на дисках по блокам. Для хранения XOR-сегментов также используется один дополнительный диск. Эта реализация удобна для файлов с очень короткими записями и большей частотой операций чтений по сравнению с операциями записи, поскольку в этом случае при подходящем размере блоков на диске возможно одновременное выполнение нескольких операций чтения. Однако по-прежнему допустима только одна операция записи в момент времени, так как все операции записи используют один и тот же дополнительный диск для вычисления контрольной суммы.

RAID 5. RAID 5, как и RAID 4, использует поблоковое распределение данных, но XOR-сегменты распределены по всем дискам массива. Это позволяет выполнять несколько операций записи одновременно. RAID 5 также удобен для файлов с короткими записями.

Динамическая миграция

Стратегия динамической миграции данных позволяет, в частности, хранить наиболее активные данные на уровне RAID 1, который имеет самую высокую производительность, а менее активные данные - на более дешевом уровне RAID 5. В большинстве систем активно используемые данные составляют небольшую часть всей хранимой информации. Таким образом основная масса данных будет храниться на RAID 5. Данная технология предоставляет администраторам системы два ключевых преимущества. Во-первых, она освобождает их от мучительных раздумий, какой уровень RAID выбрать. Во-вторых, дисковая подсистема непрерывно оптимизирует производительность и цену дискового хранения, как было бы в случае, когда администратор тратит все свое рабочее время на настройку системы.

Особенности реализации RAID-S:

    RAID-S вычисляет код коррекции ошибок, обеспечивающий избыточность, на уровне драйвера дисков, а не на уровне контроллера подсистемы. Это разгружает контроллер, освобождая его от обработки запросов ввода/вывода, и тем самым повышает производительность дисковой подсистемы.

    В RAID-S данные не распределяются порциями по физическим дискам, как в традиционных реализациях RAID, а остаются нетронутыми на диске. Это позволяет использовать существующие средства наблюдения и настройки подсистемы ввода/вывода

    без дополнительного обучения персонала.

    Поскольку данные не распределены по дискам, даже в случае одновременного выхода из строя нескольких дисков, информация на оставшихся томах группы RAID-S по-прежнему будет доступна приложениям на хост-компьютере.

    RAID-S реализует усовершенствованную технологию и подготовлена для простой интеграции будущих технологий, защищая долгосрочные вложения пользователей.

Материал разделен на три части: А - теория, Б - практика, В - создание мультизагрузочной флэшки.

А. Общая теория (популярно).

1. Железо.

Все физические устройства, которые используются нами повседневно для хранения информации (HDD, CD-ROM, флэшка, и даже флопик) - это блочные устройства ввода/вывода (block I/O device). Они могут подключаться к компьютеру через различные интерфейсы: IDE, SATA, eSATA, USB. Операционная система предоставляет единый прозрачный для пользователя и программиста прикладного ПО способ чтения/записи информации с/на эти носители.

С железом напрямую общаются драйвера. Драйвер - это программа, загруженная в операционную систему. Он является прослойкой между ОС и устройствами, представляя для ОС стандартный программный интерфейс блочных устройств I/O.

2. Данные на физическом диске.

Блочными эти устройства называются потому, что информация на них записывается и считывается блоками (секторами, кластерами) фиксированного размера. Размер блока кратен 512 байт. Блочный подход необходим для обеспечения высокой скорости работы дисковой подсистемы.

Сам диск форматируется (размечается) на низком уровне (на заводе). Диск состоит из цилиндров. Цилиндр - это окружность на пластине диска. Первые цилиндры расположена в центре пластины диска, последние - на внешнем краю. Каждый цилиндр делиться на секторы. В пределах секторов организуются блоки на диске. Помимо самих данных в блоках записывается информация для контроля ошибок. С этой информацией работает контроллер внутри жесткого диска и она не видна снаружи. Драйвер посылает команды контроллеру диска на уровне «считать 10 блоков 10 цилиндра 20 сектора».

Все полезные данные, записанные на носитель, организованы в разделы. В Windows каждый раздел обычно представлен в виде логического диска (C, D, E, …). На сменных носителях (флэшка, компакт-диск, флопик) как правило создан один единственный раздел, на внутренних жестких дисках - наоборот - обычно несколько разделов. Данные в разделе организованы в файловой системе.

Для каждого раздела может независимо устанавливаться свой размер блока - размер кластера. Он регулирует баланс скорость/экономичность. Блок - это минимальная адресуемая единица разметки на диске. Кластер объединяет несколько блоков - это минимальная адресуемая единица в разделе.

Таким образом устанавливается следующая логическая иерархия (от внизу вверх): блок, сектор, цилиндр - кластер - раздел - файл, каталог.

В большинстве файловых систем файл может занимать один или несколько кластеров. Таким образом, если размер файла меньше размера кластера, то файл займет целый кластер. Для любого файла на диске будет выделено количество байт, кратное размеру кластера. Некоторые файловые системы умеют делить один кластер на несколько файлов (упаковка), но это скорей исключение (пока). Таким образом, чем больше размер кластера, тем выше скорость и больше места теряется на полузаполненных кластерах.

3. Разметка физического диска.

Размер раздела также измеряется в блоках. Именно по этому при разбивке диска на разделы размер, выраженный в байтах, может быть немного подкорректирован программой.

Так как на диске может быть несколько разделов, их нужно где-то перечислить с указанием пределов и свойств каждого раздела. Для этого служит таблица разделов, которая находится в начале физического диска (начало диска - это его первый блок в соответствии с адресацией). В классическом случае она входит в состав MBR (master boot record), которая целиком занимает первый блок. На всю таблицу разделов выделено 64 байта. Каждая запись таблицы состоит из адресов начала и конца раздела, типа раздела, количества секторов в разделе и флага «загруженности» раздела и занимает 16 байт. Таким образом максимальное количество разделов на диске ограничено четырьмя (16 × 4 = 64).

Так сложилось исторически, но со временем стало очевидно, что 4 раздела не всегда достаточно. Решение проблемы было найдено. Те разделы, которые размечены в заголовке диска (в MBR), назвали Primary (первичные). Их по прежнему должно быть до 4-х включительно. Дополнительно ввели понятие Extended (расширенных) разделов. Расширенный раздел включает один или более подраздел и не содержит файловой системы. Сам он является полноценным первичным разделом.

Так как подразделы расширенного раздела не перечислены в таблице разделов диска, их невозможно пометить как загрузочные. Загрузочный (bootable) раздел - это тот раздел, с которого начинает загружаться операционная система. Он отмечается флагом в своей записи таблицы разделов. Таким образом отметить можно только один из 4-х первичных разделов. Расширенный раздел загрузочным быть не может, так как на нем нет файловой системы.

Разметка расширенного раздела описана в в его начале. По аналогии с MBR существует EBR (Extended boot record), расположенная в первом секторе. В ней описывается разметка логических дисков данного расширенного раздела.

На оптическом диске и флэшке обычно размещается только один раздел, так как более мелкое деление там не имеет смысла. Обычно при записи компакт-диска применяется файловая система ISO 9660. Образ диска с этой файловой системой называется ISO-образ. Он часто используется в отрыве от физического диска в качестве контейнера для передачи данных, т. к. любой образ - это побитовая точная копия физического носителя.

4. Файловая система.

Каждый раздел диска, предназначенный для хранения данных (т. е. все разделы, кроме расширенного) форматируется в соответствии с некоторой файловой системой. Форматирование - это процесс создания структуры файловой системы в некотором пространстве на диске - в разделе. Файловая система организует пользовательские данные в виде файлов, расположенные в некоторой иерархии каталогов (папок, директорий).

Структура каталогов и файлов в разделе в классическом случае описана в таблице файлов. Как правило таблица занимает некоторое место в начале раздела. После таблицы пишутся сами данные. Таким образом создается система, где структура описана отдельно, а данные (файлы) хранятся отдельно.

В случае удаления файла с диска он удаляется из таблицы файлов. Место, которое он занимал на диске, помечается как свободное. Но физической зачистки этого места не происходит. Когда на диск производится запись, данные записываются в свободное место. Поэтому если после удаления файла создать новый, существует вероятность записи его на место удаленного. При быстром форматировании (используются в подавляющем большинстве случаев) раздела также перезаписывается только таблица. На этих особенностях основана процедура восстановления файлов после удаления или форматирования.

В процессе работы на диске могут возникать физические повреждения. Некоторые блоки могут становиться недоступными для чтения. Эти блоки называют «бэдами» (bad sector). Если в процессе чтения диска попадает бэд, происходит ошибка ввода/вывода (I/O error). В зависимости от того, в каком месте появился бэд-блок и сколько их появилось, может потеряеться либо часть содержимого файлов, либо в часть таблицы файлов.

При попытке записи в бэд-блок контроллер диска должен определить проблему и выделить для этого блока новое место на поверхности диска, а старое место из использования изъять (relocate bad block). Он делает это незаметно для ОС и драйверов, самостоятельно. Происходит это до тех пор, пока есть резерв места для переноса.

5. Работа с диском.

Операционная система представляет возможность работы с дисками на уровне файлов, разделов и устройства. Конкретная реализация доступа на каждый уровень зависит от конкретной ОС. Но в любом случае, общим является то, что к физическому диску и к любому его разделу можно обратиться точно так же, как к обычному бинарному файлу. Т. е. в него можно писать данные, из него можно данные считывать. Такие возможности особенно полезны для создания и восстановления образов дисков, клонирования дисков.

В ОС семейства UNIX все устройства хранения данных представлены в виде файлов в каталоге /dev:

    sda, sdb, sdc, … - физические диски (HDD, включая внешние, флэшки, IDE-сидиромы);

    fd0, fd1 - флопики.

Разделы на каждом из дисков доступны в виде sda1, sda2, sd3, …

Нумерация дисков происходит в том порядке, в котором их видит BIOS. Нумерация разделов - в порядке создания разделов на диске.

Чтобы сделать образ (образ - это побитовая копия информации, размещенной на диске или в разделе) диска целиком (например первого по BIOS - sda), нужно вычитать данные из /dev/sda в любой другой специально созданный для образа файл, используя программу последовательного копирования содержимого файла. Чтобы записать образ в файл, нужно при помощи той же программы вычитать данные из образа в /dev/sda. По аналогии можно создать/восстановить образ раздела (например, первого на первом диске - sda1), обращаясь к /dev/sda1 вместо /dev/sda.

6. Монтирование.

Чтобы «превратить» дисковое устройство в набор файлов и каталогов, к которым можно получить доступ, его необходимо примонтировать. В Windows как такового монтирования не существует. Там разделы просто подключаются к логическим дискам (C:, D:, E, …). Информация о том, какую букву присвоить какому диску, хранится в самой ОС.

В UNIX понятие монтирования является основоположным в работе с дисками и дает значительно больше гибкости, чем есть в Windows. Монтирование - это процесс привязки некоторого источника образа диска (это либо сам диск, либо файл с его образом) к некоторому каталогу в файловой системе UNIX. Файловая система в UNIX начинается из одной точки - от корневого каталога (/), и никаких логических дисков C, D, E не существует.

В начале загрузки ОС семейства UNIX в корневой каталог / монтируется раздел диска, помеченный как root (корневой). На разделе диска должны быть созданы служебные каталоги ОС, находящиеся в корне файловой системы. К ним могут монтироваться другие разделы, либо файлы могут записываться прямо в основной раздел (примонтрированный к /).

Ключевой момент заключается в том, что источник образа диска (блочное устройство, файл с образом или каталог уже примонтированной файловой системы) можно монтировать к любому каталогу на любом уровне вложенности файловой системы, которая начинается с /. Таким образом, разные логические разделы физического диска представляются каталогами в единой файловой системе в противоположность отдельным файловым системам разных логических дисков в Windows (там каждый диск рассматривается как автономная файловая система, имеющая свой корень).

Для монтирования необходимо указать файловую систему образа, опции монтирования и каталог, к которому будет привязка.

За счет этой гибкости можно привязать один каталог в несколько разных мест в файловой системе, сделать образ диска и примонтировать его не записывая на диск, раскрыть ISO-образ. И все это делается без использования сторонних утилит.

7. MBR - загрузочная область.

В начале физического диска обычно расположена MBR (master boot record). Это загрузочная область диска. При загрузке компьютера BIOS определяет какой диск является первичным (primary) и ищет на нем MBR. Если она найдена, то ей передается управление. Если нет, выводится ошибка о том, что загрузочный диск не найден.

В MBR, кроме таблицы разделов (описано выше), располагается код программы, которая загружается в память и выполняется. Именно эта программа должна определить загрузочный раздел на диске и передать ему управление. Передача управления происходит аналогично: первый блок (512 байт) загрузочного раздела помещается в оперативную память и выполняется. Он содержит программный код, который инициирует загрузку ОС.

За счет того, что управление от BIOS при загрузке компьютера передается программе, записанной на диске, есть возможность сделать выбор загрузочного раздела более гибким. Это и делают загрузчики GRUB и LILO, широко применяемые в мире UNIX. Последний загрузчик в настоящее время использовать на современных компьютерах смысла нет. С помощью GRUB можно предоставить пользователю выбор, какой раздел загружать и каким образом.

Код GRUB слишком большой, чтобы поместиться в MBR. Поэтому он устанавливается на отдельном разделе (обычно в том разделе, который монтируется в /boot) с файловой системой FAT, FFS или Ext2. В MBR записывается код, который загружает код GRUB с определенного раздела и передает ему управление.

GRUB самостоятельно или с помощью пользователя определяет с какого раздела должна происходить загрузка. В случае Winsows-раздела ему просто передается управление точно так же, как это было бы из обычной MBR. В случае Linux-а загрузчик выполняет более сложные действия. Он загружает в память ядро ОС и передает ему управление.

Сделать бэкап загрузочной области диска так же легко, как бэкап всего диска или отдельного раздела. Суть в том, что MBR занимает первые 512 байт диска /dev/sda. Следовательно, для бэкапа MBR необходимо вычитать первые 512 байт /dev/sda в файл, а для восстановления - наоборот - файл вычитать в /dev/sda.

Когда мы говорим про ресурсы дисковой подсистемы, то назвать их можно три: объем места, скорость чтения и записи в Мб/сек и скорость чтения-записи в количестве операций ввода-вывода в секунду (Input/Output per second, IOPS, или просто I/O).

Поговорим сначала про объем. Я приведу соображения, на которые следует ориентироваться, и пример расчета.

Соображения следующие:

Место на диске занимают сами файлы-диски виртуальных машин. Следовательно, нужно понять, сколько места нужно им;

Если для всех или части ВМ мы планируем использовать тонкие (thin) диски, то следует спланировать их первоначальный объем и последующий рост (здесь и далее под thin-дисками понимается соответствующий тип vmdk-файлов, то есть функция thin provisioning в реализации ESX(i). Дело в том, что функционал thin provisioning может быть реализован на системе хранения независимо от ESX(i), и я имею в виду не функционал систем хранения);

По умолчанию для каждой ВМ гипервизор создает файл подкачки, по размерам равный объему ее оперативной памяти. Этот файл подкачки располагается в папке ВМ (по умолчанию) или на отдельном LUN;

Если планируются к использованию снимки состояния, то под них тоже следует запланировать место. За точку отсчета можно взять следующие соображения:

Если снимки состояния будут существовать короткий период после создания, например только на время резервного копирования, то под них запасаем процентов десять от размера диска ВМ;

Если снимки состояния будут использоваться со средней или непрогнозируемой интенсивностью, то для них имеет смысл заложить порядка 30% от размера диска ВМ;

Если снимки состояния для ВМ будут использоваться активно (что актуально в сценариях, когда ВМ используются для тестирования и разработки), то занимаемый ими объем может в разы превышать номинальный размер виртуальных дисков. В этом случае точные рекомендации дать сложно, но за точку отсчета можно взять удвоение размера каждой ВМ. (Здесь и далее под снимком состояния понимается соответствующий функционал ESX(i). Дело в том, что снимки состояния (snapshot) могут быть реализованы на системе хранения независимо от ESX(i), и я имею в виду не функционал систем хранения.)

Примерная формула выглядит следующим образом:

Объем места для группы ВМ = Количество ВМ х (Размер диска х T +

Размер диска х S + Объем памяти - Объем памяти х R).

T - коэффициент тонких (thin) дисков. Если такие диски не используются, равен 1. Если используются, то абстрактно оценку дать сложно, зависит от характера приложения в ВМ. По сути, thin-диски занимают места на системе хранения меньше, чем номинальный размер диска. Так вот - этот коэффициент показывает, какую долю от номинального размера занимают диски виртуальных машин;

S - размер снимков состояния. 10/30/200 процентов, в зависимости от продолжительности непрерывного использования;

R - процент зарезервированной памяти. Зарезервированная память в файл подкачки не помещается, файл подкачки создается меньшего размера. Размер его равен: объем памяти ВМ минус объем зарезервированной памяти.

Оценочные входные данные, для примера, см. в табл. 1.3.

Таблица 1.3. Данные для планирования объема дисковой подсистемы

Получаем оценку требуемого объема:

Инфраструктурная группа - 15 х (20 + 20 х 10% + 2 - 2 х 0) = 360 Гб;

Серверы приложений - 20 х (40 + 40 х 10% + 2 - 2 х 0) = 920 Гб;

Критичные серверы - 10 х (100 + 100 х 10% + 6 - 6 х 0.5) = 1130 Гб;

Тестовые и временные - 20 х (20 х 30% + (20 х 30%) х 200% + 2 - 2 х 0) = = 400 Гб.

Следовательно, мы можем создать два LUN по 1,4 Тб и примерно поровну распределить между ними виртуальные машины. Или создать 4-5 LUN по 600800 Гб и поместить машины разных групп на разные LUN. Оба варианта (и промежуточные между ними) приемлемы. Выбор между ними делается, исходя из прочих предпочтений (например, организационных).

Еще одним ресурсом дисковой подсистемы является производительность. В случае виртуальных машин скорость в Мб/сек не является надежным критерием, потому что при обращении большого количества ВМ на одни и те же диски обращения идут непоследовательно. Для виртуальной инфраструктуры более важной характеристикой является количество операций ввода-вывода (IOPS, Input/ Output per second). Дисковая подсистема нашей инфраструктуры должна позволять больше этих операций, чем их запрашивают виртуальные машины.

Какой путь проходят обращения гостевой ОС к физическим дискам в общем случае:

1. Гостевая ОС передает запрос драйверу контроллера SAS/SCSI (который для нее эмулирует гипервизор).

2. Драйвер передает его на сам виртуальный контроллер SAS/SCSI.

3. Гипервизор перехватывает его, объединяет с запросами от других ВМ и передает общую очередь драйверу физического контроллера (HBA в случае FC и аппаратного iSCSI или Ethernet-контроллер в случае NFS и программного iSCSI).

4. Драйвер передает запрос на контроллер.

5. Контроллер передает его на систему хранения, по сети передачи данных.

6. Контроллер системы хранения принимает запрос. Запрос этот - операция чтения или записи с какого-то LUN или тома NFS.

7. LUN - это «виртуальный раздел» на массиве RAID, состоящем из физических дисков. То есть запрос передается контроллером СХД на диски этого массива RAID.

Где может быть узкое место дисковой подсистемы:

Скорее всего, на уровне физических дисков. Важно количество физических дисков в массиве RAID. Чем их больше, тем лучше операции чтения-записи могут быть распараллелены. Также чем быстрее (в терминах I/O) сами диски, тем лучше;

Разные уровни массивов RAID обладают разной производительностью. Законченные рекомендации дать сложно, потому что, кроме скорости, типы RAID отличаются еще стоимостью и надежностью. Однако базовые соображения звучат так:

RAID-10 - самый быстрый, но наименее эффективно использует пространство дисков, отнимая 50% на поддержку отказоустойчивости;

RAID-6 - самый надежный, но страдает низкой производительностью на записи (30-40% от показателей RAID-10 при 100% записи), хотя чтение с него такое же быстрое, как с RAID-10;

RAID-5 компромиссен. Производительность на запись лучше RAID-6 (но хуже RAID-10), выше эффективность хранения (на отказоустойчивость забирается емкость лишь одного диска). Но RAID-5 страдает от серьезных проблем, связанных с долгим восстановлением данных после выхода из строя диска в случае использования современных дисков большой емкости и больших RAID-групп, во время которого остается незащищенным от другого сбоя (превращаясь в RAID-0) и резко теряет в производительности;

RAID-0, или «RAID с нулевой отказоустойчивостью», для хранения значимых данных использовать нельзя;

Настройки системы хранения, в частности кеша контроллеров системы хранения. Изучение документации СХД важно для правильной ее настройки и эксплуатации;

Сеть передачи данных. Особенно если планируется к использованию IP СХД, iSCSI или NFS. Я ни в коем случае не хочу сказать, что не надо их использовать, - такие системы давно и многими эксплуатируются. Я хочу сказать, что надо постараться убедиться, что переносимой в виртуальную среду нагрузке хватит пропускной способности сети с планируемой пропускной способностью.

Результирующая скорость дисковой подсистемы следует из скорости дисков и алгоритма распараллеливания контроллером обращений к дискам (имеются в виду тип RAID и аналогичные функции). Также имеет значение отношение числа операций чтения к числу операций записи - это отношение мы берем из статистики или из документации к приложениям в наших ВМ.

Разберем пример. Примем, что наши ВМ будут создавать нагрузку до 1000 IOps, 67% из которых будет составлять чтение, а 33% - запись. Сколько и каких дисков нам потребуется в случае использования RAID-10 и RAID-5?

В массиве RAID-10 в операциях чтения участвуют сразу все диски, а в операции записи - лишь половина (потому что каждый блок данных записывается сразу на два диска). В массиве RAID-5 в чтении участвуют все диски, но при записи каждого блока возникают накладные расходы, связанные с подсчетом и изменением контрольной суммы. Можно считать, что одна операция записи на массив RAID-5 вызывает четыре операции записи непосредственно на диски.

Запись - 1000 х 0,33% = 330 х 2 (так как в записи участвует лишь половина дисков) = 660 IOps.

Всего от дисков нам надо 1330 IOps. Если поделить 1330 на количество IOps, заявленное в характеристиках производительности одного диска, получим требуемое количество дисков в массиве RAID-10 под указанную нагрузку.

Чтение - 1000 х 0,67% = 670 IOps;

Запись - 1000 х 0,33% = 330 х 4 = 1320 IOps.

Всего нам от дисков надо 1990 IOps.

По документации производителей один жесткий диск SAS 15k обрабатывает 150-180 IOps. Один диск SATA 7.2k - 70-100 IOps. Однако есть мнение, что лучше ориентироваться на несколько другие цифры: 50-60 для SATA и 100-120 для SAS.

Закончим пример.

При использовании RAID-10 и SATA нам потребуется 22-26 дисков.

При использовании RAID-5 и SAS нам потребуется 16-19 дисков.

Очевидно, что приведенные мною расчеты достаточно приблизительны. В системах хранения используются разного рода механизмы, в первую очередь кеширо-вование - для оптимизации работы системы хранения. Но как отправная точка для понимания процесса сайзинга дисковой подсистемы эта информация пригодна.

За кадром остаются методики получения требуемого для ВМ количества IOPS и отношение чтения к записи. Для уже существующей инфраструктуры (при переносе ее в виртуальные машины) эти данные можно получить с помощью специальных средств сбора информации, например VMware Capacity Planner. Для инфраструктуры планируемой - из документации к приложениям и собственного опыта.