Обновление встроенного ПО дисков

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

Обновление встроенного ПО для дисков исторически было сложной задачей с потенциалом простоя, поэтому мы делаем улучшения для дисковые пространства, Windows Server и Windows 10 версии 1703 и более поздних версий. Если у вас есть диски, поддерживающие новый механизм обновления встроенного ПО, включенный в Windows, можно обновить встроенное ПО дисков в рабочей среде без простоя. Однако если вы собираетесь обновить встроенное ПО рабочего диска, ознакомьтесь с нашими советами по минимизации рисков при использовании этой мощной новой функции.

Предупреждение

Обновления встроенного ПО относятся к потенциально опасным операциям обслуживания, и их следует применять только после тщательного тестирования нового образа встроенного ПО. Возможно, что использование нового встроенного ПО на неподдерживаемом оборудовании может отрицательно повлиять на надежность и стабильность и даже привести к потере данных. Администраторам следует ознакомиться с заметками о выпуске для обновления, чтобы определить его влияние и возможности применения.

Совместимость дисков

Чтобы использовать Windows Server для обновления встроенного ПО дисков, требуются поддерживаемые диски. Чтобы обеспечить общее поведение устройства, мы начали определять новые и - для Windows 10 и Windows Server 2016 - необязательные требования к аппаратному набору лабораторий (HLK) для устройств SAS, SATA и NVMe. Эти требования указывают, какие команды должно поддерживать устройство SATA, SAS или NVMe, чтобы можно было обновить встроенное ПО с помощью этих новых командлетов PowerShell, являющихся собственными по отношению к Windows. Для поддержки этих требований существует новый тест HLK, проверяющий, поддерживают ли продукты поставщика нужные команды и будут ли включать их в последующих редакциях.

Сведения о том, поддерживает ли оборудование обновление встроенного ПО диска Windows, можно получить у поставщика решения. Ниже приведены ссылки на различные требования:

Командлеты PowerShell

Два командлета, добавленные в Windows, :

  • Get-StorageFirmwareInformation
  • Update-StorageFirmware

Первый командлет предоставляет подробные сведения о возможностях устройства, образах встроенного ПО и редакциях. В данном случае компьютер содержит всего один SATA SSD с 1 слотом встроенного ПО. Приведем пример:

Get-PhysicalDisk | Get-StorageFirmwareInformation

SupportsUpdate        : True
NumberOfSlots         : 1
ActiveSlotNumber      : 0
SlotNumber            : {0}
IsSlotWritable        : {True}
FirmwareVersionInSlot : {J3E16101}

Обратите внимание, что устройства SAS всегда сообщают "SupportUpdate" как True, так как нет способа явного запроса устройства для поддержки этих команд.

Второй командлет Update-StorageFirmware позволяет администраторам обновить встроенное ПО диска с помощью файла образа, если устройство поддерживает новый механизм обновления встроенного ПО. Этот файл образа следует получить непосредственно у поставщика вычислительной техники или поставщика диска.

Примечание.

Перед обновлением любого рабочего оборудования проверьте образ встроенного ПО на аналогичном оборудовании в лабораторных условиях.

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

$pd | Update-StorageFirmware -ImagePath C:\Firmware\J3E160@3.enc -SlotNumber 0
$pd | Get-StorageFirmwareInformation

SupportsUpdate        : True
NumberOfSlots         : 1
ActiveSlotNumber      : 0
SlotNumber            : {0}
IsSlotWritable        : {True}
FirmwareVersionInSlot : {J3E160@3}

Диски обычно не выполняют запросы ввода-вывода во время активации нового образа встроенного ПО. Время, требуемое для активации диска, зависит от его конструкции и типа обновляемого встроенного ПО. По нашим наблюдениям, этот период составляет от менее чем 5 секунд до более чем 30 секунд.

Этот диск выполнил обновление встроенного ПО примерно за 5,8 секунды, как показано ниже:

Measure-Command {$pd | Update-StorageFirmware -ImagePath C:\\Firmware\\J3E16101.enc -SlotNumber 0}

 Days : 0
 Hours : 0
 Minutes : 0
 Seconds : 5
 Milliseconds : 791
 Ticks : 57913910
 TotalDays : 6.70299884259259E-05
 TotalHours : 0.00160871972222222
 TotalMinutes : 0.0965231833333333
 TotalSeconds : 5.791391
 TotalMilliseconds : 5791.391

Обновление дисков в рабочей среде

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

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

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

  2. Установите встроенное ПО на сервере в лабораторных условиях, содержащем идентичные диски (включая редакцию диска, когда доступно несколько таких редакций), и протестируйте диск под нагрузкой с новым встроенным ПО. Сведения об этом искусственном нагрузочном тестировании см. в разделе Тестирование производительности дисковых пространств с помощью искусственных рабочих нагрузок.

Автоматические обновления встроенного ПО с локальными дисковыми пространствами

Windows Server 2016 содержит службу работоспособности для развертываний локальных дисковых пространств (включая решения Microsoft Azure Stack). Основным назначением службы работоспособности является упрощение мониторинга развертывания оборудования и управления им. Среди ее функций управления присутствует возможность развертывания встроенного ПО диска для всего кластера без отключения каких-либо рабочих нагрузок или возникновения простоев. Эта возможность управляется политикой с помощью элемента управления в руках администратора.

Использование службы работоспособности для развертывания встроенного ПО по всему кластеру не вызывает сложностей и состоит из следующих шагов:

  • Определите, какие диски HDD и SSD должны входить в состав кластера локальных дисковых пространств и поддерживают ли эти диски обновления встроенного ПО в Windows.
  • Укажите эти диски в XML-файле поддерживаемых компонентов.
  • Определите, какие версии встроенного ПО могут иметь эти диски, в XML-файле поддерживаемых компонентов (включая пути к расположению образов встроенного ПО).
  • Отправьте XML-файл в базу данных кластера.

На этом этапе служба работоспособности проверяет и анализирует XML-файл и выявляет диски без требуемой версии встроенного ПО. Затем она перенаправит операции ввода-вывода от затронутых дисков, перейдя в режим взаимодействия между узлами, и обновит их встроенное ПО. Устойчивость кластера локальных дисковых пространств обеспечивается путем распределения данных по нескольким узлам сервера. Служба работоспособности может изолировать весь узел с дисками, требующими обновление. После обновления узла инициируется восстановление в дисковых пространствах, при котором восстанавливается синхронизация всех копий данных в кластере друг с другом. Только после этого осуществляется переход к следующему узлу. При развертывании встроенного ПО дисковые пространства могут переходить в режим "снижения производительности", что является нормальным и ожидаемым явлением.

Чтобы обеспечить стабильное развертывание и достаточное время для проверки нового образа встроенного ПО, между обновлениями нескольких серверов присутствует значительная задержка. По умолчанию служба работоспособности ожидает 7 дней перед обновлением второго сервера. Все последующие обновления серверов (третьего, четвертого и т. д.) выполняются с задержкой в 1 день. Если администратор находит встроенное ПО нестабильным или нежелательным по иным причинам, он может в любое время остановить дальнейшее развертывание службой работоспособности. Если встроенное ПО прошло предварительную проверку и требуется ускорить развертывание, можно уменьшить эти значения по умолчанию с дней до часов или минут.

Ниже приведен пример XML-файла поддерживаемых компонентов для универсального кластера локальных дисковых пространств:

 <Components>
     <Disks>
        <Disk>
            <Manufacturer>Contoso</Manufacturer>
            <Model>XYZ9000</Model>
            <AllowedFirmware>
              <Version>2.0</Version>
              <Version>2.1>/Version>
              <Version>2.2</Version>
            </AllowedFirmware>
            <TargetFirmware>
              <Version>2.2</Version>
              <BinaryPath>\\path\to\image.bin</BinaryPath>
            </TargetFirmware>
        </Disk>
        ...
        ...
    </Disks>
 </Components>

Чтобы обеспечить запуск развертывания нового встроенного ПО в этом кластере локальных дисковых пространств, просто отправьте этот XML-файл в базу данных кластера:

$SpacesDirect = Get-StorageSubSystem Clus*

$CurrentDoc = $SpacesDirect | Get-StorageHealthSetting -Name "System.Storage.SupportedComponents.Document"

$CurrentDoc.Value | Out-File <Path>

Измените файл в любом редакторе, например Visual Studio Code или "Блокнот", а затем сохраните его.

$NewDoc = Get-Content <Path> | Out-String

$SpacesDirect | Set-StorageHealthSetting -Name "System.Storage.SupportedComponents.Document" -Value $NewDoc

Часто задаваемые вопросы

Также см. сведения об устранении неполадок обновлений встроенного ПО диска.

Будет ли эта функция работать на любом запоминающем устройстве?

Эта функция будет работать на запоминающих устройствах, во встроенном ПО которых реализованы нужные команды. Командлет Get-служба хранилища FirmwareInformation показывает, действительно ли встроенное ПО диска поддерживает правильные команды (для SATA/NVMe), а тест HLK позволяет поставщикам и изготовителям оборудования проверить это поведение.

После обновления диска SATA он сообщает, что больше не поддерживает механизм обновления. С диском что-то не так?

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

Можно ли обновить встроенное ПО моей сети SAN с помощью этого механизма?

Нет. Сети SAN обычно имеют собственные служебные программы и интерфейсы для подобных операций обслуживания. Этот новый механизм предназначен непосредственно для запоминающих устройств, подключаемых напрямую, таких как SATA, SAS или NVMe.

Откуда можно получить образ встроенного ПО?

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

Будет ли эта функция работать на кластеризованных дисках?

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

Что происходит при обновлении встроенного ПО в дисковых пространствах?

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

Что произойдет в случае сбоя обновления?

Обновление может завершиться сбоем по различным причинам, некоторые из них: 1) Диск не поддерживает правильные команды для Windows для обновления встроенного ПО. В этом случае новый образ встроенного ПО никогда не активируется, и диск продолжает работать со старым образом. 2) Не удается скачать образ или применить его к диску (несоответствие версий, повреждение образа и т. д). В этом случае диск выполняет команду активации с ошибкой. При этом старый образ по-прежнему продолжит работать.

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

Дополнительные сведения см. в разделе "Устранение неполадок обновлений встроенного ПО диска".

Как остановить выполняемое развертывание встроенного ПО?

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

Get-StorageSubSystem Cluster* | Set-StorageHealthSetting -Name "System.Storage.PhysicalDisk.AutoFirmwareUpdate.RollOut.Enabled" -Value false

Во время развертывания я вижу ошибку "Отказано в доступе" или "путь не найден". исправление Разделы справки

Убедитесь, что образ встроенного ПО, который вы хотите использовать для обновления, доступен для всех узлов кластера. Для этого проще всего поместить его в общий том кластера.