Storage spaces что это
Как устроен Storage Spaces
Storage Spaces в Windows Server 2012 R2
Как устроен Storage Spaces
Storage Spaces — технология виртуализации дискового пространства, которая впервые появилась в Microsoft Windows Server 2012. Storage Spaces является дальнейшим развитием механизма управления динамическими дисками в Windows. Основой является широко применяемая в решениях различных вендоров концепция дисковых пулов: отдельные физические диски сервера объединяются в один или несколько пулов, на базе которых создаются тома с различными уровнями производительности и отказоустойчивости. Использование Storage Spaces вместо аппаратного RAID-контроллера имеет ряд преимуществ и недостатков, которые будут подробно рассмотрены ниже.
Термины
Ограничения
Столбцы и количество дисков в ВД:
Тип ВД | Минимальное число столбцов | Соотношение столбцы/диски | Минимальное число дисков | Максимальное число столбцов |
Simple (простой) | 1 | 1:1 | 1 | — |
Two-way mirror (двойное зеркало) | 1 | 1:2 | 2 | — |
Three-way mirror (тройное зеркало) | 1 | 1:3 | 5 | — |
Single parity (одиночная чётность) | 3 | 1:1 | 3 | 8 |
Dual parity (двойная чётность) | 7 | 1:1 | 7 | 17 |
Storage Spaces в кластерах
Одна из самых востребованных возможностей Storage Spaces — использование в failover-кластере Windows. Архитектура решения предельно проста: требуются диски SAS (см. дополнительные требования к дискам и организации томов), SAS JBOD (дисковая полка) с двумя SAS-экспандерами и минимум двумя разъемами для подключения к каждому из экспандеров (для двухузлового кластера). На серверах в качестве контроллеров используются обычные SAS HBA. Мы рекомендуем LSI (любые SAS2 и SAS3 HBA с внешними портами, например LSI 9207-8e), но можно использовать и Adaptec серий 6H и 7H.
Минимальной конфигурация выглядит так: два сервера, в каждом из них двухпортовый SAS HBA с подключением к 2-экспандерному SAS JBOD’у на базе корпуса Supermicro и SAS диски.
Для использования в качестве SAS JBOD’а можно использовать любой корпус Supermicro с двумя экспандерами (E26 или E2C в наименовании для SAS2 и SAS3 соответственно). Каждый экспандер в корпусах Supermicro имеет минимум два разъема x4 SAS (SFF-8087 или SFF-8643), которые можно использовать в качестве входов. При наличии третьего разъема его можно использовать для каскадирования (подключения дополнительных дисковых полок) или для построения топологии с тремя узлами в кластере.
Существуют варианты в одном корпусе, т.н. Cluster-in-a-box (CiB): готовые комплекты SSG-6037B-CIB032 и SSG-2027B-CIB020H на базе Supermicro Storage Bridge Bay с предустановленным Windows Storage Server 2012 R2 Standard, которые отлично подходят для построения отказоустойчивых файловых и/или iSCSI серверов:
Производительность
Решение на базе Storage Spaces может масштабироваться до более чем миллиона IOPS при использовании SSD и зеркальных томов. Но производительность на запись в Parity и Dual Parity по-прежнему оставляет желать лучшего, и такие конфигурации без write-back кэша на SSD подходят лишь для узкого круга задач с преимущественной нагрузкой на чтение.
Всестороннее исследование производительности Storage Spaces в разных конфигурациях было проведено компанией Fujitsu. В нашей тестовой лаборатории мы повторили некоторые из этих тестов, дополнив измерение IOPS и пропускной способности значениями средней и максимальной задержек.
Условия тестирования
Для наглядности использовались шаблоны аналогичные использованным в тестах от Fujitsu:
Шаблон | Доступ | Чтение | Запись | Размер блока, КиБ |
File copy | случайный | 50% | 50% | 64 |
File server | случайный | 67% | 33% | 64 |
Database | случайный | 67% | 33% | 8 |
Streaming | последовательный | 100% | 0% | 64 |
Restore | последовательный | 0% | 100% | 64 |
Результаты
RAID-10 vs Storage Spaces 2-way mirror
Шаблоны Database (IOPS), File copy, File Server (пропускная способность). Для шаблона Database используется логарифмическая шкала. По графикам видно, что 2-way mirror заметно уступает в производительности традиционному аппаратному RAID-10: в два с лишним раза на шаблонах Database и File copy, примерно в 1,5 раза на шаблоне File Server. Выравнивание результатов с ростом глубины очереди больше 16-ти нельзя рассматривать с точки зрения практического использования из-за неприемлемого роста задержек (графики ниже). Серьезный рост производительности обеспечивает использование SSD в качесте кэша на запись и быстрого яруса. Всего пара даже устаревших на сегодняшний день Intel 710 поднимает производительность на случайном доступе малыми блоками на порядок. Есть смысл использовать такое сочетание не только для OLTP, но и для нагруженных файловых серверов.
RAID-6 vs Storage Spaces dual parity
Шаблоны Database (IOPS), File copy, File Server (пропускная способность). Storage Spaces с Dual Parity существенно отстаёт от аппаратного RAID во всех сценариях со случайным доступом. Это не удивительно с учётом того, что в распоряжении Adaptec 6805 есть 512МБ RAM-кэша, что позволяет существенно оптимизировать неудобный для RAID-6 доступ на случайную запись. Среди тестов, проведённых Fujitsu, есть вариант «RAID-6 8xHDD против Dual Parity 8xHDD + 1ГБ WB кэша на 3xSSD» — на всех трёх шаблонах производительность при добавлении WB-кэша на SSD не уступает аппаратному RAID, причём без использования ярусного хранения.
Преимущества и недостатки Storage Spaces
Преимущества
Для простых проектов с одиночным сервером: SAS HBA или чипсетный контроллер вместо аппаратного RAID-контроллера; возможность использовать недорогие диски SATA, формально не совместимые с аппаратными RAID (например, WD Red) вместо дисков nearline класса.
Для проектов с одиночной неотказоустойчивой СХД и большими требованиями к плотности размщениния дисков можно использовать такие платформы (72 диска в 4U, до 432ТБ сырой ёмкости при использовании 6ТБ дисков):
Для кластерных решений: простые дисковые полки (SAS JBOD’ы) вместо дорогостоящих СХД.
Использование tiering’а (ярусного хранения) в сочетании с кэширование записи на SSD в Storage Spaces в большинстве случаев работает эффективнее, обходится дешевле и имеет большие пределы масштабирования в сравнении с реализацией SSD кэша на аппаратных RAID-контроллерах (например, LSI CacheCade или Adaptec MaxCache).
Для всех видов томов, за исключением использования в кластере, томов с ярусным хранением и томов Dual Parity поддерживается Thin Provisiong (тонкое выделение ресурсов) — это позволяет выделять ёмкость только по мере реального использования.
Недостатки
Определенный тип нагрузки на запись (случайный доступ небольшими блоками, сосредоточенный в определённой области) может быть легко компенсирован добавлением SSD в качестве быстрого яруса и кэша на запись. Но продолжительную линейную нагрузку на запись компенсировать не получится, так что рекомендовать использование Storage Spaces, например, для видеонаоблюдения нельзя.
Для бюджетных кластерных решений под Windows (с похожей архитектурой на базе SAS JBOD) с высокой нагрузкой на запись мы советуем использовать вместо Storage Spaces специальные RAID-контроллеры LSI Syncro CS.
Советы по оптимальному использованию Storage Spaces
Пример (виртуальный диск Dual Parity, 13 столбцов, 1000ГиБ, Fixed Provisioning):
Управление дисковыми пространствами в Windows 8, 8.1 и 10
Управление дисковыми пространствами в Windows 8, 8.1 и 10
Почему защита персональных данных по-прежнему важна
Скачать SE
Оптимизация
Не приходит обновление до 11
Не устанавливается
Дисковые пространства (Storage Spaces) – штатная функция Windows 8, 8.1 и 10, которая позволяет объединить несколько жестких дисков или твердотельных накопителей в единый пул хранения. Функция поддерживает диски, подключенные через любой интерфейс (ATA, SATA, SAS или USB), и позволяет объединить диски, которые отличаются по размеру.
Storage Spaces обеспечивают некоторый уровень отказоустойчивости – если один диск в пуле выйдет из строя, никакие данные не потеряются, а неисправный диск можно будет легко заменить. В определенной степени эта функция идентична RAID (избыточный массив независимых дисков) уровня 1 («зеркало») и 5 (чередование с распределенной четностью), но в отличие от RAID дисковые пространства позволяют объединить диски любого типа и размера. Однако если вы уже используете аппаратный или программный RAID-массив, то переход на дисковые пространства не имеет никакого смысла, поскольку никаких преимуществ с точки зрения защиты данных или производительности вы не получите.
Дисковые пространства можно использовать для хранения истории файлов и резервных копий образа системы, временных (в случае использования простого дискового пространства без устойчивости) или действительно важных файлов (в случае использования двухстороннего зеркала или четности). Функция работает с дисками в формате NTFS, позволяет задать особые разрешения для файлов и папок или включить шифрование содержимого (BitLocker тоже поддерживается). Windows 8/8.1/10 распознают новую файловую систему ReFS, поэтому в процессе создания дискового пространства можно выбрать и этот формат.
В отличие от традиционных дисков, Storage Spaces не нужно дефрагментировать. Использовать на них проверку диска также нет необходимости. В случае каких-либо проблем Windows немедленно об этом уведомит. Если один из физических дисков будет поврежден, просто отключите его, попробуйте восстановить и снова добавьте в пул, если с ним все в порядке.
Если объединить диски со схожими характеристиками производительности (например, два одинаковых внутренних жестких диска), то общая скорость чтения файлов заметно увеличится, тогда как скорость записи немного упадет. При объединении внутренних и внешних дисков скорость чтения и записи будет немного выше, чем у самого медленного диска в пуле хранения.
Хотя Windows 8, 8.1 и 10 позволяют смешивать диски разных размеров, рекомендуется использовать диски одного объема, дабы не тратить дисковое пространство впустую. Например, подключив один диск на 300 Гб и один на 750 Гб в двухстороннее зеркало, вы получите дисковое пространство (виртуальный диск) объемом 525 Гб. Расчет таков: (300+750)/2 – для обеспечения отказоустойчивости будет доступна только половина от общего дискового пространства при использовании двухстороннего зеркала. Остальное пространство будет использоваться для резервирования данных. Но поскольку зеркалирование подразумевает собой, что все диски в пуле хранения содержат одинаковые данные, то реально используемое пространство будет ограничено 300 Гб (наименьший физический диск в пуле просто не может хранить больше данных). Это означает, что дополнительные 450 Гб на диске 750 Гб использоваться не будут, и вы не сможете хранить более 300 гигабайт информации, если не добавите диск(и) с емкостью, которой будет достаточно для обеспечения отказоустойчивости на случай выхода из строя самого большого диска. Конечно, можно убрать мелкие диски и заменить их более вместительными позже – но только по одному за раз, чтобы избежать потери данных.
Диски Storage Spaces могут быть без проблем подключены (в любом порядке) к любому другому компьютеру с Windows 8/8.1/10, но более ранние версии Windows не поддерживают дисковые пространства – для них это нераспознанный раздел.
Наконец, важно отметить, что системный диск (на котором установлена операционная система) не может быть добавлен в дисковое пространство.
Как создать дисковое пространство
Для создания дискового пространства требуется по крайней мере два физических жестких диска (системный диск с Windows не в счет) или твердотельных накопителя (SSD). USB-флэшки или карты памяти для этой цели не годятся.
Можно использовать как форматированные, так и неформатированные диски, так как при создании пула хранения выбранные диски в любом случае будут подвергнуты форматированию. Поэтому убедитесь, что на них нет ничего важного. Смотрите, я вас предупредил!
Открываем Панель управления и переходим в Система и безопасность\Дисковые пространства.
Жмем «Создать новый пул и дисковое пространство».
В окне выбора дисков, как уже было сказано выше, вы увидите и форматированные, и неформатированные диски, если таковые подключены (кроме системного диска, конечно).
В том случае, если система не сможет обнаружить подходящих дисковых устройств, вы увидите такое сообщение:
Итак, отмечаем диски, из которых хотим образовать пул хранения и жмем кнопку «Создать пул». Опять же, имейте в виду, что все данные на выбранных дисках будут уничтожены раз и навсегда.
Далее увидим окно с возможностью выбрать имя диска, букву, файловую систему и тип устойчивости.
В разделе «Устойчивость» представлены следующие типы устойчивости:
В разделе «Размер» задается максимальный размер дискового пространства. Поле «Размер (максимум)» заполняется автоматически в зависимости от выбранного типа отказоустойчивости: при выборе двухстороннего зеркала будет отображена половина от общей емкости пула (сумма дискового пространства всех подключенных дисков); при выборе трехстороннего зеркала или четности итоговым максимальным размером будет, соответственно, одна треть или две трети от общей емкости дискового пространства.
При желании в поле «Размер (максимум)» можно установить значение гораздо больше отображаемого, поскольку функция предусматривает добавление дисков при нехватке емкости. Однако уменьшение размера дискового пространства не поддерживается.
Определившись с типом устойчивости и размером пула, жмем «Создать дисковое пространство».
Этот процесс займет некоторое время.
Затем дисковое пространство появится в проводнике, как и любой жесткий диск.
Управление дисковыми пространствами
Управление дисковыми пространствами осуществляется из того же окна, в котором они создаются. Если команды управления недоступны, в первую очередь жмем кнопку «Изменить параметры» в правом верхнем углу окна. После этого все они станут активны.
В окне «Изменение дискового пространства» можно изменить название и букву диска. Размер дискового пространства можно только увеличить, обратная процедура не поддерживается. Невозможен и выбор другого типа устойчивости.
Можно также переименовать пул носителей и физические диски. Соответствующие команды находятся в главном окне дисковых пространств.
Для расширения дискового пространства можно подключить новый диск(и). Для этого жмем «Добавить диски» и выбираем дисковые устройства. Помните, что выбранные диски будут отформатированы и все данные на них будут потеряны.
Удаление дисков из дискового пространства
Чтобы удалить из дискового пространства вышедший из строя, отключенный или более ненужный диск, находим его в раскрывающемся списке «Физические диски», жмем ссылку «Удалить» напротив него и подтверждаем удаление.
Имейте в виду, что не все диски можно удалить – если какой-то из дисков не имеет команды «Удалить», значит, он важен для работы всего дискового пространства.
В некоторых случаях можно столкнуться с ошибкой «Невозможно удалить диск из пула. Диск не может быть удален, потому что не все данные могут быть перераспределены. Добавьте дополнительный диск в пул и повторите операцию». Обычно это означает, что у остальных дисков в пуле слишком мало свободного места, чтобы поддержать удаление этого диска.
Удаление дискового пространства и пула носителей
Дисковое пространство можно удалить, если оно больше не нужно, или если нужно изменить его тип устойчивости. Вместе с удалением дискового пространства удаляются и все хранящиеся на нем данные, так что не забывайте об этом.
Вот как это делается: в раскрывающемся списке «Дисковые пространства» находим то, которое собираемся удалить (если у нас их несколько) и жмем «Удалить».
Удалив все дисковые пространства, можно удалить и пул носителей. После этого все диски, включенные в пул, станут отображаться как отдельные диски.
Кстати, один пул носителей может содержать несколько дисковых пространств, если в пуле достаточно места.
Облако на Microsoft Hyper-V, часть 3: хранилище Storage Spaces
Продолжаем серию статей о виртуальной инфраструктуре на Microsoft Hyper-V.
Сегодня расскажем, как устроено хранилище на базе Storage Spaces и с какими сложностями мы столкнулись при его построении.
Архитектура хранилища
Самой сложной задачей при создании облака Cloud-V оказалось создание быстрого программно-определяемой СХД на базе Microsoft Storage Spaces.
В основе хранилища — кластер на базе двух серверов Dell PowerEdge 730 с подключенным к ним дисковым массивом Dell PowerVault 3060e.
Архитектура Storage Spaces.
Вместо традиционной сети хранения SAN мы построили конвергентную локальную сеть с пропускной способностью 40 Гбит. В кластере развернули роль Scale-out-file server с поддержкой компонентов SMB Direct и SMB Multichannel.
SMB Multichannel позволяет балансировать подключения узлов вычислительного кластера к ресурсам хранилища при наличии нескольких сетевых адаптеров на сервере. Мы использовали сетевые адаптеры Mellanox ConnectX-3 Pro 40GbE, поддерживающие функцию ROCE (RDMA over Converged Ethernet).
Компонент SMB Direct использует ROCE для прямого доступа к памяти удаленного сервера, что снижает сетевые задержки. Приложения с одного узла обращаются непосредственно к памяти приложений на другом узле, минуя сетевой стэк операционной системы. В результате существенно ускоряется передача данных между узлами.
Взаимодействие приложения и дискового хранилища: без RDMA (слева) и с RDMA (справа).
Высокая производительность программно-определяемой СХД Storage Spaces достигается за счет использования разного типа дисков (SATA, SAS, SSD). Фактически у нас получилось многоуровневое хранилище, данные в котором распределяются по разным типам дисков в зависимости от интенсивности использования. Storage Spaces фильтрует данные и отправляет редко используемые на нижний уровень (HDD), а “горячие” данные – на быстрые SSD-диски на верхнем уровне. Такой тип хранилища позволяет более эффективно использовать ресурсы.
Запись и фильтрация данных в многоуровневом хранилище.
Проблема производительности хранилища на Storage Spaces
Чтобы получить такое умное хранилище и заставить его работать, нам пришлось повоевать. Проблема, с которой мы столкнулись, – низкая скорость обработки данных. Показатели записи SSD-дисков не превышали 100 Мбит/сек, что в 10 раз ниже необходимых для нормальной производительности. Проблема появилась сразу же при развертывании ВМ из шаблона: одна ВМ размером 10 Гб разворачивалась 30–40 минут, развертывание двух ВМ занимало порядка двух часов.
Подозрение пало на прошивку дисков: дефолтная не поддерживала одновременный доступ с разных нод кластера. После обновления прошивки развертывание нескольких ВМ перестало приводить к такому сильному падению производительности. Однако все происходило по-прежнему долго.
Мы продолжили искать проблему на самом нижнем уровне архитектуры и стали анализировать процесс обмена данными драйвера ОС с диском, а именно: чтение и запись секторов на диск. Существует два определения сектора: логический и физический. Логическим сектором оперирует драйвер операционной системы, физическим – непосредственно контроллер жесткого диска. В данное время жесткие диски делятся на три типа по соотношению размера логический/физический сектор:
В итоге получалась следующая картина:
Схема взаимодействия. Физический сектор учитывается только на уровне контроллера жесткого диска.
Сложилась ситуация, в которой у вышележащего диска логический сектор меньше, чем у нижележащего. Это привело к выполнению политики Read-Modify-Write: чтение сектора 4К в кэш, правка необходимых 512 байт, запись 4К обратно на диск. Как следствие, к катастрофическому падению производительности дисковой подсистемы во время записи в 8 раз.
Процесс записи 512-байтного сектора на носитель с 4096-байтным сектором.
Мы нашли два пути решения проблемы:
Что впереди: Storage Spaces Direct
В рамках Windows Server 2016 вышла обновленная версия Storage Spaces – Storage Spaces Direct. Как обещает вендор, в новом решении устранены проблемы текущей реализации программно-определяемой СХД и есть новые возможности: