Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00

Лекция 12: Microsoft SQL Server и Microsoft Cluster Services

Разделяемая дисковая система

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

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

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

Вопрос о кэшах контроллеров, благодаря которым возможно кэширование записей в память, также надо решать при кластеризации, в случаях, когда кэш расположен на самом контроллере (рис. 12.3). В этом случае каждый узел имеет свой собственный кэш, и мы говорим, что он находится перед разделением дисков ("in front of" the disk sharing), потому что два кэша пользуются одними и теми же дисковыми накопителями. Если каждый контроллер имеет кэш и кэш размещается на отказавшем компьютере, то данные из кэша могут быть потеряны. Из-за этого, когда вы в конфигурации кластера применяете внутренние кэши контроллера, они должны быть настроены как применяемые только для чтения (set as read-only). (При некоторых обстоятельствах такая настройка может уменьшить производительность некоторых систем.)

Кэши контроллера перед разделением дисков

Рис. 12.3. Кэши контроллера перед разделением дисков

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

Кэш контроллера позади разделения дисков

Рис. 12.4. Кэш контроллера позади разделения дисков

Последние дисковые подсистемы SCSI и Fibre Channel допускают размещение RAID- контроллеров в корпусах дисковых систем, а не в корпусах компьютеров. Такие системы обеспечивают хорошую производительность и отказоустойчивость. Фактически, многие RAID-системы этого типа предлагают контроллеры и кэши, полностью защищенные при помощи избыточности. Многие из последних RAID-систем применяют архитектуру этого типа. Давайте более подробно рассмотрим некоторые дисковые подсистемы.

Подсистемы ввода-вывода.Как уже говорилось, кластеризацию поддерживают различные виды подсистем ввода-вывода. Ниже перечислены три основных вида подсистем ввода-вывода.

  • SCSI JBOD. Это SCSI-система с многими инициаторами (контроллерами) на шине SCSI, адресующей простой массив дисков (just a bunch of disks, JBOD). При такой настройке диски адресуются индивидуально и должны быть либо сконфигурированы для расслоения при помощи расслоения Windows 2000, либо адресоваться индивидуально. Мы не рекомендуем применять такую подсистему.
  • Внутренняя RAID-система. В каждом сервере применяется свой RAID-контроллер. Недостатком этой системы является то, что алгоритм работы RAID-системы реализован на плате, находящейся на сервере, поэтому кэши контроллеров должны быть отключены.
  • Внешняя RAID-система. RAID-контроллер разделяется (используется совместно) компьютерами кластера. Кэш и алгоритм работы RAID-системы размещаются в корпусе дисковой системы, а для коммуникации с внешним контроллером применяется простой адаптер главной шины (HBA, host bus adapter).

В следующих двух разделах рассказано только о двух решениях с применением технологии RAID. Мы не рекомендуем применять решение SCSI JBOD, за исключением лишь случаев, когда кластер небольшой и главное значение имеет его стоимость.

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

 Внутренний RAID-контроллер

Рис. 12.5. Внутренний RAID-контроллер

Так как кэш размещен на контроллере, который не находится в совместном использовании, все данные, которые были в кэше в момент отказа системы, станут недоступными. Это большая проблема в случае, когда работа идет с реляционными СУБД. Когда SQL Server записывает данные на диск, эти данные заносятся в журнал транзакций как записанные. Когда SQL Server пытается восстановиться после отказа системы, эти блоки данных не будут восстановлены, потому что SQL Server считает, что они уже были записаны на диск. В случае отказа при этом типе конфигурации база данных будет повреждена.

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

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

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

Внешняя RAID-система. Во внешних RAID-системах аппаратура RAID находится за пределами компьютеров (см. рис. 12.6). Каждый сервер содержит адаптер главной шины (HBA, host bus adapter), задачей которого является передача в RAID-систему максимально большего количества запросов ввода-вывода с наивысшей возможной скоростью. А место фактического размещения данных определяется RAID-системой.

 Внешняя подсистема RAID

Рис. 12.6. Внешняя подсистема RAID

Внешние RAID-системы иногда называют "RAID в шкафу" или "RAID в ящике", потому что расслоение RAID производится внутри корпуса с дисками. Такие внешние подсистемы RAID обладают многими достоинствами. Они являются не только идеальным решением для MSCS, но и вообще, универсальным лучшим решением. Ниже перечислены достоинства систем "RAID в шкафу":

  • Удобство при подключении. При использовании внутренних RAID-систем вам потребуются многочисленные кабели – по кабелю для каждого шкафа с дисками, выходящему из каждого RAID-контроллера. А если пользоваться внешним RAID, то вам понадобится проложить только один кабель от адаптера главной шины до RAID-контроллера и кабели от контроллера, формирующие соединение "гирляндой" (daisy chain) к каждому шкафу с дисками (см. рис. 12.7). При помощи внешних RAID-систем можно без труда соединять сотни дисководов.
  • Обеспечивается избыточность RAID. Многие внешние решения RAID разрешают одному контроллеру памяти осуществлять коммуникацию и с основным, и с вторичным RAID-контроллером, что обеспечивает полное резервирование и переход по отказу к другому узлу.
  • Обеспечивается кэширование в кластерах. Применяя внешние решения RAID, кэширование можно выполнить гораздо более просто. При использовании внешних RAID, вы можете разрешать применение как кэширования, так и средств для отказоустойчивости, не беспокоясь о согласованности работы кэшей из разных контроллеров (потому что имеется только один кэш и один контроллер). Фактически, при применении внешнего RAID, использование кэша записи является безопасным. При кэшировании данных от реляционных СУБД некоторый риск все же сохраняется, но при применении внешнего RAID он уменьшается. Обязательно проверьте, что поставщик ваших внешних RAID-систем поддерживает зеркальное дублирование кэшей. Зеркальное дублирование кэшей обеспечивает отказоустойчивость кэш-памяти в случае отказа ее микросхем.
  • Поддержка большого количества дисковых накопителей. Для работы больших или высокопроизводительных систем иногда требуется конфигурировать дополнительные дисковые накопители. То, что дисковых накопителей может потребоваться много, вы знаете из "Планирование мощности системы" , где вы учились планировать мощность системы, и еще узнаете в "Разрешение наиболее распространенных проблем производительности" , посвященной типичным проблемам с производительностью. Применяя внешние устройства RAID, вы сможете присоединять сотни дисков к одному адаптеру главной шины, а внутренние RAID-системы, как и системы SCSI, ограничивают вас несколькими дюжинами дисков на один контроллер.
 Подключения кабелей внутренних RAID-систем  в сравнении  с подключением кабелей внешних RAID-систем

Рис. 12.7. Подключения кабелей внутренних RAID-систем в сравнении с подключением кабелей внешних RAID-систем

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