- Записки IT специалиста
- Настраиваем программный RAID на UEFI-системах в Windows
- Конфигурация разделов Windows-систем с UEFI
- Подготовка к созданию программного RAID
- Создание программного RAID
- Настройка загрузчика EFI и его копирование на второй раздел
- Дисковые пространства: программный RAID в Windows 8
- Storage Spaces
- Как это работает
- Специфика функционирования
- Производительность
- Выводы
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Настраиваем программный RAID на UEFI-системах в Windows
Настраиваем программный RAID на UEFI-системах в Windows
Программный RAID пользуется заслуженной популярностью, позволяя легко создавать отказоустойчивые дисковые конфигурации в недорогих системах, отличаясь простотой создания и управления. Но с переходом современных систем на UEFI появились некоторые особенности, касающиеся процесса загрузки, которые следует понимать и принимать во внимание. В противном случае отказоустойчивость может оказаться мнимой и при отказе одного из дисков вы просто не сможете загрузить систему.
Данная инструкция может кому-то показаться сложной, действительно, для создания программного RAID на UEFI-системах требуется довольно много подготовительных действий. Также определенное количество операций придется выполнить и при замене отказавшего диска, но это тема для отдельной статьи. В связи с этим встает вопрос выбора между программным RAID и встроенным в материнскую плату, т.н. fake-raid.
Если брать вопрос производительности, то сегодня он абсолютно неактуален, тем более что вся обработка данных так или иначе осуществляется силами CPU. Основным аргументов в пользу встроенного RAID служит простота его использования, но за это приходится платить совместимостью. Собранные таким образом массивы будут совместимы только со своим семейством контроллеров. К счастью, сейчас уже нет того зоопарка, который был еще лет 10 назад, но все равно, собранный на базе платформы Intel массив вы не запустите на AMD-системе.
Также вы можете столкнуться с тем, что несмотря на то, что массив собрался, система не может загрузиться, так как не имеет в своем составе драйверов для новой версии контроллера, это может быть актуально для старых ОС на новых аппаратных платформах. Кроме того, все операции по замене дисков, расширению и ресинхронизации массива вам придется делать в оффлайн режиме, загрузить систему с массива в состоянии обслуживания вы не сможете.
Программные массивы лишены этих недостатков, все что им требуется — это поддержка со стороны ОС. Операции обслуживания также можно выполнять без прерывания работы системы, естественно принимая во внимание тот факт, что производительность дисковой системы в это время будет снижена. Но есть и обратная сторона медали, динамические диски Windows имеют ряд неприятных особенностей, например, ограниченные возможности по управлению дисковым пространством и обслуживанию. Штатные инструменты имеют только базовые функции, а из коммерческого софта работу с данным типом дисков обычно поддерживают только дорогие корпоративные версии.
Также есть другая особенность, вытекающая из архитектуры программных RAID массивов, если некритически отказал тот жесткий диск, с которого осуществляется загрузка, то система не будет автоматически загружена со второго, исправного HDD, вы получите ошибку (или BSOD) и вам потребуется вручную изменить порядок загрузки для восстановления работы системы.
Но несмотря на определенные недостатки и ограничения, программный RAID на основе динамических дисков пока остается единственной возможностью обеспечить отказоустойчивость системы, не прибегая к аппаратным средствам.
Конфигурация разделов Windows-систем с UEFI
Прежде всего рассмотрим стандартную конфигурацию разделов, автоматически создаваемую Windows с UEFI, приведенный ниже пример соответствует последним версиям Windows 10 и Windows Server 2016/2019, у более ранних версий Windows разметка может несущественно отличаться.
Windows RE — NTFS раздел со средой восстановления, в последних версиях Windows имеет размер в 500 МБ, при создании ему присваиваются специальные атрибуты, препятствующие назначению буквы диска и удалению раздела через консоль управления дисками. В тоже время данный раздел не является необходимым для работы системы, среда восстановления может находиться на системном диске и даже может отсутствовать. Вынос среды восстановления на отдельный раздел преследует две цели: возможность работы на зашифрованных системах и защита от некорректных действий пользователя.
EFI — раздел специального типа с файловой системой FAT32, который содержит загрузчик, вызываемый микропрограммой UEFI. Данный раздел должен находиться в основной таблице разделов и не может быть расположен на динамическом диске. В Windows он ошибочно называется зашифрованным, имеет критическое значение для нормальной работы системы. В современных Windows-системах имеет размер в 100 МБ.
MSR (Microsoft System Reserved) — служебный раздел с файловой системой NTFS, является обязательным для GPT-разметки, которая не позволяет использовать скрытые сектора диска, используется для служебных операций встроенного и стороннего ПО, например, при преобразовании диска в динамический. Является скрытым и не отображается в оснастке управление дисками. Его размер в современных системах — 16 МБ.
Windows — самый обычный раздел с системой, фактически под ним следует понимать любую пользовательскую разметку. Никаких особенностей он в себе не таит.
Производители ПК могут добавлять дополнительные разделы, например, с резервным образом системы для отката к заводским настройкам или собственными инструментами восстановления, чаще всего они имеют специальные GPT-атрибуты, как и у раздела Windows RE.
Подготовка к созданию программного RAID
Будем считать, что вы уже установили операционную систему на один из дисков, в нашем примере будет использоваться Windows Server 2019 установленный на виртуальной машине. Если мы откроем оснастку Управление дисками, то увидим примерно следующую картину:
Первым идет раздел Windows RE, размером в 499 МБ, а за ним раздел EFI, который ошибочно именуется шифрованным. Но как мы говорили выше, данная оснастка не дает полного представления о структуре разметки, поэтому запустим утилиту командной строки diskpart и получим список разделов:
Первая команда запускает утилиту, вторая выбирает первый диск (диск 0) и третья выводит список разделов.
Здесь присутствуют все существующие на диске разделы, включая MSR, размером в 16 МБ. Теперь нам нужно воспроизвести аналогичную разметку на втором жестком диске. Будем считать, что вы еще не вышли из утилиты diskpart, поэтому выберем второй жесткий диск (диск 1) и очистим его:
Внимание! Данная команда полностью удалит все данные с указанного диска. Убедитесь, что вы выбрали нужный диск и что он не содержит никаких данных!
Преобразуем диск в GPT:
При преобразовании на диске будет автоматически создан MSR раздел, нам он пока не нужен, поэтому удалим его командой:
После чего убедимся, что диск не содержит разделов.
Теперь можно создавать разметку. Разделы должны идти в том же порядке и с тем же типом, что и на первом диске. Поэтому первым создадим раздел восстановления, он не является обязательным и не влияет на работу системы. В принципе его можно даже не форматировать, но во избежание каких-либо недоразумений в дальнейшем мы рекомендуем создать раздел с теми же атрибутами, что и оригинальный раздел восстановления.
На всякий случай явно выберем диск и создадим на нем раздел размером в 499 МБ, который отформатируем в NTFS:
Затем зададим ему нужные GPT-атрибуты:
Идентификатор de94bba4-06d1-4d40-a16a-bfd50179d6ac задает тип раздела как Windows RE, а атрибут 0x8000000000000001 препятствует назначению буквы диска и помечает раздел как обязательный для работы системы, во избежание его удаления из оснастки управления дисками.
Следующим шагом создадим раздел EFI:
Если все сделано правильно, то вы должны получить следующую схему разметки, которая будет полностью повторять (за исключением системного раздела) разметку первого диска.
После чего систему обязательно следует перезагрузить.
Создание программного RAID
Прежде всего преобразуем диски в динамические, это можно сделать в оснастке Управление дисками:
или утилитой diskpart:
Затем добавим зеркало к системному диску через графический интерфейс
или с помощью diskpart:
После чего следует обязательно дождаться ресинхронизации данных, в зависимости от скорости и объема дисков это может занять некоторое время.
Теперь при загрузке появится меню с выбором раздела, загрузиться можно с обоих, но не будем забывать, что загрузчик по-прежнему присутствует только на первом диске и при смене порядка загрузки в BIOS загрузиться со второго диска не удастся.
Настройка загрузчика EFI и его копирование на второй раздел
Снова запустим утилиту diskpart и присвоим буквы EFI разделам на дисках, но перед этим уточним расположение нужного нам раздела:
Как видим интересующий нас раздел имеет номер 2, выберем его и присвоим букву:
Повторим аналогичные манипуляции со вторым диском:
Выйдем из утилиты diskpart (команда exit) и перейдем в EFI раздел первого диска:
Для просмотра текущих точек загрузки выполните:
Вывод команды покажет нам единственную запись диспетчера загрузки (на текущем EFI-разделе) и две записи загрузчика Windows, на каждом из зеркальных томов. Нам потребуется создать второй экземпляр диспетчера загрузки:
Из вывода данной команды нам потребуется идентификатор, скопируем его для использования в следующей команде.
В фигурных скобках должен быть указан идентификатор, полученный на предыдущем шаге.
После чего экспортируем BCD-хранилище загрузчика:
И скопируем содержимое EFI-раздела на второй диск:
Ошибка при копировании активного экземпляра BCD-хранилища — это нормально, собственно поэтому мы и сделали его экспорт, вместо того, чтобы просто скопировать. Затем переименуем копию хранилища на втором диске:
и удалим ее с первого:
Осталось удалить буквы дисков EFI-разделов, для этого снова запустим diskpart:
Теперь можно перезагрузить систему и в загрузочном меню BIOS выбрать Windows Boot Manager 2, затем Windows Server — вторичный плекс — это обеспечит использование EFI-загрузчика и системного раздела второго диска. Если вы все сделали правильно — загрузка будет удачной. Таким образом у нас будет полноценное зеркало системного раздела на динамических дисках в UEFI-системе.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Дисковые пространства: программный RAID в Windows 8
Как я писал в предыдущих публикациях, на самом деле Windows 8 есть что предложить пользователю кроме нового интерфейса Metro (а иногда и в противовес ему). У меня Windows 8 прочно обосновалась на настольном ПК благодаря одному только Hyper-V, но это, конечно, довольно специальное применение, востребованное далеко не каждым. В этой статье речь пойдет о еще одной важной новинке, которая также достаточно сложна в техническом плане, но, тем не менее, может претендовать на гораздо большую популярность.
Storage Spaces
В русскоязычной версии Windows 8 функция, с которой я хочу познакомить читателей, называется «Дисковые пространства».
Перевод совершенно неудачный, поскольку набирающие популярность SSD к дискам никакого отношения не имеют. По-английски же название звучит совершенно корректно — Storage Spaces, пространства хранения.
Если не вдаваться в глубокую теорию, то «Дисковые пространства» представляют собой программный RAID в составе всех редакций Windows 8. Вообще говоря, для Windows это не новость — похожую функциональность предоставляют динамические диски, а Drive Extender из Windows Home Server можно считать прямым прообразом нынешнего решения. Тем не менее «Дисковые пространства» имеют свою специфику, и можно предположить, что они умышленно вынесены на пользовательский уровень, чтобы привлечь к ним дополнительное внимание. Но прежде чем приступить к их изучению, напомним вкратце о самом
Эта аббревиатура расшифровывается как 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 |
Простое | 1 | 0 | 0 |
Двухсторонее зеркало | 2 | 1 | 1 |
Трехсторонее зеркало | 5 | 2 | 1E (?) |
Четность | 3 | 1 | 5 |
Остановимся чуть подробнее на каждом из них.
Простое пространство, которое является аналогом 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 не решит всех проблем). К сожалению, никаких предупреждений при формировании пулов и пространств пользователь не получает — хотя некоторые неудачные конфигурации вычисляются довольно легко.
Вот как выглядит производительность дисковых пространств из примеров этой статьи.
А вот, для сравнения, производительность использованных физических накопителей.
Видно, что запись на зеркало определяется худшими показателями для двух накопителей, а чтение, как и все операции с простым пространством — усредненными. В данном случае результаты, пожалуй, было несложно предсказать, исходя из принципов работы схем RAID. Однако если бы накопителей в пуле было больше, арифметика была бы не столь проста.
К сожалению, для проведения полновесного тестирования под рукой не оказалось необходимого оборудования, но в общем можно утверждать, что в тех случаях, когда удается распределить одинаковые накопители по независимым каналам, результаты примерно соответствуют общим представлениям о RAID, хотя и с несколько худшим уровнем масштабируемости:
- простое пространство увеличит производительность и чтения, и записи пропорционально количеству накопителей;
- при зеркалировании производительность записи примерно соответствует показателям отдельного накопителя (хотя в некоторых случаях может и замедляться), скорость чтения повышается;
- пространство с контролем четности также улучшает производительность чтения, но замедляет запись в разы (типично — вчетверо).
Выводы
Благодаря различным компромиссам и ухищрениям «Дисковые пространства» реализованы таким образом, чтобы среднестатистическому пользователю не пришлось даже задумываться о подробностях конфигурирования и обслуживания RAID. C помощью этой возможности, к примеру, можно совершенно просто задействовать старые, разрозненные накопители, которые уже рискованно использовать поодиночке. Да, это приведет к каким-то негативным эффектам, но работать все будет исправно и совершенно автоматически. Для более опытных пользователей и администраторов небольших серверов имеется возможность и тонкой настройки посредством PowerShell. Конечно, сегодня появляется все больше бюджетных NAS, однако они все-таки служат несколько иным целям, требуют дополнительных затрат и не обладают гибкостью «Дисковых пространств». В любом случае, хорошо иметь выбор. Наконец, само появление «Дисковых пространств» в Windows 8 говорит о том, что Microsoft пока не собирается сбрасывать со счетов рынок традиционных ПК.