Дисковые пространства: программный RAID в Windows 8


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

Storage Spaces

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

Дисковые пространства: программный RAID в 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 в Windows 8

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

Дисковые пространства: программный RAID в Windows 8

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

Дисковые пространства: программный RAID в Windows 8

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

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

Дисковые пространства: программный RAID в Windows 8

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

Тип пространстваМинимальное число дисков в пулеДопустимое число отказавших дисковАналог RAID
Простое100
Двухсторонее зеркало211
Трехсторонее зеркало521E (?)
Четность315

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

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

Дисковые пространства: программный RAID в Windows 8

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

Дисковые пространства: программный RAID в Windows 8

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

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

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

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

Дисковые пространства: программный RAID в Windows 8

Дисковые пространства: программный RAID в Windows 8

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

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

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

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

Зеркало:

Дисковые пространства: программный RAID в Windows 8

Простое:

Дисковые пространства: программный RAID в Windows 8

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

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

Дисковые пространства: программный RAID в Windows 8

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

Дисковые пространства: программный RAID в Windows 8

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

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

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

Выводы

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

Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.