Качество обслуживания для хранилища

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016

Представленный в Windows Server 2016 компонент качества обслуживания хранилища позволяет централизованно отслеживать и контролировать производительность хранилища виртуальных машин с помощью ролей Hyper-V и масштабируемого файлового сервера. Эта функция автоматически улучшает справедливость ресурсов хранилища между несколькими виртуальными машинами с помощью одного и того же кластера файлового сервера и позволяет настраивать минимальные и максимальные цели производительности на основе политик в единицах нормализованных операций ввода-вывода в секунду.

Компонент качества обслуживания хранилища в Windows Server 2016 поддерживает следующие задачи:

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

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

  • Управление требованиями к числу операций ввода-вывода в рамках рабочей нагрузки. Политики службы качества обслуживания хранилища определяют минимальный и максимальный показатели производительности виртуальных машин и гарантируют, что они выполняются. Это обеспечивает согласованную производительность виртуальных машин, даже в загруженных и избыточно подготовленных средах. Если значения, заданные в политиках, не могут быть удовлетворены, активируются оповещения, уведомляющие, что виртуальные машины не соответствуют политике или что им назначены недопустимые политики.

Здесь описываются преимущества нового компонента качества обслуживания хранилища для бизнес-процессов организации. Предполагается, что вы уже знакомы с Windows Server, отказоустойчивой кластеризацией Windows Server, масштабируемым файловым сервером, Hyper-V и Windows PowerShell.

Обзор

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

Требования к службе качества обслуживания хранилища

Служба качества обслуживания хранилища поддерживает два сценария развертывания.

  • Hyper-V с использованием масштабируемого файлового сервера. Этот сценарий предусматривает наличие следующих компонентов:

    • Кластер хранилища, представленный кластером масштабируемого файлового сервера.

    • Вычислительный кластер как минимум с одним сервером и включенной ролью Hyper-V.

    Для службы качества обслуживания хранилища требуется, чтобы на серверах хранилища был отказоустойчивый кластер, но в нем не должны быть вычислительные серверы. Все серверы (и для хранения, и для вычислений) должны работать под управлением Windows Server 2016.

    Если у вас не развернут кластер масштабируемых файловых серверов в целях оценки, пошаговые инструкции по его созданию с использованием имеющихся серверов или виртуальных машин см. в статье Windows Server 2012 R2 Storage: Step-by-step with Storage Spaces, SMB Scale-Out and Shared VHDX (Physical) (Хранилище Windows Server 2012 R2: пошаговое руководство, включающее использование дисковых пространств, масштабирования SMB и общего диска VHDX (физического)).

  • Hyper-V с использованием общих томов кластера. Этот сценарий предусматривает наличие следующих компонентов:

    • Вычислительный кластер с включенной ролью Hyper-V.

    • Hyper-V с использованием общих томов кластера для хранения.

Также требуется наличие отказоустойчивого кластера. На всех серверах должна быть установлена одинаковая версия Windows Server 2016.

Использование службы качества обслуживания хранилища в программно-определяемом решении для хранения данных

Служба качества обслуживания хранилища встроена в программно-определяемом решении Майкрософт для хранения данных, предоставляемом масштабируемым файловым сервером и Hyper-V. Серверы Hyper-V могут получить доступ к файловым ресурсам на масштабируемом файловом сервере по протоколу SMB3. В кластер файловых серверов добавлен новый диспетчер политик, который обеспечивает централизованный мониторинг производительности хранилища.

Scale-Out File Server and Storage QoS

Рис. 1. Использование служба хранилища QoS в программно-определяемом решении хранилища в масштабируемом файловом сервере

Так как серверы Hyper-V запускают виртуальные машины, они отслеживаются с помощью диспетчера политик. Диспетчер политик сообщает политику качества обслуживания хранилища и ограничения или резервирования серверу Hyper-V, который соответствующим образом управляет производительностью виртуальной машины.

При изменении политик качества обслуживания хранилища или требований к производительности виртуальных машин диспетчер политик уведомляет серверы Hyper-V, что нужно отрегулировать поведение. Такая цепь обратной связи гарантирует, что все виртуальные жесткие диски виртуальных машин работают согласованно в соответствии с политиками качества обслуживания хранилища.

Глоссарий

Срок Description
Нормализованные операции ввода-вывода в секунду Все использование хранилища измеряется в разделе "Нормализованные операции ввода-вывода в секунду". Это количество операций ввода и вывода хранилища в секунду. Операция ввода-вывода размером 8 КБ или меньше считается одной нормализованной операцией ввода-вывода. Если размер такой операции превышает 8 КБ, она рассматривается как несколько нормализованных операций ввода-вывода. Например, запрос 256 КБ обрабатывается как 32 нормализованных операций ввода-вывода в секунду.

В Windows Server 2016 можно указать размер для нормализации операций ввода-вывода. В кластере хранилища можно указать нормализованный размер, который будет применяться при вычислении нормализации на уровне всего кластера. Значение по умолчанию остается 8 КБ. Этот параметр влияет на все виртуальные машины. (Виртуальные машины, созданные на локальных томах, также затронуты.)

Flow Это каждый дескриптор файла, который открывает сервер Hyper-V для файла VHD или VHDX (так называемый "поток"). Если к виртуальной машине присоединены два виртуальных жестких диска, на каждый файл вызывается 1 поток для кластера файловых серверов. Если VHDX совместно используется несколькими виртуальными машинами, на каждую виртуальную машину вызывается 1 поток.
InitiatorName (Имя инициатора) Имя виртуальной машины, сообщаемое масштабируемому файловому серверу для каждого потока.
InitiatorID (Идентификатор инициатора) Идентификатор, соответствующий ИД виртуальной машины. Его всегда можно использовать, чтобы однозначно идентифицировать виртуальные машины с отдельными потоками, даже если эти машины имеют одинаковое имя инициатора.
Полис Политики службы качества обслуживания хранилища хранятся в базе данных кластера и имеют следующие свойства: PolicyId, MinimumIOPS, MaximumIOPS, ParentPolicy и PolicyType.
PolicyId Уникальный идентификатор политики. Он формируется по умолчанию, но при необходимости его можно задать самостоятельно.
MinimumIOPS (Минимальное значение IOPS) Минимальное число нормализованных операций ввода-вывода в секунду, определенных в политике. Также называется резервированием.
MaximumIOPS (Максимальное значение IOPS) Максимальное число нормализованных операций ввода-вывода в секунду, определенных в политике. Также называется ограничением.
Агрегированн. Тип политики, при которой указанные минимальное и максимальное значения IOPS, а также значение пропускной способности являются общими для всех потоков, которым назначена политика. Всем VHD, для которых назначена политика в системе хранения, выделена общая пропускная способность ввода-вывода.
Выделенные Тип политики, в котором для отдельных виртуальных жестких дисков или виртуальных жестких дисков управляется указанный минимальный и максимальный диапазон пропускной способности.

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

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

Настройка компонента качества обслуживания хранилища в кластере хранилища

В этом разделе вы узнаете, как настроить службу качества обслуживания хранилища в новом или имеющемся отказоустойчивом кластере и масштабируемом файловом сервере, на котором работает Windows Server 2016.

Настройка компонента качества обслуживания хранилища в новой системе

Если в Windows Server 2016 настроен новый отказоустойчивый кластер и общий том кластера (CSV), компонент качества обслуживания хранилища будет настроен автоматически.

Проверка установки компонента качества обслуживания хранилища

После создания отказоустойчивого кластера и настройки диска CSV компонент качества обслуживания хранилища распознается как основной ресурс кластера и отображается в Windows PowerShell и диспетчере отказоустойчивости кластеров. Таким образом, система отказоустойчивого кластера будет управлять этим ресурсом без вашего вмешательства. Этот ресурс отображается и в диспетчере отказоустойчивости кластеров, и в PowerShell для согласованности с другими ресурсами системы отказоустойчивого кластера, такими как новая служба работоспособности.

Storage QoS Resource appears in Cluster Core Resources

Рис. 2. служба хранилища ресурс QoS, отображаемый как основной ресурс кластера в диспетчере отказоустойчивых кластеров

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

PS C:\> Get-ClusterResource -Name "Storage Qos Resource"

Name                   State      OwnerGroup        ResourceType
----                   -----      ----------        ------------
Storage Qos Resource   Online     Cluster Group     Storage QoS Policy Manager

Настройка компонента качества обслуживания хранилища в вычислительном кластере

Роль Hyper-V в Windows Server 2016 имеет встроенную поддержку службы качества обслуживания хранилища, которая включена по умолчанию.

Установка средств удаленного администрирования для управления политиками качества обслуживания хранилища с удаленных компьютеров

С помощью средств удаленного администрирования сервера можно управлять политиками качества обслуживания хранилища и отслеживать потоки из вычислительных узлов. Эти средства доступны в качестве дополнительных компонентов во всех пакетах установки Windows Server 2016. Их также можно скачать отдельно для Windows 10 на веб-сайте Центра загрузки Майкрософт.

Дополнительный компонент RSAT-Clustering включает в себя модуль Windows PowerShell для удаленного управления отказоустойчивым кластером, а также компонент качества обслуживания хранилища.

  • Windows PowerShell: Add-WindowsFeature RSAT-Clustering.

Дополнительный компонент RSAT-Hyper-V-Tools включает в себя модуль Windows PowerShell для удаленного управления Hyper-V.

  • Windows PowerShell: Add-WindowsFeature RSAT-Hyper-V-Tools.

Развертывание виртуальных машин для запуска тестовых рабочих нагрузок

На масштабируемом файловом сервере потребуется развернуть несколько виртуальных машин с соответствующими рабочими нагрузками. Некоторые советы по имитации загрузки и выполнению стресс-тестирования см. на следующей странице рекомендуемого средства (DiskSpd) и некоторых примеров использования: DiskSpd, PowerShell и производительности хранилища: измерение операций ввода-вывода в секунду, пропускная способность и задержка для локальных дисков и общих папок S МБ.

В примерах сценариев, приведенных в данном руководстве, используется пять виртуальных машин. На виртуальных машинах BuildVM1, BuildVM2, BuildVM3 и BuildVM4 выполняется рабочая нагрузка рабочего стола с низкими и средними требованиями к хранилищу. На виртуальной машине TestVm1 выполняется тест производительности оперативной обработки транзакций с высокими требованиями к хранилищу.

Просмотр текущих метрик производительности хранилища

В этом разделе:

  • запрос потоков с помощью командлета Get-StorageQosFlow;

  • просмотр данных производительности тома с помощью командлета Get-StorageQosVolume.

Запрос потоков с помощью командлета Get-StorageQosFlow

Командлет Get-StorageQosFlow показывает все текущие потоки, инициированные серверами Hyper-V. Кластер масштабируемых файловых серверов собирает все данные, поэтому командлет можно использовать на любом узле в этом кластере или на удаленном сервере с указанием параметра -CimSession.

Команда в следующем примере показывает, как просмотреть все файлы, открытые с помощью Hyper-V на сервере, с использованием командлета Get-StorageQoSFlow.

PS C:\> Get-StorageQosFlow

InitiatorName    InitiatorNodeNam StorageNodeName  FilePath        Status
                 e
-------------    ---------------- ---------------  --------        ------
                                  plang-fs3.pla... C:\ClusterSt... Ok
                                  plang-fs2.pla... C:\ClusterSt... Ok
                                  plang-fs1.pla... C:\ClusterSt... Ok
                                  plang-fs3.pla... C:\ClusterSt... Ok
                                  plang-fs2.pla... C:\ClusterSt... Ok
                                  plang-fs1.pla... C:\ClusterSt... Ok
TR20-VMM         plang-z400.pl... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM4         plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
WinOltp1         plang-c1.plan... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM3         plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM1         plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
TR20-VMM         plang-z400.pl... plang-fs1.pla... C:\ClusterSt... Ok
BuildVM2         plang-c2.plan... plang-fs1.pla... C:\ClusterSt... Ok
TR20-VMM         plang-z400.pl... plang-fs1.pla... C:\ClusterSt... Ok
                                  plang-fs3.pla... C:\ClusterSt... Ok
                                  plang-fs2.pla... C:\ClusterSt... Ok
BuildVM4         plang-c2.plan... plang-fs2.pla... C:\ClusterSt... Ok
WinOltp1         plang-c1.plan... plang-fs2.pla... C:\ClusterSt... Ok
BuildVM3         plang-c2.plan... plang-fs2.pla... C:\ClusterSt... Ok
WinOltp1         plang-c1.plan... plang-fs2.pla... C:\ClusterSt... Ok
                                  plang-fs1.pla... C:\ClusterSt... Ok

Следующая пример команды отформатирована для отображения имени виртуальной машины, имени узла Hyper-V, ввода-вывода в секунду и имени VHD-файла, отсортированного по ввода-выводам в секунду.

PS C:\> Get-StorageQosFlow | Sort-Object StorageNodeIOPS -Descending | ft InitiatorName, @{Expression={$_.InitiatorNodeName.Substring(0,$_.InitiatorNodeName.IndexOf('.'))};Label="InitiatorNodeName"}, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize

InitiatorName InitiatorNodeName StorageNodeIOPS Status File
------------- ----------------- --------------- ------ ----
WinOltp1      plang-c1                     3482     Ok IOMETER.VHDX
BuildVM2      plang-c2                      544     Ok BUILDVM2.VHDX
BuildVM1      plang-c2                      497     Ok BUILDVM1.VHDX
BuildVM4      plang-c2                      316     Ok BUILDVM4.VHDX
BuildVM3      plang-c2                      296     Ok BUILDVM3.VHDX
BuildVM4      plang-c2                      195     Ok WIN8RTM_ENTERPRISE_VL_BU...
TR20-VMM      plang-z400                    156     Ok DATA1.VHDX
BuildVM3      plang-c2                       81     Ok WIN8RTM_ENTERPRISE_VL_BU...
WinOltp1      plang-c1                       65     Ok BOOT.VHDX
                                             18     Ok DefaultFlow
                                             12     Ok DefaultFlow
WinOltp1      plang-c1                        4     Ok 9914.0.AMD64FRE.WINMAIN....
TR20-VMM      plang-z400                      4     Ok DATA2.VHDX
TR20-VMM      plang-z400                      3     Ok BOOT.VHDX
                                              0     Ok DefaultFlow
                                              0     Ok DefaultFlow
                                              0     Ok DefaultFlow
                                              0     Ok DefaultFlow
                                              0     Ok DefaultFlow
                                              0     Ok DefaultFlow
                                              0     Ok DefaultFlow

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

PS C:\> Get-StorageQosFlow -InitiatorName BuildVm1 | Format-List

FilePath           : C:\ClusterStorage\Volume2\SHARES\TWO\BUILDWORKLOAD\BUILDVM1.V
                     HDX
FlowId             : ebfecb54-e47a-5a2d-8ec0-0940994ff21c
InitiatorId        : ae4e3dd0-3bde-42ef-b035-9064309e6fec
InitiatorIOPS      : 464
InitiatorLatency   : 26.2684
InitiatorName      : BuildVM1
InitiatorNodeName  : plang-c2.plang.nttest.microsoft.com
Interval           : 300000
Limit              : 500
PolicyId           : b145e63a-3c9e-48a8-87f8-1dfc2abfe5f4
Reservation        : 500
Status             : Ok
StorageNodeIOPS    : 475
StorageNodeLatency : 7.9725
StorageNodeName    : plang-fs1.plang.nttest.microsoft.com
TimeStamp          : 2/12/2015 2:58:49 PM
VolumeId           : 4d91fc3a-1a1e-4917-86f6-54853b2a6787
PSComputerName     :
MaximumIops        : 500
MinimumIops        : 500

Командлет Get-StorageQosFlow возвращает следующие данные:

  • Имя узла Hyper-V (InitiatorNodeName).

  • Имя виртуальной машины и ее идентификатор (InitiatorName и InitiatorId).

  • Последние средние данные производительности, наблюдаемые узлом Hyper-V для виртуального диска (InitiatorIOPS, InitiatorLatency).

  • Последние средние данные производительности, наблюдаемые кластером хранилища для виртуального диска (StorageNodeIOPS, StorageNodeLatency).

  • Текущая политика, применяемая к файлу (при наличии), и итоговая конфигурация (PolicyId, Reservation, Limit).

  • Состояние политики:

    • Ok — проблемы отсутствуют.

    • Недостаточно Throughput- Применяется политика, но минимальный объем операций ввода-вывода в секунду не может быть доставлен. Это может происходить, если минимальное значение для виртуальной машины или всех виртуальных машин не соответствует размеру тома хранилища.

    • UnknownPolicyId — политика назначена виртуальной машине на узле Hyper-V, но отсутствует на файловом сервере. Следует удалить эту политику из конфигурации виртуальной машины или создать такую же политику в кластере файловых серверов.

Просмотр данных производительности тома с помощью командлета Get-StorageQosVolume

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

PS C:\> Get-StorageQosVolume | Format-List

Interval       : 300000
IOPS           : 0
Latency        : 0
Limit          : 0
Reservation    : 0
Status         : Ok
TimeStamp      : 2/12/2015 2:59:38 PM
VolumeId       : 434f561f-88ae-46c0-a152-8c6641561504
PSComputerName :
MaximumIops    : 0
MinimumIops    : 0

Interval       : 300000
IOPS           : 1097
Latency        : 3.1524
Limit          : 0
Reservation    : 1568
Status         : Ok
TimeStamp      : 2/12/2015 2:59:38 PM
VolumeId       : 4d91fc3a-1a1e-4917-86f6-54853b2a6787
PSComputerName :
MaximumIops    : 0
MinimumIops    : 1568

Interval       : 300000
IOPS           : 5354
Latency        : 6.5084
Limit          : 0
Reservation    : 781
Status         : Ok
TimeStamp      : 2/12/2015 2:59:38 PM
VolumeId       : 0d2fd367-8d74-4146-9934-306726913dda
PSComputerName :
MaximumIops    : 0
MinimumIops    : 781

Как создать и отслеживать политики качества обслуживания хранилища

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

Создание политик качества обслуживания хранилища

Определение политик качества обслуживания хранилища и управление ими осуществляется в кластере масштабируемых файловых серверов. Вы можете создать любое необходимое количество политик для развертывания (до 10 000 на кластер хранилища).

Для каждого VHD- или VHDX-файла, назначенного виртуальной машине, можно настроить политику. Разные файлы и виртуальные машины могут использовать как одну общую, так и отдельные политики. Если для нескольких VHD- или VHDX-файлов либо нескольких виртуальных машин настроена одна политика, они будут рассматриваться вместе и между ними будет одинаково разделено минимальное и максимальное значения IOPS. Если вы используете отдельные политики для нескольких виртуальных машин либо VHD- или VHDX-файлов, минимальное и максимальное значения будут отслеживаться для них отдельно.

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

Типы политик качества обслуживания хранилища

Есть два типа политик: объединенная, или Aggregated (ранее называвшаяся SingleInstance, или одноэкземплярной), и выделенная, или Dedicated (ранее называвшаяся MultiInstance, или многоэкземплярной). Объединенные политики применяют максимальные и минимальные значения для объединенного набора VHD- или VHDX-файлов и виртуальных машин, которым они назначены. Таким образом, у них общий набор операций ввода-вывода в секунду и пропускная способность. Выделенные политики применяют максимальные и минимальные значения для каждого VHD- или VHDX-файла отдельно. Поэтому можно создать одну политику, которая применяет одинаковые ограничения к нескольким VHD- или VHDX-файлам.

Например, если вы создаете агрегированную политику с не менее чем 300 операций ввода-вывода в секунду и не более 500 операций ввода-вывода в секунду. Если применить эту политику к 5 разным файлам VHD/VHDx, убедитесь, что объединенные файлы VHD/VHDx будут гарантированы по крайней мере 300 операций ввода-вывода в секунду (если требуется, и система хранения может обеспечить эту производительность) и не более 500 операций ввода-вывода в секунду. Если файлы VHD/VHDx имеют аналогичный высокий спрос на операции ввода-вывода в секунду, а система хранения может поддерживаться, то все файлы VHD/VHDx будут получать около 100 операций ввода-вывода в секунду.

Однако если вы создаете выделенную политику с аналогичными ограничениями и применяете ее к файлам VHD/VHDx на 5 разных виртуальных машинах, каждая виртуальная машина получит по крайней мере 300 операций ввода-вывода в секунду и не более 500 операций ввода-вывода в секунду. Если виртуальные машины имеют аналогичный высокий спрос на операции ввода-вывода в секунду и система хранилища может поддерживаться, каждая виртуальная машина получит около 500 операций ввода-вывода в секунду. . Если у одной из виртуальных машин несколько VHD- или VHDX-файлов с одинаковой многоэкземплярной политикой, к ним будет применяться общее ограничение. Таким образом, общее число операций ввода-вывода в секунду для виртуальной машины из файлов с этой политикой не может превышать ограничение.

Поэтому, если у вас есть несколько VHD- или VHDX-файлов, у которых должна быть одинаковая производительность, и вы не хотите создавать несколько одинаковых политик, можно использовать одну выделенную политику, которая будет применяться к файлам каждой виртуальной машины.

Сохраняйте количество файлов VHD/VHDX, назначенных одной агрегированной политике до 20 или меньше. Этот тип политики предназначен для выполнения агрегирования с несколькими виртуальными машинами в кластере.

Создание и применение выделенной политики

Сначала используйте командлет New-StorageQosPolicy, чтобы создать политику на масштабируемом файловом сервере, как показано в следующем примере.

$desktopVmPolicy = New-StorageQosPolicy -Name Desktop -PolicyType Dedicated -MinimumIops 100 -MaximumIops 200

Затем примените ее к соответствующим жестким дискам виртуальных машин на сервере Hyper-V. Запишите значение PolicyId из предыдущего шага или сохраните его в переменной в скриптах.

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

PS C:\> $desktopVmPolicy = New-StorageQosPolicy -Name Desktop -PolicyType Dedicated -MinimumIops 100 -MaximumIops 200

C:\> $desktopVmPolicy.PolicyId

Guid
----
cd6e6b87-fb13-492b-9103-41c6f631f8e0

Используя PowerShell, на сервере Hyper-V настройте политику качества обслуживания хранилища с использованием идентификатора, как показано в следующем примере.

Get-VM -Name Build* | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID cd6e6b87-fb13-492b-9103-41c6f631f8e0

Проверка того, применяются ли политики

Используйте Get-StorageQosFlow командлет PowerShell, чтобы убедиться, что минимальное число IP-адресов и MaximumIOPS было применено к соответствующим потокам, как показано в следующем примере.

PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName |
 ft InitiatorName, Status, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize

InitiatorName Status MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ------ ----------- ----------- --------------- ------ ----
BuildVM1          Ok         100         200             250     Ok BUILDVM1.VHDX
BuildVM2          Ok         100         200             251     Ok BUILDVM2.VHDX
BuildVM3          Ok         100         200             252     Ok BUILDVM3.VHDX
BuildVM4          Ok         100         200             233     Ok BUILDVM4.VHDX
TR20-VMM          Ok          33         666               1     Ok DATA2.VHDX
TR20-VMM          Ok          33         666               5     Ok DATA1.VHDX
TR20-VMM          Ok          33         666               4     Ok BOOT.VHDX
WinOltp1          Ok           0           0               0     Ok 9914.0.AMD6...
WinOltp1          Ok           0           0            5166     Ok IOMETER.VHDX
WinOltp1          Ok           0           0               0     Ok BOOT.VHDX

На сервере Hyper-V можно также использовать скрипт Get-VMHardDiskDrivePolicy.ps1, чтобы узнать, какая политика применяется к виртуальному жесткому диску.

PS C:\> Get-VM -Name BuildVM1 | Get-VMHardDiskDrive | Format-List

Path                          : \\plang-fs.plang.nttest.microsoft.com\two\BuildWorkload
                                \BuildVM1.vhdx
DiskNumber                    :
MaximumIOPS                   : 0
MinimumIOPS                   : 0
QoSPolicyID                   : cd6e6b87-fb13-492b-9103-41c6f631f8e0
SupportPersistentReservations : False
ControllerLocation            : 0
ControllerNumber              : 0
ControllerType                : IDE
PoolName                      : Primordial
Name                          : Hard Drive
Id                            : Microsoft:AE4E3DD0-3BDE-42EF-B035-9064309E6FEC\83F8638B
                                -8DCA-4152-9EDA-2CA8B33039B4\0\0\D
VMId                          : ae4e3dd0-3bde-42ef-b035-9064309e6fec
VMName                        : BuildVM1
VMSnapshotId                  : 00000000-0000-0000-0000-000000000000
VMSnapshotName                :
ComputerName                  : PLANG-C2
IsDeleted                     : False

Запрос политик качества обслуживания хранилища

Get-StorageQosPolicy перечисляет все настроенные политики и их состояние на файловом сервере горизонтального масштабирования.

PS C:\> Get-StorageQosPolicy

Name                 MinimumIops          MaximumIops          Status
----                 -----------          -----------          ------
Default              0                    0                    Ok
Limit500             0                    500                  Ok
SilverVm             500                  500                  Ok
Desktop              100                  200                  Ok
Limit500             0                    0                    Ok
VMM                  100                  2000                 Ok
Vdi                  1                    100                  Ok

Со временем состояние может изменяться в зависимости от работы системы.

  • Ок . Все потоки, использующие ту политику, получают запрошенные минимальные значения.

  • Недостаточный путь . Один или несколько потоков, использующих эту политику, не получают минимальное число операций ввода-вывода в секунду

Можно также передать политику в командлет Get-StorageQosPolicy, чтобы получить состояние всех потоков, настроенных для использования политики.

PS C:\> Get-StorageQosPolicy -Name Desktop | Get-StorageQosFlow | ft InitiatorName, *IOPS, Status, FilePath -AutoSize

InitiatorName MaximumIops MinimumIops InitiatorIOPS StorageNodeIOPS Status FilePat
                                                                           h
------------- ----------- ----------- ------------- --------------- ------ -------
BuildVM4              100          50           187              17     Ok C:\C...
BuildVM3              100          50           194              25     Ok C:\C...
BuildVM1              200         100           195             196     Ok C:\C...
BuildVM2              200         100           193             192     Ok C:\C...
BuildVM4              200         100           187             169     Ok C:\C...
BuildVM3              200         100           194             169     Ok C:\C...

Создание объединенной политики

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

Тот же подход можно использовать для общего выделения ресурсов для всех VHD- или VHDX-файлов для виртуальных машин, составляющих службу или принадлежащих клиенту в многоузловой среде.

Процедура создания обеих политик (выделенной и объединенной) отличается лишь тем, что задаются разные типы политики.

В следующем примере показано, как на масштабируемом файловом сервере создать объединенную политику для качества обслуживания хранилища и получить ее идентификатор.

PS C:\> $highPerf = New-StorageQosPolicy -Name SqlWorkload -MinimumIops 1000 -MaximumIops 5000 -PolicyType Aggregated
[plang-fs]: PS C:\Users\plang\Documents> $highPerf.PolicyId

Guid
----
7e2f3e73-1ae4-4710-8219-0769a4aba072

В следующем примере показано, как применить политику качества обслуживания хранилища на сервере Hyper-V с использованием идентификатора, полученного в предыдущем примере.

PS C:\> Get-VM -Name WinOltp1 | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID 7e2f3e73-1ae4-4710-8219-0769a4aba072

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

PS C:\> Get-StorageQosFlow -InitiatorName WinOltp1 | format-list InitiatorName, PolicyId, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, FilePath

InitiatorName   : WinOltp1
PolicyId        : 7e2f3e73-1ae4-4710-8219-0769a4aba072
MinimumIops     : 250
MaximumIops     : 1250
StorageNodeIOPS : 0
FilePath        : C:\ClusterStorage\Volume2\SHARES\TWO\BASEVHD\9914.0.AMD64FRE.WIN
                  MAIN.141218-1718_SERVER_SERVERDATACENTER_EN-US.VHDX

InitiatorName   : WinOltp1
PolicyId        : 7e2f3e73-1ae4-4710-8219-0769a4aba072
MinimumIops     : 250
MaximumIops     : 1250
StorageNodeIOPS : 0
FilePath        : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\BOOT.VHDX

InitiatorName   : WinOltp1
PolicyId        : 7e2f3e73-1ae4-4710-8219-0769a4aba072
MinimumIops     : 1000
MaximumIops     : 5000
StorageNodeIOPS : 4550
FilePath        : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX
PS C:\> Get-StorageQosFlow -InitiatorName WinOltp1 | for
mat-list InitiatorName, PolicyId, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, FilePath

InitiatorName   : WinOltp1
PolicyId        : 7e2f3e73-1ae4-4710-8219-0769a4aba072
MinimumIops     : 250
MaximumIops     : 1250
StorageNodeIOPS : 0
FilePath        : C:\ClusterStorage\Volume2\SHARES\TWO\BASEVHD\9914.0.AMD64FRE.WIN
                  MAIN.141218-1718_SERVER_SERVERDATACENTER_EN-US.VHDX

InitiatorName   : WinOltp1
PolicyId        : 7e2f3e73-1ae4-4710-8219-0769a4aba072
MinimumIops     : 250
MaximumIops     : 1250
StorageNodeIOPS : 0
FilePath        : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\BOOT.VHDX

InitiatorName   : WinOltp1
PolicyId        : 7e2f3e73-1ae4-4710-8219-0769a4aba072
MinimumIops     : 1000
MaximumIops     : 5000
StorageNodeIOPS : 4550
FilePath        : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX

Каждый виртуальный жесткий диск будет иметь значение MinimumIOPS и MaximumIOPS и MaximumIobandwidth на основе его нагрузки. Это гарантирует, что общий объем пропускной способности, используемой для группы дисков, будет в пределах диапазона, определенного политикой. В приведенном выше примере первые два диска неактивны, а третий — до максимального количества операций ввода-вывода в секунду. Если первые два диска начинают выдавать операции ввода-вывода снова, максимальное число операций ввода-вывода третьего диска будет автоматически снижено.

Изменение имеющейся политики

Свойства Name, MinimumIOPS, MaximumIOPS и MaximumIoBandwidthcan будут изменены после создания политики. Однако изменить тип политики (объединенная или выделенная) нельзя.

Следующий командлет Windows PowerShell показывает, как изменить свойство MaximumIOPS для существующей политики:

[DBG]: PS C:\demoscripts>> Get-StorageQosPolicy -Name SqlWorkload | Set-StorageQosPolicy -MaximumIops 6000

Следующий командлет проверяет изменения:

PS C:\> Get-StorageQosPolicy -Name SqlWorkload

Name                    MinimumIops            MaximumIops            Status
----                    -----------            -----------            ------
SqlWorkload             1000                   6000                   Ok

[plang-fs1]: PS C:\Users\plang\Documents> Get-StorageQosPolicy -Name SqlWorkload | Get-Storag
eQosFlow | Format-Table InitiatorName, PolicyId, MaximumIops, MinimumIops, StorageNodeIops -A
utoSize

InitiatorName PolicyId                             MaximumIops MinimumIops StorageNodeIops
------------- --------                             ----------- ----------- ---------------
WinOltp1      7e2f3e73-1ae4-4710-8219-0769a4aba072        1500         250               0
WinOltp1      7e2f3e73-1ae4-4710-8219-0769a4aba072        1500         250               0
WinOltp1      7e2f3e73-1ae4-4710-8219-0769a4aba072        6000        1000            4507

Как определить и устранить распространенные проблемы

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

Определение виртуальных машин с недопустимыми политиками

Если удалить политику из файлового сервера до ее удаления из виртуальной машины, то виртуальная машина продолжит выполняться, как будто бы политика не была применена.

PS C:\> Get-StorageQosPolicy -Name SqlWorkload | Remove-StorageQosPolicy

Confirm
Are you sure you want to perform this action?
Performing the operation "DeletePolicy" on target "MSFT_StorageQoSPolicy (PolicyId =
"7e2f3e73-1ae4-4710-8219-0769a4aba072")".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"):

В этом случае поток будет находиться в состоянии UnknownPolicyId.

PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, Status, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize

InitiatorName          Status MinimumIops MaximumIops StorageNodeIOPS          Status File
-------------          ------ ----------- ----------- ---------------          ------ ----
                           Ok           0           0               0              Ok Def...
                           Ok           0           0              10              Ok Def...
                           Ok           0           0              13              Ok Def...
                           Ok           0           0               0              Ok Def...
                           Ok           0           0               0              Ok Def...
                           Ok           0           0               0              Ok Def...
                           Ok           0           0               0              Ok Def...
                           Ok           0           0               0              Ok Def...
                           Ok           0           0               0              Ok Def...
BuildVM1                   Ok         100         200             193              Ok BUI...
BuildVM2                   Ok         100         200             196              Ok BUI...
BuildVM3                   Ok          50          64              17              Ok WIN...
BuildVM3                   Ok          50         136             179              Ok BUI...
BuildVM4                   Ok          50         100              23              Ok WIN...
BuildVM4                   Ok         100         200             173              Ok BUI...
TR20-VMM                   Ok          33         666               2              Ok DAT...
TR20-VMM                   Ok          25         975               3              Ok DAT...
TR20-VMM                   Ok          75        1025              12              Ok BOO...
WinOltp1      UnknownPolicyId           0           0               0 UnknownPolicyId 991...
WinOltp1      UnknownPolicyId           0           0            4926 UnknownPolicyId IOM...
WinOltp1      UnknownPolicyId           0           0               0 UnknownPolicyId BOO...

Повторное создание соответствующей политики качества обслуживания хранилища

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

PS C:\> Get-StorageQosFlow -Status UnknownPolicyId | ft InitiatorName, PolicyId -AutoSize

InitiatorName PolicyId
------------- --------
WinOltp1      7e2f3e73-1ae4-4710-8219-0769a4aba072
WinOltp1      7e2f3e73-1ae4-4710-8219-0769a4aba072
WinOltp1      7e2f3e73-1ae4-4710-8219-0769a4aba072

Затем создайте политику, используя этот идентификатор.

PS C:\> New-StorageQosPolicy -PolicyId 7e2f3e73-1ae4-4710-8219-0769a4aba072 -PolicyType Aggregated -Name RestoredPolicy -MinimumIops 100 -MaximumIops 2000

Name                    MinimumIops            MaximumIops            Status
----                    -----------            -----------            ------
RestoredPolicy          100                    2000                   Ok

Наконец, убедитесь, что она применена.

PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, Status, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize

InitiatorName Status MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ------ ----------- ----------- --------------- ------ ----
                  Ok           0           0               0     Ok DefaultFlow
                  Ok           0           0               8     Ok DefaultFlow
                  Ok           0           0               9     Ok DefaultFlow
                  Ok           0           0               0     Ok DefaultFlow
                  Ok           0           0               0     Ok DefaultFlow
                  Ok           0           0               0     Ok DefaultFlow
                  Ok           0           0               0     Ok DefaultFlow
                  Ok           0           0               0     Ok DefaultFlow
                  Ok           0           0               0     Ok DefaultFlow
BuildVM1          Ok         100         200             192     Ok BUILDVM1.VHDX
BuildVM2          Ok         100         200             193     Ok BUILDVM2.VHDX
BuildVM3          Ok          50         100              24     Ok WIN8RTM_ENTERPRISE_VL...
BuildVM3          Ok         100         200             166     Ok BUILDVM3.VHDX
BuildVM4          Ok          50         100              12     Ok WIN8RTM_ENTERPRISE_VL...
BuildVM4          Ok         100         200             178     Ok BUILDVM4.VHDX
TR20-VMM          Ok          33         666               2     Ok DATA2.VHDX
TR20-VMM          Ok          33         666               2     Ok DATA1.VHDX
TR20-VMM          Ok          33         666              10     Ok BOOT.VHDX
WinOltp1          Ok          25         500               0     Ok 9914.0.AMD64FRE.WINMA...

Удаление политик качества обслуживания хранилища

Если политика была случайно удалена или если виртуальная машина была импортирована с ненужной политикой, ее можно удалить.

PS C:\> Get-VM -Name WinOltp1 | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID $null

После удаления идентификатора политики из параметров виртуального жесткого диска состояние изменится на Ok. При этом минимальные и максимальные значения применяться не будут.

PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize

InitiatorName MinimumIops MaximumIops StorageNodeIOPS Status File
------------- ----------- ----------- --------------- ------ ----
                        0           0               0     Ok DefaultFlow
                        0           0              16     Ok DefaultFlow
                        0           0              12     Ok DefaultFlow
                        0           0               0     Ok DefaultFlow
                        0           0               0     Ok DefaultFlow
                        0           0               0     Ok DefaultFlow
                        0           0               0     Ok DefaultFlow
                        0           0               0     Ok DefaultFlow
                        0           0               0     Ok DefaultFlow
BuildVM1              100         200             197     Ok BUILDVM1.VHDX
BuildVM2              100         200             192     Ok BUILDVM2.VHDX
BuildVM3                9           9              23     Ok WIN8RTM_ENTERPRISE_VL_BUILDW...
BuildVM3               91         191             171     Ok BUILDVM3.VHDX
BuildVM4                8           8              18     Ok WIN8RTM_ENTERPRISE_VL_BUILDW...
BuildVM4               92         192             163     Ok BUILDVM4.VHDX
TR20-VMM               33         666               2     Ok DATA2.VHDX
TR20-VMM               33         666               1     Ok DATA1.VHDX
TR20-VMM               33         666               5     Ok BOOT.VHDX
WinOltp1                0           0               0     Ok 9914.0.AMD64FRE.WINMAIN.1412...
WinOltp1                0           0            1811     Ok IOMETER.VHDX
WinOltp1                0           0               0     Ok BOOT.VHDX

Поиск виртуальных машин, несоответствующих требованиям политик качества обслуживания хранилища

Состояние InsufficientThroughput назначается всем потокам, которые соответствуют следующим требованиям:

  • Имеет минимальный набор операций ввода-вывода в секунду по политике; И

  • они инициируют операции ввода-вывода при достижении или превышении минимального значения;

  • они не достигают минимального значения операций ввода-вывода.

PS C:\> Get-StorageQoSflow | Sort-Object InitiatorName | ft InitiatorName, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, Status, @{Expression={$_.FilePath.Substring($_.FilePath.LastIndexOf('\')+1)};Label="File"} -AutoSize

InitiatorName MinimumIops MaximumIops StorageNodeIOPS                 Status File
------------- ----------- ----------- ---------------                 ------ ----
                        0           0               0                     Ok DefaultFlow
                        0           0               0                     Ok DefaultFlow
                        0           0              15                     Ok DefaultFlow
                        0           0               0                     Ok DefaultFlow
                        0           0               0                     Ok DefaultFlow
                        0           0               0                     Ok DefaultFlow
                        0           0               0                     Ok DefaultFlow
                        0           0               0                     Ok DefaultFlow
                        0           0               0                     Ok DefaultFlow
BuildVM3               50         100              20                     Ok WIN8RTM_ENTE...
BuildVM3              100         200             174                     Ok BUILDVM3.VHDX
BuildVM4               50         100              11                     Ok WIN8RTM_ENTE...
BuildVM4              100         200             188                     Ok BUILDVM4.VHDX
TR20-VMM               33         666               3                     Ok DATA1.VHDX
TR20-VMM               78        1032             180                     Ok BOOT.VHDX
TR20-VMM               22         968               4                     Ok DATA2.VHDX
WinOltp1             3750        5000               0                     Ok 9914.0.AMD64...
WinOltp1            15000       20000           11679 InsufficientThroughput IOMETER.VHDX
WinOltp1             3750        5000               0                     Ok BOOT.VHDX

Потоки можно определить для любого состояния, в том числе InsufficientThroughput.

PS C:\> Get-StorageQosFlow -Status InsufficientThroughput | fl

FilePath           : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX
FlowId             : 1ca356ff-fd33-5b5d-b60a-2c8659dc803e
InitiatorId        : 2ceabcef-2eba-4f1b-9e66-10f960b50bbf
InitiatorIOPS      : 12168
InitiatorLatency   : 22.983
InitiatorName      : WinOltp1
InitiatorNodeName  : plang-c1.plang.nttest.microsoft.com
Interval           : 300000
Limit              : 20000
PolicyId           : 5d1bf221-c8f0-4368-abcf-aa139e8a7c72
Reservation        : 15000
Status             : InsufficientThroughput
StorageNodeIOPS    : 12181
StorageNodeLatency : 22.0514
StorageNodeName    : plang-fs2.plang.nttest.microsoft.com
TimeStamp          : 2/13/2015 12:07:30 PM
VolumeId           : 0d2fd367-8d74-4146-9934-306726913dda
PSComputerName     :
MaximumIops        : 20000
MinimumIops        : 15000

Мониторинг состояния работоспособности с помощью службы качества обслуживания хранилища

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

Просмотр состояния хранилища с помощью командлета Debug-StorageSubSystem

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

Виртуальные машины с недопустимыми политиками

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

C:\> Get-StorageSubSystem -FriendlyName Clustered* | Debug-StorageSubSystem

EventTime                 :
FaultId                   : 0d16d034-9f15-4920-a305-f9852abf47c3
FaultingObject            :
FaultingObjectDescription : Storage QoS Policy 5d1bf221-c8f0-4368-abcf-aa139e8a7c72
FaultingObjectLocation    :
FaultType                 : Storage QoS policy used by consumer does not exist.
PerceivedSeverity         : Minor
Reason                    : One or more storage consumers (usually Virtual Machines) are
                            using a non-existent policy with id
                            5d1bf221-c8f0-4368-abcf-aa139e8a7c72. Consumer details:

                            Flow ID: 1ca356ff-fd33-5b5d-b60a-2c8659dc803e
                            Initiator ID: 2ceabcef-2eba-4f1b-9e66-10f960b50bbf
                            Initiator Name: WinOltp1
                            Initiator Node: plang-c1.plang.nttest.microsoft.com
                            File Path:
                            C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\IOMETER.VHDX
RecommendedActions        : {Reconfigure the storage consumers (usually Virtual Machines)
                            to use a valid policy., Recreate any missing Storage QoS
                            policies.}
PSComputerName            :

Потеря избыточности виртуального диска, входящего в дисковое пространство

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

PS C:\> Get-StorageSubSystem -FriendlyName Clustered*

FriendlyName                   HealthStatus                   OperationalStatus
------------                   ------------                   -----------------
Clustered Windows Storage o... Warning                        OK

[plang-fs1]: PS C:\Users\plang\Documents> Get-StorageSubSystem -FriendlyName Clustered* | Deb
ug-StorageSubSystem

EventTime                 :
FaultId                   : dfb4b672-22a6-4229-b2ed-c29d7485bede
FaultingObject            :
FaultingObjectDescription : Virtual disk 'Two'
FaultingObjectLocation    :
FaultType                 : VirtualDiskDegradedFaultType
PerceivedSeverity         : Minor
Reason                    : Virtual disk 'Two' does not have enough redundancy remaining to
                            successfully repair or regenerate its data.
RecommendedActions        : {Rebalance the pool, replace failed physical disks, or add new
                            physical disks to the storage pool, then repair the virtual
                            disk.}
PSComputerName            :

Пример скрипта для обеспечения непрерывного мониторинга качества обслуживания хранилища

В этом разделе также содержится пример скрипта для мониторинга распространенных ошибок с помощью скрипта WMI. С него разработчики могут начать извлечение событий работоспособности в режиме реального времени.

Пример скрипта:

param($cimSession)
# Register and display events
Register-CimIndicationEvent -Namespace root\microsoft\windows\storage -ClassName msft_storagefaultevent -CimSession $cimSession

while ($true)
{
     $e = (Wait-Event)
     $e.SourceEventArgs.NewEvent
     Remove-Event $e.SourceIdentifier
}

Вопросы и ответы

Как сохранить политику качества обслуживания хранилища, примененную к виртуальной машине, после перемещения ее VHD- или VHDX-файлов в другой кластер хранилища

Для указания политики в VHD- или VHDX-файле используется GUID идентификатора политики. При создании политики GUID можно задать с помощью параметра PolicyID. Если этот параметр не указан, создается случайный GUID. Поэтому можно просмотреть идентификатор политики в кластере хранилища, где на данный момент хранятся VHD- и VHDX-файлы виртуальной машины, а затем создать идентичную политику в целевом кластере хранилища и указать ей тот же GUID. При переносе файлов виртуальной машины в новые кластеры хранилища вступит в силу политика с тем же самым GUID.

Для применения политик к нескольким кластерам хранилища можно использовать System Center Virtual Machine Manager, за счет чего этот сценарий становится намного удобней.

Почему после изменения политики качества обслуживания хранилища и выполнения командлета Get-StorageQoSFlow она сразу же не вступила в силу

Если у вас есть поток, который использует максимальное значение ресурсов, определенное в политике, а затем вы изменяете политику и с помощью командлетов PowerShell сразу же определяете задержку, число операций ввода-вывода в секунду и пропускную способность, то политика вступит в силу в течение 5 минут после изменения. Новые ограничения вступят в силу в течение нескольких секунд, но командлет PowerShell Get-StorgeQoSFlow использует средние значения каждого счетчика в рамках пятиминутного скользящего окна. В противном случае, если отображалось текущее значение и вы выполнили командлет PowerShell несколько раз подряд, полученные значения могут отличаться. Это связано с тем, что значения операций ввода-вывода и задержки могут меняться каждую секунду.

Какие новые функциональные возможности были добавлены в Windows Server 2016

В Windows Server 2016 имена типов политики качества обслуживания хранилища были изменены. Многоэкземплярная политика изменена на выделенную, а одноэкземплярная — на объединенную. Управление выделенными политиками также изменено. VHD- и VHDX-файлы с одинаковой выделенной политикой, расположенные на одной и той же виртуальной машине, не будут иметь общее выделенное число операций ввода-вывода.

В Windows Server 2016 имеются две новые возможности качества обслуживания хранилища:

  • Максимальная пропускная способность

    Представленный в Windows Server 2016 компонент качества обслуживания хранилища позволяет указать максимальную пропускную способность, потребляемую потоками, которые назначены политике. В командлетах StorageQosPolicy это параметр MaximumIOBandwidth, выходные данные которого выражаются в байтах в секунду. Если задать в политике значения MaximimIops и MaximumIOBandwidth, они оба будут действительными. В этом случае число операций ввода-вывода для потоков определяет первое достигнутое ими значение.

  • Нормализация операций ввода-вывода в секунду настраивается

    Компонент качества обслуживания хранилища поддерживает возможность нормализации операций ввода-вывода в секунду. По умолчанию размер одной нормализованной операции — 8 КБ. Представленный в Windows Server 2016 компонент качества обслуживания хранилища позволяет указывать для кластера хранилища разный размер одной нормализированной операции. Этот размер влияет на все потоки в кластере хранилища и применяется непосредственно после изменения значения (в течение нескольких секунд). Минимальное значение — 1 КБ, максимальное — 4 ГБ (мы не рекомендуем устанавливать более 4 МБ, так как обычно в рамках одной операции ввода-вывода не передается более 4 МБ данных).

    Обратите внимание, что при изменении значения нормализации операций ввода-вывода в секунду в выходных данных компонента качества обслуживания хранилища после измерения числа операций ввода-вывода и пропускной способности будет отображаться разное число IOPS. Это связано с изменением расчета нормализации. При сравнении числа операций ввода-вывода в секунду в разных кластерах хранилища просмотрите значение нормализации в каждом из них, так как это имеет значение при определении числа нормализованных операций ввода-вывода в секунду.

Пример 1. Создание новой политики и просмотр максимальной пропускной способности в кластере хранилища

В PowerShell можно указать единицы измерения. В следующем примере максимальное значение пропускной способности — 10 МБ. Компонент качества обслуживания хранилища преобразует это значение и сохранит в байтах в секунду (10 МБ равно 10 485 760 байтам в секунду).

PS C:\Windows\system32> New-StorageQosPolicy -Name HR_VMs -MaximumIops 1000 -MinimumIops 20 -MaximumIOBandwidth 10MB

Name   MinimumIops MaximumIops MaximumIOBandwidth Status
----   ----------- ----------- ------------------ ------
HR_VMs 20          1000        10485760           Ok

PS C:\Windows\system32> Get-StorageQosPolicy

Name    MinimumIops MaximumIops MaximumIOBandwidth Status
----    ----------- ----------- ------------------ ------
Default 0           0           0                  Ok
HR_VMs  20          1000        10485760           Ok

PS C:\Windows\system32> Get-StorageQoSFlow | fL InitiatorName,FilePath,InitiatorIOPS,InitiatorLatency,InitiatorBandwidth

InitiatorName      : testsQoS
FilePath           : C:\ClusterStorage\Volume2\TESTSQOS\VIRTUAL HARD DISKS\TESTSQOS.VHDX
InitiatorIOPS      : 5
InitiatorLatency   : 1.5455
InitiatorBandwidth : 37888

Пример 2. Настройка параметров нормализации операций ввода-вывода в секунду и указание нового значения

В следующем примере показано, как настроить нормализацию операций ввода-вывода в секунду для кластеров хранилища (по умолчанию — 8 КБ), задать для этого параметра значение 32 КБ, а затем снова показать его. Обратите внимание, что, так как PowerShell позволяет не преобразовывать значения в байты, в этом примере можно указать значение 32 КБ. В выходных данных значение будет отображаться в байтах в секунду. Этот параметр влияет на все виртуальные машины. (Виртуальные машины, созданные на локальных томах, также затронуты.)

PS C:\Windows\system32> Get-StorageQosPolicyStore

IOPSNormalizationSize
---------------------
8192

PS C:\Windows\system32> Set-StorageQosPolicyStore -IOPSNormalizationSize 32KB
PS C:\Windows\system32> Get-StorageQosPolicyStore

IOPSNormalizationSize
---------------------
32768

См. также