-
Особенности построения RAID массивов в современных системах хранения
-
Управление логическими дисками и/или RAID конфигурациями в системе хранения
За последнее время недорогие системы хранения данных сделали довольно заметный скачок вперед по своим возможностям и производительности. К сожалению, это привело по понятным причинам к усложнениям в их настройке и применению. Задача данной заметки - популярно объяснить ряд возможностей современных массовых систем хранения данных и научить их использовать максимально правильно и без ошибок.
Мы начнем с кратких описаний основных относительно новых понятий, используемых в системах хранения данных. Без понимания таких понятий остальной материал читать нет смысла.
Member Disk - Диск-участник - Диск, входящий в группу дисков. Может быть как диском с данными, так и диском "горячего" резерва для данной дисковой группы. Диск с данными является частью общего дискового пространства группы дисков. Группа дисков может состоять и из одного физического диска.
Disk Group (DG) - Группа дисков - под дисковой группой понимается группа из одного или несколько физических жестких дисков, на которой далее могут быть созданы логические диски.
Logical Disk (LD) - логический диск - в терминологии систем хранения это диск, созданный с выделением пространства (места) на Disk Group (DG) (группе дисков). Логический диск всегда занимает непрерывное, цельное пространство в DG, которое в свою очередь всегда использует все диски группы. Довольно часто на одной дисковой группе создается один логический диск. Логический диск может быть представлен (экспортирован) во внешний мир как физический хост-компьютеру с выделением ему LUN.
Logical Unit (LUN) - логическое устройство - в терминологии систем хранения представляет собой объект, к которому могут непосредственно адресоваться хост-компьютеры. LUN также должен и отрабатывать все SCSI команды, посылаемые ему хост-компьютером, так как хост-компьютер рассматривает LUN как самостоятельное физическое устройство.
Local Spare - локальный резерв - в терминологии систем хранения под Local Spare подразумевается резервный, не используемый жесткий диск, который должен заменить другой жесткий диск в конкретной DG в случае выхода того из строя. После замены диска RAID контроллер автоматически восстанавливает целостность группы дисков. На рисунке ниже иллюстрируется применение Local Spare.
В этом примере Local Spare диск HDD4 используется для замены вышедшего из строя диска HDD1 в нулевой дисковой группе DG0 |
Global Spare - глобальный резерв - в терминологии систем хранения под Global Spare подразумевается резервный, не используемый жесткий диск, который должен заменить другой жесткий диск в любой DG в случае выхода того из строя. После замены RAID контроллер автоматически восстанавливает целостность группы дисков. На рисунке ниже иллюстрируется применение Global Spare.
В этом примере Global Spare диск HDD5 может использоваться для замены вышедшего из строя диска HDD2 в первой дисковой группе DG1 или диска HDD6 во второй дисковой группе DG2. |
Если в системе есть несколько Global Spare дисков, то они используются последовательно, в порядке возрастания своего ID.
Free Chunk - свободный кусок - в RAID системах под Free Chunk подразумевается свободное место, оставшееся в группе дисков (DG) после создания на ней логических дисков (LD). Free Chunk может появиться и после перестройки RAID массива. Если группа дисков (DG) создана, но ни одного логического диска еще нет, то вся группа дисков представляет собой Free Chunk.
Volume - том - набор из нескольких логических дисков, расположенных внутри одной группы дисков (DG). Иными словами, в том можно включить один или более логических дисков, созданных на основе одной группы дисков с одним уровнем RAID соответственно.
LUN Mapping - отображение логического устройства - несколько утрируя, мы можем утверждать, что LUN Mapping это варианты предъявления хост-компьютерам логических дисков и/или томов (volumes) из системы хранения данных. Например, создав логический диск, мы можем присвоить ему LUN и далее сделать его видимым только для конкретного хост-компьютера и/или конкретного канала системы хранения данных.
Delayed Write Operation - отложенная запись - некоторые RAID контроллеры умеют отвечать хост-компьютеру, что операция записи завершена, хотя на самом деле данные только записались в кэш память RAID контроллера. В этом случае говорят, что контроллер поддерживает отложенную запись.
Pre-Read Operation - предварительное чтение - некоторые RAID контроллеры умеют заранее считывать данные в кэш-память, которые, возможно, потребуются хост-компьютеру в будущем. Такие контроллеры применяют Pre-Read Operation после обнаружения запросов на последовательное чтение от хост-компьютера.
Tagged Queuing - очередь маркированных команд - для объяснения этого термина следует сделать небольшое отступление. Еще в протоколе SCSI было создана возможность разделения этапа запроса данных от устройства и этапа их получения. Реализован этот механизм с помощью команд. После передачи команды устройству, связь хост-компьютера с ним завершается до получения запроса на обслуживание уже от устройства, а затем система опрашивает устройство, какая же именно команда выполнена. Таким образом, можно давать задания нескольким устройствам одновременно, и несколько заданий одному устройству. При этом запросы на чтение и запись ставятся внутри устройства в очередь и исполняются конкурентно – первыми те, которые требуют меньше времени. В этом режиме каждая команда помечается (маркируется), поэтому режим и получил такое название. Количество команд, которые могут быть одновременно "выстроены" в очередь, зависит от конкретного контроллера и обычно находится в диапазоне 256-512.
Disk group expansion - расширение группы дисков - механизм увеличения емкости группы дисков путем добавления новых дисков. Свободное пространство в этом случае всегда появляется в конце имеющегося дискового пространства.
Logical disk expansion - расширение логического диска - механизм увеличения емкости логического диска путем присоединения свободного пространства (Free Chunk).
Logical disk shrink - уменьшение логического диска - механизм уменьшения емкости логического диска путем увеличения свободного пространства (Free Chunk). При использовании этого механизма следует помнить, что в отличие от Logical disk expansion уменьшение размера логического диска может привести к потери данных.
Особенности построения RAID массивов в современных системах хранения
Исторически считалось и многие продолжают считать, что "RAID массив" есть понятие, жестко привязанное к конкретным дискам. Иными словами, если на трех дисках создан RAID 5, то все диски принадлежат этому и только этому RAID 5. В большинстве современных и даже продвинутых RAID контроллерах на конкретной группе дисков вы сможете создать только один столь же конкретный RAID массив. Да, конечно, вы можете разделить массив на логические с точки зрения RAID контроллера и физические с точки зрения внешнего мира диски (LUN), но при этом каждый жесткий диск в обычном RAID будет принадлежать только одному RAID массиву.
В последние годы столь устоявшаяся и понятная каждому специалисту система стала меняться. Для удобства решения различных задач во многих продвинутых системах хранения привязка жесткого диска к конкретному RAID массиву отсутствует. Что это означает? Ответ прост - это означает, что на фиксированной группе физических жестких дисков вы можете создавать сколь угодно RAID массивов. На трех жестких дисках, например, вы можете создать несколько RAID 5, несколько RAID 0 и/или RAID 3. Ничего не мешает и RAID 1 иметь там же. Допустимое максимальное количество RAID массивов внутри одной группы жестких дисков зависит от конкретной реализации системы хранения и обычно не бывает меньше 32. Лучше всего структуру многораидной (термин вольный и не рассчитан на занесение в анналы) дисковой группы можно понять по рисунку ниже.
где
-
MD - Member Disk
-
LD - Logical Disk
Мы видим, что в этом примере в дисковой группе создано три логических диска LD0, LD1 и LD2 и осталось свободное место (Free chunk). Как и было обещано, каждый логический диск может иметь свой уровень RAID. LD0, например, может быть RAID 5, LD1 - RAID0, а LD2 может быть RAID 6.
У любого нормального человека, незнакомого до сих пор с подобными системами, неминуемо возникнет по крайней мере 2 вопроса. Первый: Как понимать различную избыточность у RAID разного уровня? Второй: А зачем вообще это нужно? Попытаемся ответить на оба вопроса.
Как понимать различную избыточность у RAID разного уровня
Пожалуй, это как раз не самый сложный вопрос применительно к многораидным дисковым группам. Поясним ответ на примере выше. Если один диск (любой, разумеется) из 5 выйдет из строя, то произойдет следующее:
LD0 (RAID5) продолжит функционировать, потери данных не будет и LD0 получит статус Degraded.
LD1 (RAID0) будет разрушен, данные на нем потеряны и LD1 получит статус Faulty.
LD2 продолжит функционировать, потери данных не будет и LD2 получит статус Degraded.
Другими словами, избыточность для каждого LD будет определяться уровнем RAID логического диска вне зависимости от уровня RAID других LD.
Зачем это нужно
Задач, которым требуется, такое построение системы на самом деле довольно много. Приведем хотя бы пару примеров.
-
Разбиение общей емкости системы хранения на логические диски с емкостью не более 2 терабайт на диск для удобства работы с некоторыми операционными системами/приложениями. Если сделать тоже самое на нескольких дисковых группах вместо одной, то на избыточность придется потратить 3-4 диска вместо одного при использовании единственной дисковой группы.
-
Если требуется иметь небольшой по размеру логический диск с высокой надежностью хранения данных, а все остальное место отдать под задачу, требующую максимальной производительности без требований к надежности, то вы можете создать RAID 6 небольшой емкости, построив на оставшемся месте RAID 0.
Конфигурирование системы хранения
Уже зная и понимая основные понятия для систем хранения данных, мы попытаемся выяснить как именно и в какой последовательности нам следует конфигурировать современную систему хранения. Итак, в конечном итоге структура созданного нами хранилища будет приблизительно выглядеть так:
Последовательность наших действий на самом деле очень проста.
-
Определяем, как много различных групп дисков нам необходимо и необходимо ли вообще деление на дисковые группы. Различные физические группы дисков создают в очень специфических ситуациях - например, вам необходимо регулярно менять диски, на которые делается backup чего-либо. Для подавляющего большинства задач следует создавать одну дисковую группу из всех дисков системы хранения. Основная причина - чем больше дисков в дисковой группе, тем выше будет производительность системы хранения. Как говорят люди из этого мира "чем больше шпинделей, тем быстрее ехать".Создаем дисковую группу (группы). На этом этапе следует решить, есть ли необходимость в горячем резервировании дисков на случай возможного выхода какого-либо диска из строя. Если есть, то количество дисков под данные следует уменьшить на количество дисков, которые будут заняты под резерв.
-
Создаем логический диск (диски). Логический диск в отличие от дисковой группы может быть экспортирован во внешний мир как самостоятельно адресуемый, т.е. ему может быть присвоен LUN. Иными словами, для хост-компьютера логический диск внутри системы хранения может быть представлен как физический. Эту разницу необходимо четко представлять - диск логический с точки зрения системы хранения, для внешнего мира, для любой операционной системы, Fibre Channel или SAS/SCSI контроллера будет опознан как физический.
Примечание: в старых системах хранения логические диски часто назывались slice (часть). -
Далее все зависит от задачи. Можно объединить несколько логических дисков в том (Volume) и ему присвоить LUN, можно логический диск (диски) экспортировать напрямую, назначив ему (им) LUN.
-
После присвоения LUN вам необходимо решить, на какие каналы (порты для Fibre Channel) вы будете отображать (мапировать) логический диск (диски) или том. Другими словами, вы должны "подсоединить" каждый логический диск, он же LUN, к нужному каналу устройства хранения. Если вы планируете использовать систему хранения в SAN системе, то возможно "подключение" логического диска к нескольким каналам (портам) системы хранения данных одновременно. Эта операция называется LUN Mapping.
-
На этом собственно конфигурирование системы хранения закончено.
Настройка системы хранения под внешний мир
Итак, мы настроили систему хранения, применив большинство настроек по умолчанию. Теперь мы познакомимся с некоторыми специфическими настройками систем хранения для правильной работы с подключенными к системе хост-компьютерами.
Настройки метода использования Fibre Channel системы хранения данных
Для Fibre Channel систем следует также указать системе хранения ее будущую роль (в соответствии с решаемой задачей), называемую также Storage Provisioning. Возможны, например, такие варианты: Simple method (Простой метод), Symmetric method (Симметричный метод) и Selective method (Избирательный метод). Расскажем подробнее о каждом варианте использования.
-
Simple method (Простой метод) - самый простой вариант подключения одной системы хранения к единственному хосту. Также называется в обиходе "точка-точка". Графически Simple использование можно представить так:
На рисунке показано соединение двух FC каналов на хост-компьютере с двумя дисковыми группами в системе хранения. Это, разумеется, самый редкий вариант применения Simple method (Простой метод). В большинстве случаев хост-компьютер просто подключается по одному каналу к одной группе дисков. Выбрав Simple method (Простой метод), вы далее сможете установить соответствие (отобразить) LUN-ы системы на ее Fibre Channel порты, а LUN-ы в свою очередь связать с логическими дисками или томами. В зависимости от конкретной системы хранения для изменения могут быть доступны передаваемые во внешний мир параметры диска, такие как размер сектора, количество цилиндров, секторов и т.д. |
-
Symmetric method (Симметричный метод) - этот метод применяется в том случае, если хост-компьютер использует multi-path IO (MPIO) способ работы с системой хранения. MPIO (дословно мультимаршрутный ввод-вывод) означает, что к одному и тому же логическому диску (тому) хост-компьютер осуществляет доступ по нескольким (обычно двум) каналам одновременно. MPIO позволяет во-первых, удвоить скорость обмена данными с системой хранения, а во-вторых, повысить надежность обмена данными - в случае выхода из строя одного порта/кабеля на системе хранения и/или хост-компьютере, весь обмен продолжается по оставшемуся каналу. Для того, чтобы использовать MPIO, должна быть поддержка соответствующими драйверами и программами на хост-компьютере и встроенная в firmware поддержка на стороне системы хранения. Графически Symmetric method (Симметричный метод) можно представить так:
Выбрав Symmetric method (Симметричный метод), вы далее сможете установить соответствие (отобразить) LUN-ы системы на ее Fibre Channel порты, а LUN-ы в свою очередь связать с логическими дисками или томами. В зависимости от конкретной системы хранения для изменения могут быть доступны передаваемые во внешний мир параметры диска, такие как размер сектора, количество цилиндров, секторов и т.д. Кроме этого, вы должны ввести номер (ID) и WWPN (World Wide Port Number - уникальный адрес Fibre Channel порта, который по сути является аналогом MAC-адреса сетевой карты) для каждого FC порта, подключенного с MPIO к системе хранения. |
-
Selective method (Избирательный метод) - если утрировать, то этот метод выбирается для всех вариантов построения систем, отличных от Simple method (Простой метод) или Symmetric method (Симметричный метод). Избирательный метод вы должны выбрать для участия данной системы хранения в SAN (Storage Area Network). Или, что тоже самое - в тех случаях, когда планируется использовать систему хранения более чем с 2 хост-компьютерами (а это можно сделать только применяя FC коммутаторы). Иллюстрировать это метод нет смысла - вариантов конфигураций может быть сколь угодно много.
Выбрав Selective method (Избирательный метод), вы далее сможете установить соответствие (отобразить) LUN-ы системы на ее Fibre Channel порты, а LUN-ы в свою очередь связать с логическими дисками или томами. В зависимости от конкретной системы хранения для изменения могут быть доступны передаваемые во внешний мир параметры диска, такие как размер сектора, количество цилиндров, секторов и т.д.
Кроме этого, вы можете ввести номер (ID) и WWPN (World Wide Port Number - уникальный адрес Fibre Channel порта, который по сути является аналогом MAC-адреса сетевой карты) для каждого FC порта, если это необходимо.
Мощнейшей и часто используемой возможностью настройки в Selective method (Избирательный метод) является LUN Masking (Маскирование LUN). Эта возможность позволяет вам любые LUN делать как доступными для определенных хост-компьютеров, так и невидимыми (замаскированными) для тех хост-компьютеров, которым не разрешено иметь доступа к этим же LUN.
Что еще немаловажно - после выбора Selective method (Избирательный метод) вы можете запрещать/разрешать запись на конкретные LUN. Таким образом, в SAN можно выложить данные, которые никто в SAN случайно или намеренно не сможет изменить и/или удалить.
Управление логическими дисками и/или RAID конфигурациями в системе хранения
Итак, мы сконфигурировали систему хранения и она успешно используется для решения ваших задач. В процессе эксплуатации часто возникает необходимость изменения параметров собственно системы хранения "на лету", т.е. в "горячем" режиме, без выключения или перезагрузки системы. Например, вы через год-другой захотите увеличить емкость системы хранения простой заменой дисков, но не можете позволить себе потерять данные на существующих дисках, и временно перенести данные такого объема некуда. Это и ряд других возможностей вполне доступны и мы расскажем, как можно реализовать подобные задачи.
Перенос RAID из одной системы хранения в другую
Задача: Перенести RAID из одной системы хранения в другую. Например, у вас есть в системе хранения RAID из 8 дисков и вы хотите перенести эти 8 дисков в другую аналогичную систему хранения. Для этих целей используется функция Array Roaming (Перенос массива). Для этого всего лишь надо включить в системе хранения Auto Array Roaming Control (Автоматическое управление переносом массива), установить в нее 8 дисков и все. В случае переноса массива с повреждением данных следует "заставить" систему принять такой массив установкой параметра Force to import abnormal group (Принудительно импортировать некорректную группу) или аналогичного ему.
Расширение емкости системы хранения
Поскольку множество систем хранения используют дешевые и емкие SATA диски, очень часто у пользователей возникает желание увеличить емкость системы хранения, просто заменив диски на более емкие. Останавливает такую операцию зачастую только одно - некуда перенести данные с системы хранения, поскольку до недавнего времени недорогие системы хранения не умели увеличивать емкость заменой дисков без пересоздания RAID с потерей всех данных.
С 2006 года и у недорогих систем появилась возможность "горячего" расширения БЕЗ потери данных и тем самым необходимости их временного сохранения где-либо в сети.
Реализуется такая задача достаточно просто - вы последовательно заменяете один диск за другим, а по завершении процесса указываете системе к какому логическому диску присоединить появившееся свободное пространство (Free Chunk). Во время такой замены НЕ требуется прекращение текущей работы с массивом и/или перезагрузка операционной системы. Даже под Microsoft Windows процесс замены происходит безболезненно.
Изменение уровня RAID
Начав эксплуатацию системы хранения, вы можете придти к выводу, что существующий сейчас уровень RAID в каком-то логическом диске неудобен для использования данного диска для ваших задач. Разумеется, нет ничего проще задачи по пересозданию RAID массива заново, но в этом варианте потеря всех данных неизбежна. К счастью, современные системы хранения позволяют изменить уровень RAID без потери данных, что очень удобно. Конечно, переход на другой уровень имеет свои ограничения - понятно, что из RAID 1 нельзя сделать RAID 5, но из RAID 10 -> RAID 5 можно. Все возможные варианты смены уровней сведены в таблицу ниже. Критерий переноса по сути один - минимальное количество дисков.
Новый уровень RAID |
Существующий уровень RAID | ||||
RAID 0 | RAID 1 | RAID 10 | RAID 3/5 | RAID 6 | |
RAID 0 | Nn ≥ No | OK | OK | OK | OK |
RAID 1 | N/A | Nn > No | N/A | N/A | N/A |
RAID 10 | Nn ≥ No*2 | Nn ≥ No*2 | Nn ≥ No | Nn ≥ (No-1)*2 | Nn ≥ ( No-2)*2 |
RAID 3/5 | Nn ≥ No+1 | Nn ≥ No+1 | OK | Nn ≥ No | OK |
RAID 6 | Nn ≥ No+2 | OK | OK | Nn ≥ No+1 | Nn ≥ No |
В этой таблице:
OK - изменение всегда возможно.
No - количество дисков.
Nn - изменение возможно только при количестве дисков в новом RAID большем или равном указанному.
N/A - такое изменение уровня RAID невозможно.
Диагностика и обслуживание
По завершении успешного конфигурирования системы хранения нам останется только следить за ней, предварительно приняв все меры к тому, чтобы исключить возможные внезапные аварии системы. Для систем с высоким требованиям к надежности мы рекомендуем использовать следующие методы и способы диагностики и обслуживания.
-
В фоновом режиме, во время минимальной загрузки системы (по вечерам в выходные, например), запускать процедуры проверки жестких дисков. Эти процедуры известны:
Disk Scrubbing (DS - "Чистка" диска) - эта процедура дает возможность обнаружить плохие (bad) сектора жесткого диска и переназначить на место плохих секторов резервные хорошие. Эта процедура применяется, в отличие от DST (DST - Самотестирование диска), только к уже созданным RAID массивам, поскольку позволяет не только замещать плохие (bad) сектора, но и восстанавливать целостность RAID массива с обнаруженным (ми) плохим (ми) сектором (секторами) корректировкой контрольной суммы RAID. В отличие от DST теста, DS может выполняться в фоновом режиме, без ограничения доступа к данным в системе хранения со стороны компьютера. Центральный процессор системы хранения данных сам распределяет свои силы между обслуживанием запросов от компьютера, к которому подключена система хранения данных и выполнением DS. Понятно, что наивысший приоритет имеют запросы от компьютера. Но как только в этих запросах появляется "окно", выполнение DS продолжается.
Disk Cloning and S.M.A.R.T. (Клонирование диска и диагностика - сокращенно DC) - еще одна возможность для пользователя следить за диском, вероятность выхода из строя которого высока, и с минимальными потерями в производительности системы хранения заменить такой диск. DC есть смысл применять в том случае, если в системе таким средством, как DS, обнаружен жесткий диск с постоянно добавляющимися дефектами, шансы которого на выход из строя близки к 100%. Разумеется, проще всего его сразу заменить, но часто бывают ситуации, когда свободного диска под руками нет и есть временная необходимость в использовании даже некачественного диска, но с гарантией от потери данных в системе. Клонирование "умирающего" диска позволяет поддерживать в системе хранения его точную, "клонированную" копию и после реальной "смерти" диска немедленно перейти к работе с его точной копией.
-
Следует обязательно иметь копию всей конфигурации системы хранения у себя на защищенном от аварии диске. В этом случае даже при выходе системы хранения из строя все данные могут быть "подняты" на другой аналогичной системе после простого переноса дисков. Современные системы хранения имеют возможность сохранения своей конфигурации как на жестких дисках "у себя", так и в любом месте локальной сети.
-
Обязательно настройте все способы оповещения администратора о возможных возникающих проблемах. Это можно сделать как отправкой почты от системы к администратору, так и по SNMP протоколу.
-
Современные системы хранения умеют протоколировать (logging) операции как по FC портам, так и по LUN. Вы можете оценить, в частности, нагрузку от хост-компьютеров на систему хранения. Рекомендуется периодически включать протоколирование и просматривать результаты.
Настоящие заметки, безусловно, не охватывают даже большей части возможностей современных систем хранения данных - но надо же с чего-то начинать. Мы надеемся, что этот материал облегчит понимание нового поколения недорогих систем хранения данных. Мы так же надеемся на его дальнейшее развитие настоящих заметок.