Страницы

понедельник, 13 января 2025 г.

Строим NVMe-хранилища Storage Spaces | entry

 Строим NVMe-хранилища Storage Spaces | entry

14-19 минут

Storage Spaces — это технология от Microsoft для эффективного управления пространствами хранения данных, которая является основой виртуализации хранилищ в операционных системах компании. Основными объектами абстракции являются физические носители, пулы хранения и виртуальные диски — эти элементы и составляют хранилища (storage spaces).

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

Хранилища можно создавать как через графический интерфейс GUI, так и с помощью командной строки PowerShell, что дает больше свободы в настройках и понимании их влияния на производительность.

Типы пространств хранения

Процесс начинается с формирования пула из физических носителей. Поддерживаются накопители и хранилища различных интерфейсов: SATA, SAS, NVMe, iSCSI, FC. В пул можно включить даже USB-флешки или смешать диски с разной производительностью.

PowerShell — чтобы посмотреть доступные для создания пула диски:

Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk -CanPool $True

PowerShell — чтобы создать пул с именем EntryPool1 из всех доступных дисков:

New-StoragePool –FriendlyName EntryPool1 –StorageSubsystemFriendlyName "Windows Storage*" –PhysicalDisks (Get-PhysicalDisk –CanPool $True)

После создания пула вопрос о размещении данных на определенном диске теряет актуальность, так как абстракция пула скрывает физические носители. Пул делит свою доступную емкость между виртуальными дисками (пространствами хранения), где данные размещаются согласно выбранному типу защиты. Пространства хранения не являются томами RAID и не располагаются на отдельных дисках, а данные распределяются по дискам пула в виде 256 МБ фрагментов, называемых «плитками» (slabs).

Типы виртуальных дисков:

  1. Simple — для повышения производительности без защиты от сбоя дисков. Данные распределяются по дискам пула, и производительность растет с количеством дисков. Такой диск лучше подходит для временных данных или данных, которые можно легко восстановить.
  2. Mirror — для повышения производительности и защиты данных. Создает копии файлов: двойное зеркало (two-way mirror) — две копии, тройное (three-way mirror) — три копии. Для повышения устойчивости к сбоям требуется от 2 до 5 дисков.
  3. Parity — для защиты данных через информацию о четности. Такой тип подходит для последовательных рабочих нагрузок, например, для резервного копирования или хранения мультимедиа. Для защиты от отказа одного диска необходимо минимум три носителя.

Пример создания виртуального диска Simple с PowerShell:

New-VirtualDisk -StoragePoolFriendlyName test -FriendlyName VG1Data -ResiliencySettingName Simple -Size 100GB

Магия PowerShell

GUI позволяет легко создать пул и выбрать тип виртуального диска, но PowerShell предоставляет более глубокое понимание влияния настроек на производительность. Рассмотрим важные параметры: NumberOfColumns и Interleave.

  • NumberOfColumns — количество столбцов (физических дисков), по которым распределяется запись.
  • Interleave — ширина полосы записи данных на каждом диске.

Чем больше столбцов, тем выше производительность последовательной записи/воспроизведения. Однако параметр NumberOfColumns не может быть больше количества дисков в пуле. В GUI этот параметр автоматически масштабируется, и изменить его можно только через PowerShell.

Рекомендации для настройки:

  • Важное значение имеет соотношение между NumberOfColumns, Interleave и Allocation Unit Size (AUS). Параметры должны быть согласованы для достижения оптимальной производительности.

Подстройка под рабочие нагрузки

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

Если размер блока данных превышает Interleave, это может привести к снижению производительности, так как операции будут разбиваться на несколько полос, что замедляет запись.

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

New-VirtualDisk -StoragePoolFriendlyName "pool" -ProvisioningType Thin -Interleave 128KB -FriendlyName "TestParity" -Size 4TB -ResiliencySettingName Parity -NumberOfColumns 3

NVMe в серверах

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

Сегодня серверы с NVMe SSD становятся стандартом, и с каждым поколением PCIe производительность только растет. NVMe SSD всегда будут быстрее, чем SATA SSD, благодаря прямому подключению к шине, а не через посреднические контроллеры.

Тестовая платформа

Использован сервер с платформой ASUS RS700-E10-RS12 на базе двух процессоров Intel Xeon Gold 6326, оснащенный 4 дисками Micron 7450 Max на интерфейсе U.3 и поддержкой NVMe. Программа для тестирования — FIO (версии fio-3.36-x64).

Тестирование

Мы тестировали производительность пространств хранения с разными конфигурациями:

  • Два NVMe SSD в двойном зеркале.
  • Четыре NVMe SSD в двойном зеркале.
  • Четыре NVMe SSD в пространстве с четностью (default parity).
  • Четыре NVMe SSD в пространстве с четностью (optimal parity).

Мы измеряли IOPS и задержки для различных типов операций с блоками данных (4К и 1М).

Результаты

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

Производительность в произвольном доступе (4K) и последовательном доступе (1M):

  • Увеличение числа дисков в пуле приводит к росту IOPS и снижению задержек.
  • Оптимизация настроек AUS, NumberOfColumns и Interleave значительно улучшает производительность для параллельных рабочих нагрузок.

Краткие выводы

  • Высокая эффективность зеркальных дисков Storage Space.
  • При увеличении числа дисков в пуле увеличиваются IOPS и уменьшаются задержки.
  • Логические диски Single Parity показывают низкую производительность при случайных записях.
  • Оптимизация взаимосвязи между AUS, NumberOfColumns и Interleave улучшает производительность, особенно для задач линейной записи.
  • Single Parity в реальных условиях редко применяется из-за низкой производительности случайных записей.

Жизнеспособное сочетание

NVMe-хранилища под управлением Storage Spaces в Windows-серверах — это доступное и эффективное решение для производительного хранения данных. С правильным пониманием природы данных и настройки параметров можно получить отличные результаты без лишних затрат.






















Комментариев нет:

Отправить комментарий