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

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

Но почему человечество вообще столкнулось с подобной проблемой?

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

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

Новый информационный взрыв – распространение компьютерной графики, сначала в виде растровых и векторных форматов файлов, а потом анимированных изображений. Следующий виток прогресса – и появилась потребность хранить аудиои видеоинформацию. Регистрация местоположения, социальные сети, ролики на YouТube и медицинские базы данных – все это создает гарантированный прирост хранимых данных.
Сейчас, если корова пасется на лугу, то человечество хочет знать не только ее возраст, вес и сколько в среднем она дает молока, но и местонахождение с точностью до полуметра, ее сиюсекундные физиологические параметры, а также иметь возможность наблюдать через веб-камеру, на что смотрит и что ест эта корова.

Разумеется, всю эту информацию надо где-то размещать, обрабатывать и хранить.
Вызовы, с которыми сталкивается ИТ-служба при создании систем долговременного хранения:

  • Постоянный рост данных
  • Большой объем данных для хранения
  • Гарантия целостности данных
  • Безопасность
  • Отказоустойчивость отдельных узлов и всей системы хранения данных в целом
  • Стоимость приобретения и обслуживания

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

Постоянный рост и большой объем данных для хранения

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

Представьте себе крупную почтовую систему компании, в которой на почтовом сервере постоянно накапливаются гигабайты писем с вложениями. При этом ИТ-отдел не знает, сколько гигабайт «прилетит» за сегодняшний день – 1 или более сотни. Согласно законодательству некоторых стран компании должны хранить почтовую переписку не менее пяти лет.

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

В итоге ИТ-специалисты сталкиваются с необходимостью выстроить свою систему хранения так, чтобы в любой момент нужно было нарастить дисковое пространство.

Разумеется, можно использовать старые добрые ленточные библиотеки или промышленные библиотеки накопителей на оптических дисках, но тут возникает очень интересный нюанс, описанный в предыдущей статье. Все эти устройства не являются системами хранения online. Представьте, например, чтобы просмотреть сведения из медицинской карты, врачу будет необходимо заказать определенные файлы, чтобы администратор СХД разыскал в специальном хранилище нужный носитель, поместил его в ленточную библиотеку, выполнил процедуру инвентаризации и переписал в дисковый каталог. Может ли ждать столько времени пациент, нуждающийся в неотложной помощи?

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

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

Методы наращивания дискового пространства в СХД

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

  • Локальный аппаратный, основанный на возможностях аппаратного RAID-массива добавлять в массив жесткие диски
  • Локальный программный, основанный на возможностях программного RAID-массива увеличивать размер жестких дисков.
  • Использование виртуальных RAID-массивов.
  • Объединение нескольких RAID-массивов в один пул.
  • Использование распределенных систем хранения данных (SDS).

Прежде чем мы начнем, или Разумные меры предосторожности

Перед продолжением описания я бы хотел обратить внимание на ответственность технического специалиста – инженера, системного администратора, ИТ-руководителя перед обществом. Ведь данные, которые мы обрабатываем, могут влиять на нашу жизнь. Далеко не всегда речь идет о смешных видеороликах на YouТube.

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

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

Внимание. Прежде чем мы продолжим разговор о методах расширения RAID-массива, необходимо ясно осознать одну простую, но очень важную вещь. При любых операциях с системами хранения данных всегда необходимо сделать полную резервную копию. Любые действия с дисковыми массивами и оборудованием СХД нужно начинать только после тщательной проверки наличия и работоспособности актуальной полной резервной копии (Full Backup).

Картинки по запросу Clonezilla

Хорошая практика – иметь две копии, созданные разными средствами. Классический пример такой подстраховки: одну копию записываем с помощью штатной программы резервного копирования, вторую – посредством программы снятия образа диска, например Clonezilla.
Не нужно думать: «Я вот только плату поставлю, диски с данными трогать вообще не буду» или «Я вот только еще один массив создам, остальное останется без изменений». Лично я видел немало бледных лиц и грустных глаз после сообщения о том, что существующий массив с данными не найден или разрушен.

Сделали резервные копии – можно спокойно выполнять необходимые манипуляции. Иначе быть беде.

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

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

Метод добавления в массив жестких дисков

Этот довольно старый и заслуженный метод базируется на возможностях «умных» аппаратных RAID-контроллеров перестраивать RAID-массив при добавлении нового жесткого диска, тем самым увеличивая объем.

Допустим, есть некий сервер или NAS  на восемь ячеек HDD с «горячей заменой» (hot-swap), заключенный в один корпус. Но установлено только шесть жестких дисков. Системный администратор желает расширить используемое дисковое пространство, добавив жесткие диски. Для исполнения задуманного ему достаточно разместить новый жесткий диск соответствующего объема в пустующей ячейке и дать задание RAID-контроллеру перестроить данный массив. Сообщить такое указание можно двумя способами: воспользоваться графической консолью или командной строкой для управления RAID-контроллером во время работы или перезагрузить сервер, во время старта войти в режим управления RAID-контроллером и уже оттуда добавить диск в массив.

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

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

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

Почему нельзя увеличить количество дисков в RAID до бесконечности?

Важный вопрос, который нельзя обойти стороной. Допустим, у нас есть очень большой сервер, например, на 36 жестких дисков. И мы решили сразу один RAID5 на все 36 HDD, чтобы сократить потери.
Действительно, потери при создании RAID-5 составляют один носитель, следовательно, суммарный объем массива составит 36-1 = 35, умноженное на объем одного диска.

Вроде бы все неплохо, но что произойдет дальше? При выходе из строя жесткого диска необходима его замена. После замены RAID-5 в режим восстановления, который может занять весьма продолжительный период. Все это время наш RAID находится в рабочем, но крайне уязвимом состоянии. И так как обычно жесткие диски приобретаются в одно время от одного вендора, велика вероятность, что за время перестройки массива выйдет из строя еще один диск, а одновременное отсутствие двух жестких дисков RAID-5 не переживет. Разумеется, чтобы снизить вероятность такого исхода, можно использовать RAID-6, позволяющий пережить выход из строя сразу двух HDD. Но применение дополнительных степеней избыточности не гарантирует полной безопасности.

Одновременно с этим растет время перестройки массива. В итоге можно легко дойти до того, когда массив будет постоянно пребывать в состоянии Degraded или Recovery (восстановление) и крайне редко в нормальном режиме работы.
Следует также отметить, что большие RAID-массивы создают большую нагрузку на систему в целом. Для их обслуживания требуются более мощной процессор, более объемный кэш, больше оперативной памяти. В итоге гигантский RAID будет требовать гигантские ресурсы, а это в конечном счете окажется не выгодно. Гораздо проще приобрести несколько систем хранения данных.

Совет. Если продолжать разговор о RAID-5, то на сегодняшний день рекомендуется создавать массивы, содержащие не более девяти жестких дисков.

Метод замены жестких дисков на большие

Ситуация немного осложняется, когда нужно не создавать новый дисковый том, а увеличить существующий. Например, в корзине с жесткими дисками закончились свободные ячейки. Если у вас используется массив на базе аппаратного RAID-контроллера, вам понадобится «всегонавсего»:

  • куда-то временно переместить данные (не забываем сделать еще одну дополнительную резервную копию!);
  • «развалить» существующий RAID-массив;
  • заменить жесткие диски на большие по объему;
  • заново создать RAID-массив;
  • записать данные из временного хранилища на вновь созданный массив.

Совет. Если жизнь заставила решиться на подобное мероприятие, обязательно зарезервируйте несколько свободных ячеек для расширения массива. Например, в вашем сервере ранее было установлено 12 HDD по 2 Тб. Вам необходимо удвоить объем, и возникла идея заменить их на 12 по 4 Тб. В данной ситуации будет лучше приобрести шесть-семь жестких дисков по 8 Тб, а остальные ячейки оставить пустыми, чтобы в дальнейшем получить возможность увеличения массива.

Ситуация многократно осложняется, если в одном хранилище собрано несколько RAID-массивов под управлением одного аппаратного контроллера. Например, в СХД из 12 HDD собрано два массива по шесть HDD с логическими томами Volume 0 и Volume 1. При удалении массива Volume 0 контроллер запросто может решить, что у него остался один массив, и присвоить логическому Volume 1 метку «0». Фактически это будет означать, что у вас теперь нет ни одного работающего массива и единственный путь – удалить и второй RAID-массив и все пересоздать заново, восстановив данные из резервной копии. Это еще раз говорит о том, что всегда нужно иметь актуальные резервные копии всех данных (крайне желательно иметь две, созданные различными способами), вне зависимости от того, с каким из массивов предстоит работать.

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

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

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

Данная процедура для программного RAID-массива выглядит примерно так: имеем массив из четырех дисков RAID-5 по 2 Тб. Общий полезный размер – 6 Тб. Заменяем первый диск на винчестер 4 Тб и обязательно дожидаемся перестройки массива. Аналогично поступаем со вторым, третьим и четвертым дисками. Важно перед каждой заменой дождаться процедуры восстановления массива. А после замены и перестройки четвертого диска достаточно просто перезагрузить систему, и получаем полезный размер уже 12 Тб.

Если сравнивать преимущества и недостатки, лично я предпочитаю использовать программные RAID.
Причины следующие:

  • Жесткие диски все равно придется заменять по причине наработки на отказ. Стоит также заметить, что по прошествии времени появляются новые модели винчестеров большего объема, а старые модели снимаются с производства. А здесь появляется вариант «убить двух зайцев» – и объем нарастить, и обновить носители, не дожидаясь выхода из строя. При этом новые большие HDD зачастую дешевле, чем те, которые сейчас стоят в массиве. Так чего ждать?
  • Часто ради повышения быстродействия стараются установить большее число дисков, к тому же часть HDD резервируют для «горячей замены» – hot-spare. Поэтому когда приходит время наращивать объем, оказывается, что все возможности для установки новых носителей исчерпаны. В этом случае вариант с заменой дисков подошел бы куда как кстати.

Ради справедливости нужно отметить, что существуют некоторые системы, позволяющие без проблем и добавлять диск в массив, и заменять существующие диски на большие. Примером тому может послужить технология X-RAID. Однако лично я знаю только одно семейство СХД, где реализована данная функция, – ReadyNAS от компании Netgear. Однако на смену им уже вышла новая линейка хранилищ ReadyDATA, где данная технология уже не используется.

Virtual RAID, или Все диски в один пул

Другой, я бы сказал революционный, способ организации использования дискового пространства. Данный метод базируется на дополнительной виртуальной прослойке, которая служит посредником между имеющимся аппаратным обеспечением и логической организацией RAID-массивов.
В этом случае используется так называемая технология Virtual RAID, когда все диски объединяются в единый пул, общее дисковое пространство дробится на небольшие фрагменты chunks и уже эти мелкие «единицы» объединяются в массивы. При этом на одном и том же общем пуле дисков могут размещаться «виртуальный RAID-5», «виртуальный RAID-10», «RAID-1E» из трех дисков и так далее.

конфигурация HP EVA

конфигурация HP EVA

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

Что делать, если все возможности исчерпаны?

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

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

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

Объединение нескольких массивов в один пул

Ну вот, хорошо, приобрели дисковую полку (Disk Enclosure), дополнительные контроллеры, кабели для подключения. Подсоединили к основному хранилищу, которое теперь будет играть роль контроллера (Controller Enclosure). Что теперь делать дальше? Как уже было сказано выше, нельзя кардинально взять и увеличить количество дисков в RAID, даже если аппаратный RAID-контроллер позволяет это сделать.

Карман с жестким диском для Disk Enclosure

Карман с жестким диском для Disk Enclosure

На смену приходят программные RAID нового поколения, позволяющие объединять несколько RAID в один пул. Ниже приводится пример использования. При создании был построен один массив RAID-5 – Volume 0, одновременно автоматически создается пул Pool 0. Далее данный массив был отдан для доступа в сеть под именем Share 0.

Построение Disk Enclosure

Построение Disk Enclosure

Но со временем оказалось, что места на Share 0 не хватает и нужно принимать меры по его расширению, переносу и так далее. Вначале просто заменили жесткие диски на большие (предельной емкости), но и этого оказалось не достаточно. Через некоторое время снова образовался дефицит дискового пространства. Тогда приобрели комплект расширения: Disk Enclosure, контроллер для внешнего подключения и набор кабелей, а также необходимое количество жестких дисков. На базе нового оборудования был создан новый RAID 5 – Volume 1, но при этом не создавался новый пул, а вновь созданный массив был вручную добавлен в уже существующий пул Pool 0, который в сети представлен как Share 0. Таким образом, размер Share 0 был увеличен на нужное количество терабайт.

IBM Storwize

IBM Storwize

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

Применение распределенных систем хранения данных

До сих пор мы говорили от расширении локальной системы. Да, к подобным системам может осуществляться множественный доступ по нескольким интерфейсам, иногда весьма различным, например с использованием организацией блочного доступа посредством Fibre Channel и обычной общей папки CIFS/SMB по сети IP/Ethernet. Но не все это может быть осуществлено в рамках одной локальной системы хранения, пусть даже и очень большой.
В данном случае мы не можем сохранить одну часть данных на одной системе хранения под управлением одного модуля Controller Enclosure, а другую часть данных – на другой системе под управлением другого модуля Controller Enclosure.

Картинки по запросу Software-defined storage, SDS.

Другое дело, когда используется несколько систем хранения, работающих в одном информационном пространстве. Данный вариант называют распределенной системой хранения или программно-определяемой системой хранения – Software-defined storage, SDS. Иногда данные системы называют не совсем корректным термином «облачные».

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

Данные системы чаще всего строятся на базе соответствующих распределенных файловых систем. Среди коммерческих систем можно назвать GPFS от IBM. Среди открытых некоммерческих систем хорошим примером может послужить GlusterFS.

Картинки по запросу GlusterFS

В данной статье вы познакомились с различными методами увеличения дискового пространства. Современная жизнь порой требует от ИТ-специалистов решения достаточно сложных задач, особенно если это касается постоянно растущих объемов информации. Но научно-технический прогресс не стоит на месте, и на каждый новый вопрос со временем появляется соответствующее решение. А наша команда с радостью реализует для вас любые High Load решения с защитой от любых сетевых угроз.

Рейтинг материала
[Голосов: 1 Рейтинг: 5]
01 марта 2017, 10:17

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *