5.6. Расширенные технологии хранения

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

5.6.1. Сетевое хранилище

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

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

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

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

Обычно вопрос выбора технологии лучше решать с учётом встроенных возможностей клиентов. Тому есть несколько объяснений:

Учтите, что все проблемы, связанные с клиентом, умножаются на число клиентов в вашей организации. Используя встроенные возможности клиентов, вы не должны устанавливать на каждом клиенте дополнительные программы (а значит не потребуется дополнительных затрат на приобретение программ). Это также благоприятствует хорошей поддержке и интеграции с клиентской операционной системой.

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

5.6.2. RAID-массивы

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

Запомнив это, давайте воспользуемся тем, что мы знаем о дисковых хранилищах, и попробуем определить, как могут возникать проблемы с дисками. Сначала рассмотрим случай полного отказа оборудования:

Диск с четырьмя разделами выходит из строя: что произойдёт с данными этих разделов?

Они сразу становятся недоступными (по крайней мере, до тех пор, пока диск не будет заменён и данные не будут восстановлены из последней резервной копии).

Дисковый раздел с одним разделом работает на пределе возможностей из-за большой нагрузки: что произойдёт с приложениями, которым нужен доступ к данным этого раздела?

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

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

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

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

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

5.6.2.1. Основные понятия

RAID — это сокращение от Redundant Array of Independent Disks (Массив независимых дисков с избыточностью) [1]. Как следует из имени, RAID — это способ объединения нескольких дисков и представления их в виде одного диска.

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

Что ещё важнее, массивы RAID могут быть организованы разными способами, и иметь различные характеристики в зависимости от конечной конфигурации. Давайте рассмотрим различные конфигурации (так называемые уровни RAID) более подробно.

5.6.2.1.1. Уровни RAID

Инженеры Berkeley изначально определили пять различных уровней RAID и пронумеровали их от 1 до 5. Со временем другие инженеры и представители индустрии хранилищ определили дополнительные уровни RAID. Не все уровни RAID были одинаково полезны, некоторые были интересны только для исследований, а другие не могли быть реализованы по экономическим соображениям.

В итоге осталось три уровня RAID, которые получили широкое распространение:

  • Уровень 0

  • Уровень 1

  • Уровень 5

Эти уровни подробно рассматриваются в следующих разделах.

5.6.2.1.1.1. RAID-0

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

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

Например, в массиве с двумя дисками и размером блока 4 Кбайта, 12 Кбайт данных будут записаны на диски в три 4 килобайтных блока следующим образом:

  • первые 4 Кбайта будут записаны на первый диск, в первый блок

  • вторые 4 Кбайта будут записаны на второй диск, в первый блок

  • последние 4 Кбайта будут записаны на первый диск, во второй блок.

По сравнению с одним диском, RAID-0 имеет следующие преимущества:

  • Больший общий размер — Объём массивов RAID-0 может быть больше объёма одного диска, что облегчает хранение больших файлов данных

  • Увеличение скорости чтения/записи — Нагрузка на массив RAID-0 распределена по всем дискам массива (если конечно весь ввод/вывод не ограничен одним блоком).

  • Использование пространства в полном объёме — Для хранения данных может использоваться всё доступное пространство всех дисков массива.

По сравнению с одним диском, RAID-0 имеет следующие недостатки:

  • Меньшая надёжность — Чтобы массив RAID-0 работал, все диски массива должны быть исправны, при отказе одного диска в массиве RAID-0 из N дисков теряется 1/N-ная часть всех данных и весь массив становится бесполезен.

ПодсказкаПодсказка
 

Если вы путаетесь в разных уровнях RAID, просто запомните, что RAID-0 отказоустойчив на 0 процентов.

5.6.2.1.1.2. RAID-1

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

При любой записи данных в массив RAID-1 имеют место две операции физической записи: на первый и второй диск. С другой стороны, при чтении данных необходимо прочитать данные только один раз и для этого подходит любой диск массива.

По сравнению с одним диском, массив RAID-1 имеет следующие преимущества:

  • Улучшенная отказоустойчивость — Даже если один диск в массиве откажет, данные будут по-прежнему доступны;

  • Увеличенная скорость чтения — Если оба диска исправны, операции чтения можно поровну разделить между ними, сократив нагрузку на каждый диск.

По сравнению с одним диском, массив RAID-1 имеет следующие недостатки:

  • Максимальный размер массива ограничен максимальным размером доступного диска.

  • Уменьшенная скорость записи — Так как оба диска должны быть в актуальном состоянии, все операции записи должны выполняться двумя дисками, что замедляет общий процесс записи данных в массив;

  • Меньшая эффективность вложений — Так как один диск является избыточным, массив RAID-1 обходится минимум вдвое дороже одного диска.

ПодсказкаПодсказка
 

Если вы путаетесь в разных уровнях RAID, просто запомните, что RAID-1 избыточен на 100 процентов.

5.6.2.1.1.3. RAID-5

RAID-5 пытается сочетать преимущества RAID-0 и RAID-1 и при этом уменьшить свойственные их недостатки.

Подобно массиву RAID-0, RAID-5 состоит из нескольких дисков, разделённых на блоки. Благодаря этому объём массива RAID-5 может быть больше объёма одного диска. Как и в массиве RAID-1, в RAID-5 часть дискового пространства используется для избыточности, что увеличивает отказоустойчивость.

Однако принцип работы RAID-5 отличается от RAID-0 или RAID-1.

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

Эта чётность позволяет восстановить данные при отказе одного из дисков массива. Чётность в блоке x вычисляется математическим образом по данным всех блоков x, расположенных на остальных дисках массива. Если данные блока меняются, также должна быть пересчитана и обновлена чётность в соответствующем блоке.

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

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

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

По сравнению с одним диском, массив RAID-5 имеет следующие преимущества:

  • Улучшенная отказоустойчивость — Если один диск в массиве выходит из строя, с помощью чётности можно восстановить данные пропавших блоков, сохраняя работоспособность массива [2];

  • Увеличенная скорость чтения — Так как данные распределены по дискам массива, как и в RAID-0, операции чтения также распределяются между всеми дисками;

  • Хорошая эффективность вложений — В массиве RAID-5 из n дисков для избыточности отводится только 1/n-ная часть общего пространства.

По сравнению с одним диском, массив RAID-5 имеет следующие недостатки:

  • Пониженная скорость записи — Так как любая запись в массив порождает как минимум две операции записи на физические диски (запись данных и чётности), по сравнению с одним диском скорость записи ниже [3]

5.6.2.1.1.4. Вложенные уровни RAID

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

Например, что получится, если диски в массиве RAID-0 сами будут являться массивами RAID-1? Это должно дать преимущество скорости RAID-0 и надежность RAID-1.

Это всего лишь пример того, что можно сделать. Наиболее распространены следующие вложенные уровни RAID:

  • RAID 1+0

  • RAID 5+0

  • RAID 5+1

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

  • Порядок имеет значение — Порядок, в котором вложены уровни RAID, может сильно влиять на надёжность. Другими словами, массивы RAID 1+0 и RAID 0+1 не одинаковы.

  • Стоимость может быть высокой — Если и есть общий недостаток у всех вложенных реализаций RAID, то это стоимость; наименьший возможный массив RAID 5+1 состоит из шести дисков (а для больших массивов нужно ещё больше дисков).

Теперь, когда мы обсудили основные принципы RAID, давайте посмотрим, как могут быть реализованы RAID-массивы.

5.6.2.1.2. Реализации RAID

Из предыдущих разделов очевидно, что для работы RAID необходим определённый «интеллект», управляющий операциями ввода/вывода отдельных дисков. Как минимум должны выполняться следующие задачи:

  • Распределение приходящих запросов ввода/вывода отдельным дискам массива;

  • Для RAID 5, вычисление чётности и запись её на нужный диск массива;

  • Наблюдение за состоянием отдельных дисков массива и выполнение необходимых действий при отказе диска;

  • Управление пересчётом данных отдельного диска массива, когда этот диск заменён или исправлен;

  • Предоставление администраторам средств управления массивом (удаление и добавление дисков, запуск и остановка пересчёта, и т.д.)

Существуют два основных подхода к решению этих задач. Эти подходы будут рассмотрены подробно в следующих разделах.

5.6.2.1.2.1. Аппаратный RAID

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

Большинство RAID-контроллеров работают с дисками SCSI, хотя также существуют и RAID-контроллеры для дисков ATA. В любом случае, интерфейс администрирования обычно имеет один из трёх видов:

  • Специализированные вспомогательные программы, которые запускают приложения в операционной системе и предоставляют программный интерфейс к плате контроллера;

  • Интерфейс, реализованный на плате, и доступный с терминала через последовательный порт;

  • BIOS-подобный интерфейс, доступный только при тестировании компьютера в момент загрузки.

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

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

5.6.2.1.2.2. Программный RAID

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

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

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

5.6.3. Управление логическими томами

Ещё одна расширенная технология хранения называется Управление логическими томами (Logical Volume Management, LVM). LVM позволяет рассматривать физические устройства хранения как низкоуровневые строительные блоки, из которых можно собирать различные конфигурации хранилища. Набор возможностей в разных реализациях может быть разным, но обычно он включает группировку физических хранилищ, изменение размера физического тома и перенос данных.

5.6.3.1. Группировка физических хранилищ

Хотя эта возможность может называться по-другому, группировка физических хранилищ составляет основу всех реализаций LVM. Как следует из названия, физические устройства хранения можно группировать и создавать одно или несколько логических устройств хранения. Логические устройства хранения (или логические тома) могут иметь больший объём, чем объём одного из составляющих их физических устройств хранения.

Например, имея два диска по 100 Гбайт, можно создать один логический том объёмом 200 Гбайт. Хотя также можно создать логические тома объёмом 150 и 50 Гбайт. Допускаются любые комбинации логических томов с общим объёмом, равным или меньшим суммарного объёма дисков (в данном примере 200 Гбайт). Свобода выбора ограничена только потребностями вашей организации.

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

5.6.3.2. Изменение размера логического тома

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

Однако LVM позволяет легко увеличивать размер логического тома. Представим на минуту, что из нашего массива хранилищ объёмом 200 Гбайт был выделен логический том размером 150 Гбайт, и ещё 50 Гбайт осталось в запасе. Если логический том объёмом 150 Гбайт заполнится, LVM позволяет увеличить его размер (скажем, на 10 Гбайт) без изменения физической конфигурации. В зависимости от окружения операционной системы, сама операция изменения размера может выполняться динамически или потребовать отключения на короткое время.

5.6.3.3. Перенос данных

Опытные системные администраторы будут впечатлены возможностями LVM, но они также должны задать себе вопрос:

Что произойдёт, если один из дисков, составляющих логический том, начнёт выходить из строя?

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

5.6.3.4. Если есть LVM, зачем нужен RAID?

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

Но эти сомнения совершенно напрасны. RAID и LVM — дополняющие друг друга технологии, которые могут использоваться вместе (подобно вложенным уровням RAID), что позволяет взять от каждой из них лучшее.

Замечания

[1]

Когда работы в области RAID только начинались, это сокращение расшифровывалось как «Redundant Array of Inexpensive Disks» (Массив недорогих дисков с избыточностью), но со временем «отдельные» диски, которые они должны были заменить, становились всё дешевле, что сделало сравнение по цене бессмысленным.

[2]

Производительность ввода/вывода при отсутствии одного диска падает из-за дополнительной нагрузки, вызванной восстановлением потерянных данных.

[3]

На это также влияют расчёты чётности, необходимые при каждой записи. Однако, в зависимости от реализаций RAID-5 (и особенно системы, выполняющей расчёт чётности), это влияние может быть как довольно ощутимым, так и практически незаметным.