Качество обслуживания для хранилища
Представленный в 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. В кластер файловых серверов добавлен новый диспетчер политик, который обеспечивает централизованный мониторинг производительности хранилища.
Рис. 1. Использование качества обслуживания хранилища в программно-определяемом решении хранилища в масштабируемом файловом сервере
Так как серверы 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, а также значение пропускной способности являются общими для всех потоков, которым назначена политика. Все виртуальные жесткие диски, назначенные политике в этой системе хранения, имеют единое выделение пропускной способности ввода-вывода для всех общих ресурсов. |
Выделенные | Тип политики, в котором для отдельных виртуальных жестких дисков или виртуальных жестких дисков управляется указанный минимальный и максимальный диапазон пропускной способности. |
Как настроить службу качества обслуживания хранилища и выполнять мониторинг базовых показателей производительности
В этом разделе показано, как включить новый компонент качества обслуживания хранилища и отслеживать производительность хранилища без применения пользовательских политик.
Настройка компонента качества обслуживания хранилища в кластере хранилища
В этом разделе вы узнаете, как настроить службу качества обслуживания хранилища в новом или имеющемся отказоустойчивом кластере и масштабируемом файловом сервере, на котором работает Windows Server 2016.
Настройка компонента качества обслуживания хранилища в новой системе
Если в Windows Server 2016 настроен новый отказоустойчивый кластер и общий том кластера (CSV), компонент качества обслуживания хранилища будет настроен автоматически.
Проверка установки компонента качества обслуживания хранилища
После создания отказоустойчивого кластера и настройки CSV-диска ресурс качества обслуживания хранилища отображается как основной ресурс кластера и отображается как в диспетчере отказоустойчивых кластеров и Windows PowerShell. Таким образом, система отказоустойчивого кластера будет управлять этим ресурсом без вашего вмешательства. Этот ресурс отображается и в диспетчере отказоустойчивости кластеров, и в PowerShell для согласованности с другими ресурсами системы отказоустойчивого кластера, такими как новая служба работоспособности.
Рис. 2. Ресурс качества обслуживания хранилища, отображаемый как основной ресурс кластера в диспетчере отказоустойчивых кластеров
Чтобы просмотреть состояние ресурса качества обслуживания хранилища, воспользуйтесь следующим командлетом 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 и производительности хранилища: измерение операций ввода-вывода в секунду, пропускная способность и задержка для локальных дисков и общих папок SMB.
Примеры сценариев, показанных в этом руководстве, включают пять виртуальных машин. На виртуальных машинах 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 : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
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 на кластер хранилища).
Каждый 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
----
1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
Используя PowerShell, на сервере Hyper-V настройте политику качества обслуживания хранилища с использованием идентификатора, как показано в следующем примере.
Get-VM -Name Build* | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
Проверка того, применяются ли политики
Используйте 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 : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
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
----
1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
В следующем примере показано, как применить политику качества обслуживания хранилища на сервере Hyper-V с использованием идентификатора, полученного в предыдущем примере.
PS C:\> Get-VM -Name WinOltp1 | Get-VMHardDiskDrive | Set-VMHardDiskDrive -QoSPolicyID 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
В следующем примере показано, как просматривать эффекты политики качества обслуживания хранилища с файлового сервера:
PS C:\> Get-StorageQosFlow -InitiatorName WinOltp1 | format-list InitiatorName, PolicyId, MinimumIOPS, MaximumIOPS, StorageNodeIOPS, FilePath
InitiatorName : WinOltp1
PolicyId : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
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 : 2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6
MinimumIops : 250
MaximumIops : 1250
StorageNodeIOPS : 0
FilePath : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\BOOT.VHDX
InitiatorName : WinOltp1
PolicyId : 3cccccc3-4dd4-5ee5-6ff6-7aaaaaaaaaa7
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 : 4dddddd4-5ee5-6ff6-7aa7-8bbbbbbbbbb8
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 : 5eeeeee5-6ff6-7aa7-8bb8-9cccccccccc9
MinimumIops : 250
MaximumIops : 1250
StorageNodeIOPS : 0
FilePath : C:\ClusterStorage\Volume3\SHARES\THREE\WINOLTP1\BOOT.VHDX
InitiatorName : WinOltp1
PolicyId : 6ffffff6-7aa7-8bb8-9cc9-0dddddddddd0
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 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5 1500 250 0
WinOltp1 2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6 1500 250 0
WinOltp1 3cccccc3-4dd4-5ee5-6ff6-7aaaaaaaaaa7 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 =
"1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5")".
[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 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
WinOltp1 2bbbbbb2-3cc3-4dd4-5ee5-6ffffffffff6
WinOltp1 3cccccc3-4dd4-5ee5-6ff6-7aaaaaaaaaa7
Затем создайте политику, используя этот идентификатор.
PS C:\> New-StorageQosPolicy -PolicyId 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5 -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 : 1aaaaaa1-2bb2-3cc3-4dd4-5eeeeeeeeee5
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 имеет значение OК.
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