Storage Spaces на бюджетном железе: зеркало с паритетом и без иллюзий
Тестируем Storage Spaces из Windows Server 2012 на трёх SATA-дисках: двустороннее зеркало плюс паритет. Производительность ниже аппаратного RAID, зато цена вопроса - ноль.
Windows Server 2012 GA: Storage Spaces - программный RAID поверх любых дисков, включая USB и SATA, с поддержкой thin provisioning
Когда на прошлой неделе мы катили первую боевую установку WS2012 у пилотного клиента, Storage Spaces там был на трёх разнокалиберных дисках с файловым шарингом - и мы пообещали покопать глубже. Копаем. На этот раз - уже целенаправленный стенд: три диска SATA одного класса, задача архивного хранилища, конфигурация зеркало плюс паритет.
Что вообще такое Storage Spaces
Если коротко: Windows умеет объединять физические диски (и даже USB-накопители, что вызывает смешанные чувства) в пул, а из пула нарезать виртуальные тома с разными уровнями защиты - зеркало, паритет или просто JBOD без защиты. Всё это без сторонних утилит, через встроенный Server Manager или PowerShell.
Thin provisioning идёт в комплекте: виртуальный диск можно объявить больше физического пула и докупать железо по мере реального роста данных, не перестраивая структуру. Это из области «раньше так умели только дорогие СХД» - теперь работает прямо в стандартной лицензии Windows Server 2012.
Диапазон применения широкий - от USB-«сейфа» на рабочей станции до полноценного архивного хранилища на сервере. Мы пошли в сторону сервера.
Стенд
Три диска SATA объёмом по 1 ТБ, один хост с WS2012 Standard, никакого RAID-контроллера - обычный чипсетный AHCI. Создаём пул из трёх дисков, дальше два виртуальных тома:
- Зеркало (Mirror 2-way). Два диска под данные, один диск под второй экземпляр. Размер реально доступного пространства - примерно 1 ТБ из трёх.
- Паритет (Parity). Данные и контрольные суммы размазаны по трём дискам. Эффективная ёмкость около двух третей пула.
Что хотели проверить: насколько производительность паритетного тома упадёт по сравнению с зеркалом и что будет при потере одного диска.
Производительность
Цифр точных не будем давать - разные дисковые конфигурации дают разброс, и мы не хотим, чтобы кто-то воспринял наши цифры как эталон. Общая картина:
- Зеркало читает примерно так же, как один диск, а местами чуть быстрее за счёт чтения с обоих. Запись - как один диск, без сюрпризов.
- Паритет на чтении - сносно, сравнимо с зеркалом при последовательном чтении.
- Паритет на записи - вот здесь просадка заметная. Расчёт XOR-паритета ложится на CPU, и при интенсивной записи это ощущается. На нашем хосте с умеренной нагрузкой - терпимо, но для потоковой записи больших объёмов это не вариант.
Аппаратный RAID-5 на нормальном контроллере с кешем и BBU выигрывает у паритета Storage Spaces по записи значительно. Сравнивать их в лоб не стоит - разные ценовые категории, разное железо.
Отказ диска: симулируем
Вытащили один диск с горячим подключением - Storage Spaces перешёл в деградированный режим, предупреждение в Server Manager появилось быстро. Доступность данных сохранилась. После возврата диска пересборка пула прошла без участия человека.
На паритетном томе в деградированном режиме производительность упала ещё сильнее - это ожидаемо: расчёт паритета без одного диска требует больше операций. Работать можно, гонять туда активную нагрузку не стоит.
Где это реально подходит
Для managed-клиентов у нас уже есть сценарии, где Storage Spaces попадает в точку:
- Архивное хранилище с редкими записями и нечастыми чтениями - паритет работает нормально, ёмкость высокая.
- Вторичный файловый сервер с нагрузкой офисного уровня - зеркало без вопросов.
- Репозиторий резервных копий - пишем редко большими блоками, читаем ещё реже, зато место нужно много и дёшево.
Куда Storage Spaces не стоит ставить: базы данных с интенсивной записью, почтовый сервер с большим трафиком Exchange, любая нагрузка, где IOPS - критический параметр.
Про thin provisioning отдельно
Мы уже сталкивались с thin provisioning на NetApp FAS и хорошо знаем, чем заканчивается пул, за которым не смотрят. Storage Spaces не исключение: объявить виртуальный том в 10 ТБ при физическом пуле в 3 ТБ - технически можно, но мониторинг заполненности пула обязателен. Windows умеет присылать события, когда пул перебирает порог, - настройте оповещения до того, как данные начнут писаться.
Итог
Storage Spaces - это рабочий программный RAID для задач, где аппаратный RAID не нужен или дорог. Производительность ниже, чем у выделенного контроллера с BBU - это не баг, это честная расплата за нулевую стоимость решения. Для архивного хранилища на трёх SATA-дисках это отличный вариант: диски дешёвые, ёмкость хорошая, надёжность приемлемая.
Тестирование продолжаем: хочется посмотреть на поведение ReFS поверх Storage Spaces при корруптированных блоках - там обещают self-healing. Но это отдельная история и отдельный пост.