Что такое создание пула носителей. Функция Windows “Дисковое пространство”. Как восстановить данные из диска дискового пространства или зеркального тома

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

Storage Spaces

В русскоязычной версии Windows 8 функция, с которой я хочу познакомить читателей, называется «Дисковые пространства».

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

Если не вдаваться в глубокую теорию, то «Дисковые пространства» представляют собой программный RAID в составе всех редакций Windows 8. Вообще говоря, для Windows это не новость - похожую функциональность предоставляют динамические диски, а Drive Extender из Windows Home Server можно считать прямым прообразом нынешнего решения. Тем не менее «Дисковые пространства» имеют свою специфику, и можно предположить, что они умышленно вынесены на пользовательский уровень, чтобы привлечь к ним дополнительное внимание. Но прежде чем приступить к их изучению, напомним вкратце о самом

RAID

Эта аббревиатура расшифровывается как Redundant Array of Independent Disks, т. е. избыточный массив независимых дисков. Причем первоначально I означало Inexpensive, поскольку речь шла о применении недорогих дисков из мира ПК. По мере развития технологии, в частности с применением SCSI-дисков, это качество перестало ощущаться, что и привело к соответствующей замене в названии. Сейчас такая же участь, по-видимому, ожидает последнюю букву D, которую, ввиду все более широкого распространения SSD, следовало бы трактовать как Drives, накопители.

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

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

А RAID 1 представляет собой простейшее «зеркало», когда все операции на двух накопителях дублируются, т. е. они всегда представляют копии друг друга. Таким образом при отказе одного, вся информация остается доступной на другом. Это главное, но не единственное преимущество. RAID 1 также ускоряет чтение данных, распараллеливая операции, тогда как скорость записи остается примерно такой же, как и у одиночного накопителя. Здесь как раз хорошо видна та самая избыточность: ведь мы используем два накопителя, хотя с точки зрения объема данных хватило бы и одного.

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

Как это работает

Microsoft постаралась сделать «Дисковые пространства» максимально прозрачными для пользователя и гибкими в применении. Для этого будущее хранилище формируется на двух уровнях.

Прежде всего, необходимо создать так называемый пул хранения, т. е. логическое объединение нескольких накопителей. Примечательно, что при этом можно комбинировать устройства с разными объемами и интерфейсами - USB, SATA, SAS, SCSI и даже iSCSI. Количество накопителей, вообще говоря, также может быть совершенно произвольным, не считая минимальных ограничений для каждого типа пространств (см. ниже).

Если вы еще не экспериментировали с данной функцией, то, запустив аплет «Дисковые пространства», увидите приглашение выполнить первичную настройку:

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

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

На протяжении всего процесса настройки Windows не выдает никаких рекомендации или предупреждений о возможных нюансах - скажем, с производительностью. Между тем, чрезмерные вольности, безусловно, могут приводить к негативным эффектам. Именно поэтому перед использованием «Дисковых пространств» следует разобраться с ними.

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

Однако доступны и другие варианты:

Остановимся чуть подробнее на каждом из них.

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

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

Трехстороннее зеркало подразумевает параллельную запись на три накопителя, что, соответственно, защищает от отказа любых двух. Для соответствующего пространства, однако, требуется целых пять дисков, хотя в бета-версии Windows 8 достаточно было именно трех. Вероятно, схема RAID видоизменилась уже в последний момент и в доступной сегодня документации четко не описана. Скорее всего, это нечто вроде RAID 1E, где каждый блок действительно записывается трижды, но каждая следующая операция выполняется со сдвигом на один накопитель, т. е. заведомо равномерно «размазывается» по всему пулу. Обычно это делается для улучшения производительности (за счет большего распараллеливания), но будет ли это справедливо в данном случае - вопрос открытый. Некоторые обозреватели также предположили, что речь может идти о RAID 6, однако это достаточно медленная схема (из-за необходимости расчета двух типов контрольных сумм), чего по тестам не видно. В любом случае, для «Дисковых пространств» трехсторонне зеркало - единственный способ добиться максимально надежного хранения критичных данных.

Наконец, пространство с контролем четности (видимо, для краткости оно называется просто четность ) в точности соответствует RAID 5. В нем одновременно может задействоваться от 3 до 8 накопителей (хотя пул, как обычно, может содержать и больше). Схема работает следующим образом: на все накопители кроме одного записываются блоки с полезными данными, а на последний - блок контрольных сумм, представляющих собой результат операции XOR. Соответственно, при отказе одного из накопителей, недостающие данные могут быть буквально вычислены. C точки зрения надежности пространство с контролем четности аналогично двухстороннему зеркалу, однако в остальном они отличаются заметно. Так, избыточные данные в первом случае составляют 1/N от общего объема, где N - от 3 до 8 (т. е. равно количеству накопителей, на которые одновременно ведется запись), а во втором - всегда 1/2. Однако из-за необходимости расчета контрольных сумм, пространства с контролем четности ощутимо медленнее на запись, вследствие чего их рекомендуют для хранения больших объемов редко изменяемых данных, к примеру, видео.

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

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

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

Специфика функционирования

Надеюсь, предыдущий раздел дал общее представление о гибкости «Дисковых пространств», однако, как и всегда, это качество достигается за счет ряда компромиссов. Часть из них, как то: блочная запись и объединение накопителей различных типов - уже затрагивались. Но есть и другие, которые также необходимо иметь в виду.

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

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

А вот реакция Windows на заполнение пространства достаточно своеобразна. Начиная с 70% пользователю будут выдаваться соответствующие оповещения, а при полном исчерпании места пространство автоматически демонтируется - подключить его обратно можно вручную через аплет «Дисковые пространства». Хотя кажется более логичным, чтобы пространство просто переводилось в режим только для чтения.

Производительность

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

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

А вот, для сравнения, производительность использованных физических накопителей.

Внутренний SATA-диск:

Внешний USB-диск:

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

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

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

Выводы

Благодаря различным компромиссам и ухищрениям «Дисковые пространства» реализованы таким образом, чтобы среднестатистическому пользователю не пришлось даже задумываться о подробностях конфигурирования и обслуживания RAID. C помощью этой возможности, к примеру, можно совершенно просто задействовать старые, разрозненные накопители, которые уже рискованно использовать поодиночке. Да, это приведет к каким-то негативным эффектам, но работать все будет исправно и совершенно автоматически. Для более опытных пользователей и администраторов небольших серверов имеется возможность и тонкой настройки посредством PowerShell. Конечно, сегодня появляется все больше бюджетных NAS, однако они все-таки служат несколько иным целям, требуют дополнительных затрат и не обладают гибкостью «Дисковых пространств». В любом случае, хорошо иметь выбор. Наконец, само появление «Дисковых пространств» в Windows 8 говорит о том, что Microsoft пока не собирается сбрасывать со счетов рынок традиционных ПК.

Функция «Дисковые пространства» в системе Windows 10 помогает защитить данные в случае сбоя жесткого диска и позволяют увеличить объем дискового пространства по мере добавления дисков для компьютера.

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

Что нужно для создания дискового пространства

Нужны, по крайней мере, два дополнительных диска (кроме диска, на котором установлена система Windows). Это могут быть внутренние или внешние жесткие диски или твердотельные накопители (SSD). С функцией «Дисковое пространство» можно использовать диски разных типов, включая диски USB, SATA и SAS.

Как создать дисковое пространство

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

Какой диск создать: простой, зеркальный или четный

  • Простое пространство предназначено для повышения производительности , но они не обеспечивают защиты файлов на случай сбоя жесткого диска. Лучше всего подходят для хранения временных данных (таких как файлы рендеринга видео), резервное копирование файлов в редакторе изображений и файлы промежуточных объектов компилятора. Чтобы создать простое дисковое пространство требуется, по крайней мере, два диска.
  • Зеркальное пространство предназначено для повышения производительности и обеспечивает хранение нескольких копий для защиты файлов на случай сбоя жесткого диска. Зеркальные пространства в два этапа образуют две копии файлов и устойчивы к поломке одного диска, в свою очередь, трехсторонние зеркальные пространства устойчивы к отказу двух дисков. Идеально подходят для хранения различных данных, от файловых ресурсов общего назначения до библиотеки виртуальных жестких дисков. В случае форматирования пространство будет отформатировано в формат файловой системе ReFS. Зеркальные пространства требуют, по крайней мере, двух дисков, а трехсторонние – не менее пяти.
  • Пространства с контролем четности предназначены для обеспечения производительности и обеспечивают хранение нескольких копий для защиты файлов на случай сбоя жесткого диска. Пространства с контролем четности лучше всего подходят для хранения данных архива и потокового мультимедиа, такие как музыка и видео. Такое дисковое пространство требует не менее трёх дисков, в целях обеспечения защиты на случай сбоя одного диска – и не менее семи дисков, чтобы обеспечить защиту на случай выхода из строя двух дисков.

Следует ли обновлять пул дисков

После обновления до Windows 10 мы рекомендуем обновить существующие пулы. Обновленный пул позволяет оптимизировать использование жесткого диска.

Примечание: обновленные пулы не совместимы с предыдущими версиями Windows.

Почему стоит оптимизировать использование диска

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

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

Чтобы это сделать, введите на панели задач в поле поиска строку дисковое пространство и выберите Дисковое пространство в списке результатов поиска, а затем выберите пункт Оптимизировать использование диска .

Как удалить диск из пула

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

  1. Перейдите к панели задач, введите в поле поиска строку дисковое пространство и выберите Дисковое пространство в списке результатов поиска.
  2. Выберите пункт Изменить настройки Физические диски , чтобы просмотреть все диски в пуле.
  3. Найдите диск, который вы хотите удалить, а затем выберите команду Подготовить для удаления . Оставьте компьютер включенным на время подготовки диска к удалению. Это может занять несколько часов, в зависимости от объема данных, хранящихся на диске.
  4. Чтобы ускорить процесс подготовки диска, отключите для диска переход в спящий режим (опция). В поле поиска на панели задач введите строку Питание и спящий режим , а затем выберите Параметры питания и спящего режима . В области При питании от сети компьютер переходит в спящий режим после выберите пункт Никогда .
  5. Если диск отображается как Готов к удалению , выберите Удалить → Удалить диск . Теперь вы можете отсоединить жесткий диск от компьютера.

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

Пул носителей≈ это логический набор однотипных носителей, применительно к которому действуют одинаковые атрибуты и свойства, назначаемые при управлении -носителями. Каждый носитель в системе съемных ЗУ принадлежит к пулу носителей, и каждый пул содержит только однотипные устройства (только ленты или только диски, но не то и другое одновременно). Приложения используют пулы носителей для получения доступа к конкретным носителям в пределах конкретной библиотеки. Использование пулов носителей позволяет определить набор свойств, применимых ко всем носителям в пределах логической группировки. Эта возможность очень полезна, т. к. система съемных ЗУ позволяет множеству приложений совместно использовать одни и те же носители в пределах одной библиотеки. Одна библиотека может содержать носители из различных пулов носителей, каждый из которых имеет свои свойства. Любой пул носителей может охватывать несколько библиотек. Кроме того, система съемных ЗУ позволяет создавать на базе пулов носителей иерархические структуры.

Типы пулов носителей. Существуют следующие стандартные типы пулов носителей:

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

Классы пулов носителей. Система съемных ЗУ поддерживает два класса пулов носителей: системные и прикладные.

  • Системные пулы носителей (system media pools). Система съемных ЗУ создает по одному пулу свободных носителей, нераспознанных носителей и импортному пулу для каждого типа носителей.
  • Прикладные пулы носителей создаются для конкретных приложений по управлению данными (или самими этими приложениями). Таких пулов в системе съемных ЗУ может быть произвольное количество. Выделенный носитель (allocated media, т. е. носитель, зарезервированный за конкретным приложением) не может быть перемещен из пула в пул.

DPandMe 26 мая 2015 в 17:16

Суп из SAN. Строим виртуальный SAN на платформе Windows Server 2012 R2

  • Виртуализация

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



Дисклеймер: заранее прощу прощения у специалистов по SAN и благородного хабрасообщества за некоторые вольности и упрощения, допущенные мной при подготовке материала. Он рассчитан на тех, кто пока еще не знаком с технологиями хранения данных, заложенными в Windows Server 2012 R2, а также тех, кто не имеет возможности развернуть у себя полноценную сеть хранения данных на базе FC или iSCSI.

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

  1. Хороший план.
  2. Деньги (смета).
Строго говоря, есть еще и третий пункт – «прямые руки», но его обсуждение выходит за рамки данной статьи.

С деньгами все понятно. Что касается плана, то нам необходимо разработать такую архитектуру, чтобы в следующий раз, когда случится сбой (а он обязательно случится!), система устояла. Тут придется сделать небольшое отступление. Дело в том, что в современной терминологии есть несколько устоявшихся понятий, которые часто путают между собой. Вот они:

Высокая доступность (High Availability, HA) - способность минимизировать как запланированные, так и незапланированные простои. То есть, мы (читай - заказчик) заранее соглашаемся с тем, что в случае сбоя, понадобится некоторое разумное время для переключения на резервное оборудование и запуск на нем «упавших» сервисов. Разрыв соединения при этом неизбежен. Типичный пример: кластер Hyper-V.

Отказоустойчивовсть (Fault Tolerance, FT) - способность сохранять работоспособность в случае отказа одного или нескольких компонентов. Это когда сбой произошел, но никто, кроме админа, его не заметил. Или, когда мы отключаем один из узлов, чтобы провести на нем плановое обслуживание (например, установку обновлений), а второй узел в это время берет на себя всю нагрузку. Соединение не рвется, приложения доступны, только немного увеличивается время отклика. Типичный пример: RAID 1-го уровня.

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

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

В контексте данной статьи будем обсуждать только один из трех пунктов, а именно, отказоустойчивость. Справедливости ради, надо отметить, что реальная необходимость в ней возникает не часто. В самом деле, большинство заказчиков вполне готовы мириться с небольшими, прописанными в SLA, простоями в обмен на существенную экономию денежных средств за счет отказа от непомерно дорогих «сверхнадежных» решений. К примеру, если у пользователей на несколько минут подвиснет Excel, это не станет большой проблемой для бизнеса – скорее поводом немного размяться и выпить кофе. Однако, есть и такие сервисы, которые крайне чувствительны даже к небольшому разрыву сетевого соединения. Например, СУБД и гипервизоры. Если Hyper-V потеряет связь со своими виртуальными жесткими дисками, на которых запущены виртуальные машины, это может привести к печальным последствиям. Также и SQL - внезапная потеря сервером своих баз может надолго занять интересным делом DB-админа.

Итак, мы решили, что будем строить отказоустойчивое решение. Другими словами, необходимо убрать возможные точки отказа на всех существующих уровнях: серверном, сетевом и уровне хранения данных. Чем это достигается? Конечно, дублированием всего, чего только можно: серверов, сетевых интерфейсов, каналов передачи данных и, конечно, дисковой подсистемы. Тут перед нашими глазами встает светлый образ SAN. Действительно, что может быть лучше для обеспечения отказоустойчивости, чем старый добрый аппаратный FC SAN? Так-то оно так… Только есть у этого решения один убийственный недостаток. Цена. Стоимость подобной системы начинается с семизначных чисел. А верхний предел практически не ограничен. Поэтому, ее нельзя просто взять и купить – как минимум, придется забюджетировать.

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

Где же выход? Неужели светлым мечтам о SAN-е не суждено сбыться? Подождите… А что вообще такое SAN? По сути, это просто способ разделения ресурсов высокопроизводительных устройств хранения данных между серверами на блочном уровне. Когда-то давно классические файберные сети SAN были практически безальтернативной технологией там, где требовалась исключительная производительность, отказоустойчивость и масштабируемость. Скорость FC на порядок превышала типичный Ethernet с его 100 Mb/s.

Но со временем появились сетевые адаптеры 1 и 10 Gbit Ethernet, возникли программные и аппаратные технологии увеличения пропускной способности сети (NIC teaming, сжатие данных и т.д.), что несколько снизило преимущества FC и привело к взрывному росту популярности интерфейса iSCSI. Что касается отказоустойчивости и масштабируемости, то и тут случился прогресс. К примеру, появились варианты реализации SAN на базе хранилищ с интерфейсом SAS, который, вообще говоря, изначально предназначался для прямого подключения хранилища к серверу – DAS. Дело в том, что интерфейс SAS, помимо высоких скоростей (6-12 Gbit/s), обладает еще одним существенным преимуществом – очень малыми задержками (latency). Это весьма важно для высоконагруженных хостов, вроде Hyper-V.

А что у нас есть, кроме SAN? А кроме SAN есть только NAS. Если сравнивать SAN и NAS, то главным отличием первого от второго является работа на блочном уровне. Хост-система может создавать на SAN логические разделы, форматировать их и использовать как обычные локальные жесткие диски. NAS же работает на уровне файловой системы и использует протоколы передачи файлов, такие как SMB или CIFS. Поэтому NAS, конечно, дешево и просто, но о-о-очень медленно. А потому, для высоконагруженных продакшн-систем бесперспективно.

А нельзя ли как-то совместить высокую скорость и надежность SAN с простотой реализации и доступностью NAS? Что, если часть функционала SAN попробовать реализовать программно? Видимо как-то-так рассуждали инженеры одной скромной компании из Рэдмонда, когда готовили к выходу на рынок свою новую технологию. В итоге, у них действительно получилось нечто, по формальным признакам напоминающее SAN. Но при этом в несколько раз дешевле. Нам предлагают использовать весьма недорогие и доступные комплектующие для приготовления изысканного блюда под названием «Scale-Out File Server», т.е. масштабируемый файловый сервер. Слово «масштабируемый», на мой взгляд, не совсем точно отражает суть, поскольку, в первую очередь, сервер получился отказоустойчивым.

Итак, сегодня будем готовить «Суп из SAN» на основе технологий Microsoft Windows Server 2012 R2.
В качестве ингредиентов, нам понадобятся:

  • серверы без дисков (только небольшие «зеркала» под систему) - 2 шт.;
  • недорогая дисковая полка JBOD с двумя SAS интерфейсами – 1 шт.;
  • HDD SAS – не менее 10 шт. (лучше – больше);
  • SSD SAS – хотя бы 2 шт.;
  • сетевые адаптеры 1-10 GBit (лучше – с поддержкой RDMA) – 2-4 шт.;
В качестве приправы, будем использовать рекомендованный набор специй: Storage Spaces, Tiering, SMB Direct, SMB Multichannel, CSV. Время приготовления: 1-1,5 часа при наличии опыта или 1-2 дня без такового.

Немного теории

В Windows Server 2012 и Windows 8 появилась интересная технология под названием «Дисковые пространства» (Storage Spaces). Предназначена она для абстрагирования от физического уровня дисковой подсистемы. По сути - это драйвер операционной системы, расположенный после менеджера разделов и перед менеджером томов, который позволяет виртуализировать блочное хранилище, скрывая его от операционной системы. Достигается это группировкой физических дисков в пулы и созданием на основе пулов виртуальных дисков (LUN-ов в терминологии SAN). Таким образом, все приложения будут иметь дело именно с виртуальными дисками, даже не подозревая, из чего они состоят. Но постойте… Опять виртуальные диски? Ведь эта технология под именем «динамических дисков» была реализована Microsoft (точнее, лицензирована у Veritas) аж в 2000 г. - в составе Windows 2000! Опять нам пытаются всучить залежалый товар?

Все не так просто… В отличие от динамических дисков, дисковые пространства - технология гораздо более умная, в чем мы убедимся позже. А пока уточним термины:

Пулы носителей (Storage Pools) - коллекция физических дисков, которая позволяет объединять диски, гибко увеличивать емкость и делегировать администрирование.

Дисковые пространства (Storage Spaces) - виртуальные диски, созданные из свободного пространства в пуле носителей. К атрибутам дисковых пространств относятся уровень устойчивости, уровни хранилища, фиксированная подготовка и точный административный контроль.

Кластеризованные дисковые пространства (Clustered Storage Spaces) – те же дисковые пространства, размещенные на общем хранилище - то, что нам надо!

Как создать виртуальный диск? В нашем случае, для начала, нужно объединить в пул физические SAS диски - HDD и SSD. Вообще говоря, объединять в пулы можно диски с разными интерфейсами: SATA, SCSI и даже USB. Но для развертывания отказоустойчивого кластера (Scale-Out File Server) подходят только диски с интерфейсом SAS. Объединение дисков в пул не представляет каких-либо сложностей и делается с помощью мастера буквально в два клика. Разумеется, на объединяемых дисках не должно быть никаких разделов, либо их придется удалить. Объединив диски в пулы, мы их сгруппируем. Но еще надо объяснить операционной системе, что с ними делать дальше. Теперь можно создать из дискового пула виртуальный жесткий диск (LUN). Технология Storage Spaces позволяет создавать 3 варианта виртуальных жестких дисков, подобных RAID-уровням:

  • Simple (аналог RAID0) – рекомендуется только для тестов;
  • Mirroring (аналог RAID1) – рекомендуется для рабочих нагрузок;
  • Parity (аналог RAID5) – рекомендуется для формирования разделов с архивами данных.
Как и в аппаратных RAID, можно оставить один или два диска в горячем резерве (Hot Spare). Перечисленные возможности представлены в графическом интерфейсе по умолчанию. Однако, если этого мало, с помощью командлетов PowerShell можно получить и более хитрые комбинации, соответствующие, к примеру, RAID уровня 10.

Позвольте, скажет читатель, если это программный RAID, он ведь должен работать медленнее аппаратного! И будет совершенно прав. Да, медленнее. Но насколько? Тут все не так однозначно. Во-первых, как показывает практика, скорость дисков легко компенсируется их количеством. Поэтому, разница в производительности будет тем менее заметна, чем больше дисков мы объединим в пул. Для промышленного применения рекомендуется использовать от 12 дисков. Во-вторых, в Windows Server 2012 R2 появилась одна замечательная фича: объединение в один пул дисков SSD и HDD с формированием т.н. «гибридного пула» (Tiered Storage). В этом случае система сама будет отслеживать и перемещать на быстрые SSD диски наиболее часто используемые данные (помните я говорил, что система умная!). Причем, перемещение «горячих» данных на SSD происходит поблочно, а не на уровне файлов. Более того, с помощью командлетов PowerShell можно явно указать, какие файлы необходимо разместить на SSD, а какие - на HDD. И в-третьих, Storage Spaces поддерживают т.н. «кэш обратной записи» (WriteBack Cache). При кратковременных всплесках операций записи система перехватывает данные и размещает их в специальной области на SSD. Таким образом сглаживается падение производительности при внезапных пиковых нагрузках. Все вместе - большое кол-во дисков, гибридный пул и кэш обратной записи – способно существенно поднять быстродействие системы, сведя к минимуму негативный эффект от программного RAID. Что касается экономии свободного места на дисках, то в Storage Spaces поддерживается такая привычная для SAN технология, как Thin Provisioning – для более экономного распределения дисковых ресурсов. Справедливости ради, заметим, что пока она несовместима с гибридным пулом – придется выбрать что-нибудь одно.

Итак, средствами Storage Spaces мы можем обеспечить отказоустойчивость на уровне СХД. Теперь поднимемся на уровень выше. Серверы необходимо объединить в кластер. Эта возможность появилась у Microsoft уже достаточно давно. Однако, ранее такой кластер можно было назвать лишь высокодоступным (вспоминаем терминологию). И только с выходом Windows Server 2012 появилась возможность сделать его по-настоящему отказоустойчивым. Называется эта фича «Scale-Out File Server». Тут будет уместно напомнить, что файловые кластеры могут работать в одном из двух режимов:

  • «Active - Passive»; отработка отказа с прерыванием сервиса – failover.
  • «Active - Active»; прозрачная отработка отказа – transparent failover.
В первом случае только один из узлов активный – именно с ним происходит обмен данными, а второй находится в ожидании. В случае отказа первого узла, второй принимает на себя всю нагрузку. Однако, при этом происходит неизбежный разрыв соединения и прерывание в работе сервиса. Именно по такому принципу работает файловый кластер в Windows Server 2008 R2. Во втором случае оба узла активны и способны одновременно принимать данные от клиентов. В случае отказа одного из узлов, потери SMB-сессии не происходит, соответственно, работа приложений не прерывается. Эта технология появилась только в версии Windows Server 2012.

Но чтобы такая одновременная работа с хранилищем стала возможной, потребовалась очередная технология под названием Cluster Shared Volume (CSV). Если не вдаваться в подробности, это логический том, специальным образом подготовленный для одновременной работы с несколькими узлами в составе кластера.

А что на сетевом уровне? Здесь у Microsoft припасено сразу несколько приятных сюрпризов. Первый – это SMB Direct поверх технологии RDMA. Если говорить упрощенно, это технология прямого доступа к памяти через сетевой интерфейс, без накладных расходов на использование центрального процессора. При включении данной фичи сетевые адаптеры фактически начинают работать на скорости интерфейса, обеспечивая высокую пропускную способность и чрезвычайно быстрый отклик на сетевые запросы, что дает огромный выигрыш в производительности для таких рабочих нагрузок, как Hyper-V и SQL Server. Скажем так, работа с удаленным файловым сервером становится похожа на работу с локальным хранилищем. И хотя сетевые адаптеры с поддержкой RDMA пока еще достаточно дороги, их стоимость непрерывно снижается (на момент написания данной статьи составляет около 20 т.р.).

Второй сюрприз называется SMB Multichannel. Если на потребителе нагрузки (например, SQL Server) и на принимающей стороне (файловый кластер) установлено по два сетевых адаптера, то между клиентом и сервером создается многоканальное SMB-подключение. Это означает, что если, к примеру, по сети копируется файл и в процессе копирования что-то происходит с одним из сетевых адаптеров, это не приводит к прерыванию процесса – файл продолжает копироваться, как ни в чем не бывало. Чтобы убедиться в наличии SMB Multichannel, запустите командлет PowerShell: Get-SmbMultichannelConnection. Вы увидите, что-то вроде этого:


Как видно, соединение установлено при помощи сразу двух сетевых интерфейсов.

Наконец, в протоколе SMB 3.0 проведена оптимизация работы балансировки нагрузки между узлами. Как раз для конфигурации Scale-Out File Server.

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

Подготовительные работы

Итак, берем дисковую полку в режиме JBOD. Набиваем ее дисками, хотя бы два из которых должны быть SSD. У корзины должно быть два SAS-экспандера, по два разъема на каждом. Через них подключаем корзину к двум серверам, желательно одинаковым. Для этой цели вполне подойдут простые одноюнитовые серверы. На серверах в качестве контроллеров устанавливаем обычные SAS HBA.

Далее по пунктам:

  1. Устанавливаем на каждый сервер ОС Windows Server 2012 R2.
  2. Настраиваем сетевые подключения, устанавливаем обновления, вводим серверы в домен.
  3. Добавляем роль Файловый сервер на каждом сервере.
  4. На одном из серверов открываем консоль Диспетчер отказоустойчивости кластеров.
  5. С помощью мастера создаем стандартный кластер с отработкой отказа (Failover Cluster).
  6. Создаем новый пул: Хранилище -> Пулы -> Создать новый пул.
  7. Добавляем в пул SSD и HDD диски, при необходимости указываем параметры доступа.
  8. Создаем виртуальный диск: Пул –> правый клик –> Новый виртуальный диск.
  9. С помощью мастера задаем тип дисковой подсистемы (Mirror).
  10. C помощью мастера создаем том на диске, присваиваем букву, форматируем в NTFS.
  11. Создаем общий кластерный том (CSV): Выбираем нужный диск -> Добавить в общие тома кластера.
  12. Задаем роль: Роли -> Настроить роль -> Файловый сервер -> Масштабируемый файловый сервер.
  13. Чтобы не ждать, сбрасываем кэш распознавателя DNS (ipconfig /flushdns).
  14. Выбираем роль -> Добавить общий файловый ресурс -> Общий ресурс SMB –> Профиль приложений.
  15. Указываем расположение общего ресурса, даем ему название.

Все. Конечным итогом наших усилий стало создание файловой шары, расположенной по стандартному UNC-пути, типа: \\ScaleOutFS\Share. Теперь можем размещать на ней критические файловые ресурсы, такие как виртуальные жесткие диски Hyper-V или базы данных SQL сервера. Таким образом, мы получили готовую сеть хранения данных. Принципиальное отличие ее от традиционных SAN состоит в том, что для подключения используется протокол SMB 3.0, а не какой-то из блочных протоколов (iSCSI/FC), что в определенном смысле является даже преимуществом. У кого-то может возникнуть желание развернуть роль Hyper-V прямо на кластерном сервере, разместив виртуальные диски на общем хранилище. Придется огорчить. К сожалению, такая конфигурация пока не поддерживается. Для ролей Hyper-V и SQL Server необходимо поднимать отдельные серверы, которые будут работать с нашей СХД по SMB-протоколу.

Осталось подвести итоги…

Отказоустойчивость
Обеспечивается на всех уровнях: хранения данных, серверов, сетевого взаимодействия.
Производительность
Будет зависеть от нескольких факторов. В типичном случае сопоставима с производительностью решений на базе iSCSI. А в случае задействования всех имеющихся возможностей, включая технологию RDMA, пропускная способность СХД окажется даже выше, чем при FC-подключении (до 56 GBit/s).
Масштабируемость
На уровне дисковой подсистемы обеспечивается простым добавлением дисков или каскадированием хранилищ JBOD. На уровне серверов – добавлением узлов в кластер. На сетевом уровне – добавлением сетевых адаптеров, объединением их в группы (NIC teaming) или заменой их на другие, с большей пропускной способностью.
Безопасность
Дисковые пулы можно контролировать с помощью списков контроля доступа (ACL), а также делегировать полномочия администраторам. Управление хранилищами может быть полностью интегрировано с ADDS.
Стоимость
Очевидно, что даже при использовании всех возможностей, заложенных в данную технологию, стоимость готового решения будет в несколько раз ниже традиционного SAN.

А как же недостатки? Разумеется, они тоже имеются. К примеру, СХД и серверы нельзя разнести на значительное расстояние, как в случае FC или iSCSI. Нельзя выстроить сложную топологию. Коммутаторы SAS – пока еще редкость. Кроме того, SAS не поддерживает аппаратную репликацию – ее придется реализовывать программными средствами. Поэтому, описанная выше концепция – не панацея, а всего лишь альтернатива традиционным СХД. Если у вас уже есть развернутый аппаратный SAN, это ни коим образом не повод от него отказываться. Железо должно отрабатывать вложенные в него деньги. Но если вы пока еще только задумываетесь об архитектуре будущей системы хранения данных, имеет смысл рассмотреть и данный вариант, как вполне обоснованный с инженерной и экономической точек зрения. Ну и напоследок хотелось бы отметить, что «суп из SAN» можно сварить не только на технологиях Microsoft. Если у вас имеется хранилище с интерфейсом iSCSI, можете воспользоваться такими продуктами, как StarWind iSCSI SAN, VMware Virtual SAN, Openfiler, FreeNAS, Open-E DSS V6 и т.п.

Приятного аппетита!
При подготовке статьи были использованы материалы портала

18.01.2013 Роберт Митчелл

Пользовательский интерфейс Storage Spaces and Pools реализован в программе Storage Spaces панели управления (в Windows 8) и в Server Manager (в Server 2012); также можно использовать команды PowerShell (в обеих операционных системах). По большей части эта статья относится к интерфейсу Server Manager. Версия клиента Windows 8 упрощена и заметно отличается по внешнему виду. Однако базовая технология везде одинаковая.

Новые версии Windows располагают расширенными возможностями хранения данных. В Windows Server 2012 и Windows 8 появилась функция под названием Storage Spaces and Pools, обеспечивающая пользователям ряд новых возможностей, в том числе:

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

Поддерживаемые хранилища данных

Storage Spaces and Pools можно разместить на разнообразных аппаратных средствах. Поддерживаемые типы шин: Universal Serial Bus (USB), Serial ATA (SATA) и Serial Attached SCSI (SAS).

Storage Spaces and Pools можно использовать в сочетании с логическими устройствами (LUN) через канал Fibre Channel или iSCSI, однако такая конфигурация не поддерживается. Пользователям высокоуровневых решений хранения данных следует обратиться к соответствующим поставщикам, чтобы в полном объеме задействовать имеющуюся функциональность. Компонент Storage Spaces and Pools ориентирован на менее дорогостоящие решения, чтобы предоставить функциональность, недоступную иными способами.

Создание пула и дискового пространства

Пул - просто логическая группа физических дисков, а дисковое пространство (storage space) - виртуальный диск, который можно использовать как физический. Поэтому создание дискового пространства с помощью Storage Spaces and Pools - двухэтапный процесс. Сначала создается пул; затем выделяется дисковое пространство, именуемое виртуальным диском в Windows Server. Не путайте виртуальные диски Storage Spaces and Pools с файлами Virtual Hard Disk (VHD) или VHDX. Термины похожи, но сами компоненты не имеют между собой ничего общего.

С помощью интерфейса Server Manager можно создать работоспособный пул. Отправной точкой становится пул по умолчанию, называемый исходным пулом, представляющий собой просто список физических дисков, присоединенных к компьютеру, которые могут быть объединены в пул. Исходный пул не считается работоспособным. Мастер запрашивает имя пула и добавляемые физические диски. Созданный пул отображается в интерфейсе Server Manager. Обратите внимание, что хотя в Windows можно сформировать множество пулов, не рекомендуется создавать больше четырех. Для выполнения этой же операции предназначен сценарий PowerShell из трех строк:

$stsubsys = (Get-StorageSubsystem) $physd = (Get-PhysicalDisk PhysicalDisk1, PhysicalDisk2, PhysicalDisk3, PhysicalDisk4) New-StoragePool -FriendlyName MyPool1 -StorageSubsystemFriendlyName $stsubs.FriendlyName -PhysicalDisks $physd

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

New-VirtualDisk -StoragePoolFriendlyName MyPool1 -FriendlyName MyVirtualDisk -ResiliencySettingName Mirror -UseMaximumSize

Данный виртуальный диск можно использовать точно так же, как физический. Его можно настроить как раздел Master Boot Record (MBR) или GUID Partition Table (GPT).

Правила выбора

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

Структура. Структура хранилища - это всего лишь тип RAID, который предстоит использовать. Можно выбрать Simple (RAID 0 или чередующийся набор без контроля четности), Mirror (RAID 1) или Parity (RAID 5 или чередующийся набор с контролем четности). Можно создать простой набор из одного или нескольких физических дисков пула. Для наборов с контролем четности требуется не менее трех дисков в пуле. Наконец, зеркальные наборы можно создать с использованием не менее двух физических дисков для двустороннего зеркалирования и не менее пяти физических дисков для трехстороннего зеркалирования.

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

Размер виртуального диска. Размер виртуального диска зависит от выбранного типа подготовки, структуры хранилища и размера используемых физических дисков. Если планируется создать всего один виртуальный диск в пуле, можно просто выбрать параметр Maximum size (максимальный размер). Обратите внимание, что параметр Maximum size затенен, если выбрана тонкая подготовка.

Дополнительные сведения о тонкой подготовке

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

Преимущество тонкой подготовки - гибкость дискового пространства. Если вам нужен виртуальный диск на 10 Тбайт, не обязательно заранее обеспечивать для него физическое пространство. Можно подготовить тонкий виртуальный диск размером 10 Тбайт и добавлять физические диски по мере надобности. Эффективность этого подхода еще более повышается благодаря усовершенствованиям NTFS, обеспечивающим восстановление пространства после удаления или оптимизации файлов. Windows также оптимизирована для более эффективной работы с решениями хранения данных высокого уровня, располагающих функциями тонкой подготовки. В частности, это возможность задействовать неиспользуемые сектора, как это делает Storage Spaces and Pools.

Принципы архитектуры

Рассмотрим, что происходит во внутренних механизмах, чтобы получить описанные результаты. На рисунке 1 показан стек хранилища Windows. Драйвер SSP (SpacePort.sys) подключается непосредственно выше Partition Manager (Partmgr.sys). Когда в пул вводится физический диск, на нем создается раздел и физический диск скрывается из интерфейса пользователя. На следующем шаге из пула вырезается виртуальный диск, затем этот виртуальный диск вновь представляется в интерфейсе пользователя как логический диск. Физические диски по-прежнему видны в диспетчере устройств, но новое устройство Microsoft Storage Space Device также указано для каждого созданного виртуального диска.

На рисунке 2 показано, как будут выглядеть разделы на физических дисках (как унаследованные MBR-диски, так и диски с использованием схемы GPT.) Небольшая область раздела будет выделена для хранения метаданных для Storage Spaces and Pools. Основная часть раздела будет использоваться для хранения данных файлов. После того, как создан виртуальный диск, его можно настроить как MBR или GPT, а затем использовать как обычный физический диск. Его можно представить в формате NTFS или новой системы Resilient File System (ReFS) компании Microsoft.

Дополнительные параметры

В целях повышения производительности можно выполнить более глубокую настройку Storage Spaces and Pools. Полезно изучать эти настройки, добавляя физические диски к существующему виртуальному диску. В частности, функция Storage Spaces and Pools в Windows 8 отличается простотой использования, но если вы хотите расширить возможности управления хранением данных, то в Storage Spaces and Pools для этого есть все необходимое.

Доступ к большинству углубленных настроек можно получить через команду PowerShell под названием New-VirtualDisk. Интерес представляют элементы NumberOfColumns (указывает число создаваемых столбцов), NumberOfDataCopies (указывает число создаваемых копий данных) и ResiliencySettingName (указывает имя требуемого параметра устойчивости - например, Simple, Mirror или Parity).

Число столбцов. На рисунке 3 показана диаграмма, состоящая из трех дисков. Диски делятся на блоки. При чередовании между дисками можно выполнять запись на каждый диск одновременно. В технологии RAID этот метод известен как чередующийся набор без контроля четности. Приблизительно это и происходит на виртуальном диске с «простой» структурой.

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

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

New-VirtualDisk -FriendlyName NewVDisk -StoragePoolFriendlyName MyPool -NumberOfColumns 3 -ResiliencySettingName simple -UseMaximumSize

Рисунок 3. Простая структура

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

* Простое пространство с единственной копией.

* Зеркальные пространства с двумя или тремя копиями.

* Пространства с контролем четности имеют всего одну копию.

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

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

Можно использовать элемент New-VirtualDisk (NumberOfDataCopies), чтобы задать число копий данных. В качестве примера взгляните на следующую команду PowerShell, которая создает двухстороннее зеркальное пространство с шестью столбцами, как на рисунке 6.

New-VirtualDisk -FriendlyName NewVDisk -StoragePoolFriendlyName MyPool -NumberOfColumns 6 -NumberOfDataCopies 2 -ResiliencySettingName mirror -UseMaximumSize

Дополнительные сведения о столбцах

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

Рисунок 7. Два простых пространства

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

* если пространство создано с помощью интерфейса пользователя, максимальное число столбцов - восемь;

* при использовании команды New-VirtualDisk можно установить значение NumberOfColumns больше восьми;

* в пространствах с контролем четности больше восьми столбцов (даже при использовании PowerShell).

Добавление пространства

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

Рисунок 8. Одно простое пространство, созданное с двумя физическими дисками

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

Работая с зеркальными пространствами, необходимо принимать во внимание как число столбцов, так и число копий данных. Например, двухстороннее зеркало, созданное с использованием четырех физических дисков, будет выглядеть так, как показано на рисунке 9. NumberOfDataCopies равен 2, и NumberOfColumns равен 2. Число дисков, необходимое для расширения этого виртуального диска вычисляется по следующей формуле:

NumberOfDataCopies * NumberOfColumns 2 * 2 = 4

Четыре физических диска необходимо для расширения тестового пространства, см. рисунок 10. Ту же формулу можно использовать для простых пространств и пространств с контролем четности. Однако значение NumberOfDataCopies всегда равно 1 для обеих структур.

Рисунок 10. Четыре физических диска, расширяющих тестовое пространство

Определение числа копий данных и столбцов

Если неизвестно число копий данных и/или столбцов, имеющихся в виртуальном диске, то несложно найти ответ, выяснив значения NumberOfColumns и NumberOfDataCopies с помощью графического интерфейса. Команда PowerShell принесет ту же информацию:

Get-VirtualDisk -FriendlyName MyVirtualDisk | ft FriendlyName, NumberOfColumns, NumberOfDataCopies ReFS на зеркале

· Отметим дополнительное преимущество зеркал Storage Spaces and Pools. В данной статье уже упоминалось о новой файловой системе Microsoft, ReFS. В случае порчи файлов или метаданных в ReFS операционная система может использовать избыточную копию с другой стороны зеркала для устранения ошибок. Это возможно отчасти благодаря контрольным суммам как данных, так и метаданных в ReFS.

Мощная функциональность хранения данных

Благодаря Storage Spaces and Pools в распоряжение обладателей систем хранения данных начального и среднего уровня предоставляется функциональность, которая в противном случае была бы недоступна. Ее легко настроить; возможна углубленная настройка для желающих задействовать дополнительные параметры, а файловая система ReFS приобретает дополнительную устойчивость. Storage Spaces and Pools обеспечивает тонкую подготовку, и как большинство компонентов Server 2012 и Windows 8, может управляться сценариями с использованием PowerShell. Думаю, это будет самое востребованное из всех новшеств Windows, относящихся к хранению данных.