ドライブのファームウェアの更新Updating drive firmware

適用対象:Windows Server 2019、Windows Server 2016、Windows 10Applies to: Windows Server 2019, Windows Server 2016, Windows 10

従来、ドライブのファームウェア更新は、ダウンタイムが発生する可能性があり、面倒な作業でした。記憶域スペースと Windows Server、Windows 10 バージョン 1703 以降を改善しているのはそのためです。Updating the firmware for drives has historically been a cumbersome task with a potential for downtime, which is why we're making improvements to Storage Spaces, Windows Server, and Windows 10, version 1703 and newer. 新しいファームウェアの更新メカニズムをサポートするハード ドライブが Windows に含まれている場合、運用環境のドライブでもダウンタイムなしでドライブのファームウェアを更新できます。If you have drives that support the new firmware update mechanism included in Windows, you can update drive firmware of in-production drives without downtime. ただし、運用環境のドライブのファームウェアを更新する場合、この強力な新機能を使用しながらリスクを最小限に抑える方法について、ここで説明するヒントを必ずご覧ください。However, if you're going to update the firmware of a production drive, make sure to read our tips on how to minimize the risk while using this powerful new functionality.

警告

ファームウェアの更新は危険な可能性があるメンテナンス操作なので、必ず新しいファームウェア イメージを徹底してテストした後で適用する必要があります。Firmware updates are a potentially risky maintenance operation and you should only apply them after thorough testing of the new firmware image. サポートされないハードウェアの新しいファームウェアは、信頼性と安定性に悪影響を及ぼし、さらにはデータを損失する可能性もあります。It is possible that new firmware on unsupported hardware could negatively affect reliability and stability, or even cause data loss. 管理者は、更新プログラムに付属するリリース ノートを読み、影響と適用可能性を判断する必要があります。Administrators should read the release notes a given update comes with to determine its impact and applicability.

ドライブの互換性Drive compatibility

Windows Server を使用してドライブのファームウェアを更新するには、サポートされるドライブが必要です。To use Windows Server to update drive firmware, you must have supported drives. デバイスの共通の動作を確保するため、マイクロソフトではまず、SAS、SATA、NVMe デバイスに対応する新しい (Windows 10 と Windows Server 2016 用の) オプションのハードウェア ラボ キット (HLK) について要件を定義しました。To ensure common device behavior, we began by defining new and - for Windows 10 and Windows Server 2016 - optional Hardware Lab Kit (HLK) requirements for SAS, SATA, and NVMe devices. この要件では、新しい Windows ネイティブ PowerShell コマンドレットを使用してファームウェアを更新するために、SATA、SAS、NVMe デバイスがサポートする必要があるコマンドの概要を示します。These requirements outline which commands a SATA, SAS, or NVMe device must support to be firmware-updatable using these new, Windows-native PowerShell cmdlets. この要件をサポートするために、ベンダー製品が適切なコマンドをサポート、今後のリビジョンで実装できるかどうかを検証する新しい HLK テストがあります。To support these requirements, there is a new HLK test to verify if vendor products support the right commands and get them implemented in future revisions.

お使いのハードウェアが、Windows によるドライブのファームウェア更新をサポートしているかどうかについては、ソリューション ベンダーに問い合わせてください。Contact your solution vendor for info about whether your hardware supports Windows updating the drive firmware. 次に、多様な要件のリンクを示します。Here are links to the various requirements:

PowerShell コマンドレットPowerShell cmdlets

Windows に次の 2 つのコマンドレットが追加されました。The two cmdlets added to Windows are:

  • Get-StorageFirmwareInformationGet-StorageFirmwareInformation
  • Update-StorageFirmwareUpdate-StorageFirmware

1 つ目のコマンドレットは、デバイスの機能、ファームウェア イメージ、リビジョンに関する詳細情報を返します。The first cmdlet provides you with detailed information about the device's capabilities, firmware images, and revisions. この場合、コンピューターには 1 つのファームウェア スロットがある 1 台の SATA SSD のみが搭載されています。In this case, the machine only contains a single SATA SSD with 1 firmware slot. 次に例を示します。Here's an example:

Get-PhysicalDisk | Get-StorageFirmwareInformation

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

SAS デバイスは常に “SupportsUpdate” を “True” とレポートすることに注意してください。これは、これらのコマンドのサポートをデバイスに明示的にクエリする方法がないためです。Note that SAS devices always report "SupportsUpdate" as "True", since there is no way of explicitly querying the device for support of these commands.

ドライブが新しいファームウェアの更新メカニズムをサポートしている場合、管理者は、2 つ目の Update-StorageFirmware で、イメージ ファイルを使用してドライブのファームウェアを更新することができます。The second cmdlet, Update-StorageFirmware, enables administrators to update the drive firmware with an image file, if the drive supports the new firmware update mechanism. このイメージ ファイルは、OEM またはドライブ ベンダーから直接入手する必要があります。You should obtain this image file from the OEM or drive vendor directly.

注意

運用環境のハードウェアを更新する前に、ラボ設定で運用環境と同じハードウェアに対してそのファームウェア イメージをテストします。Before updating any production hardware, test the particular firmware image on identical hardware in a lab setting.

ドライブでは、まず新しいファームウェア イメージが内部ステージング領域に読み込まれます。The drive will first load the new firmware image to an internal staging area. 通常、この処理中も I/O は継続されます。While this happens, I/O typically continues. イメージはダウンロード後にアクティブ化されます。The image activates after downloading. この処理の間、内部のリセットが発生するので、ドライブは I/O コマンドに応答しなくなります。During this time the drive will not be able to respond to I/O commands as an internal reset occurs. つまり、アクティブ化中にこのドライブはデータを提供しません。This means that this drive serves no data during the activation. このドライブ上のデータにアクセスするアプリケーションは、ファームウェアのアクティブ化が完了するまで応答を待つことになります。An application accessing data on this drive would have to wait for a response until the firmware activation completes. このコマンドレットの実行例を以下に示します。Here's an example of the cmdlet in action:

$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}

一般的に、ドライブが新しいファームウェア イメージをアクティブ化するときに、ドライブは I/O 要求を完了しません。Drives typically do not complete I/O requests when they activate a new firmware image. ドライブがアクティブ化するまでにかかる時間は、ドライブの設計と更新するファームウェアの種類によって変わります。How long a drive takes to activate depends on its design and the type of firmware you update. 更新にかかる実測時間は 5 秒未満から 30 秒超でした。We have observed update times range from fewer than 5 seconds to more than 30 seconds.

このドライブは、次のように、5.8 秒以内でファームウェアの更新を完了しました。This drive performed the firmware update within ~5.8 seconds, as shown here:

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

運用環境のドライブを更新するUpdating drives in production

運用環境にサーバーを展開する前に、お使いのソリューション (記憶域エンクロージャ、ドライブ、サーバー) を販売し、サポートしているハードウェア ベンダーまたは OEM から推奨されるファームウェアにドライブのファームウェアを更新することを強くお勧めします。Before placing a server into production, we highly recommend updating the firmware of your drives to the firmware recommended by the hardware vendor or OEM that sold and supports your solution (storage enclosures, drives, and servers).

運用環境へのサーバーの展開後は、サーバーに対する変更を実際に対応できる範囲に抑えることをお勧めします。Once a server is in production, it's a good idea to make as few changes to the server as is practical. ただし、ドライブに非常に重要なファームウェアの更新プログラムがあるとソリューション ベンダーからアドバイスされることがあります。However, there may be times when your solution vendor advises you that there is a critically important firmware update for your drives. このような場合、ドライブのファームウェアの更新プログラムを適用する前に、推奨される手順を次に示します。If this occurs, here are a few good practices to follow before applying any drive firmware updates:

  1. ファームウェアのリリース ノートを読み、実際の環境に影響をもたらす可能性がある問題に更新プログラムが対処していること、実際の環境に悪影響を及ぼす可能性がある既知の問題がファームウェアに含まれていないことを確認します。Review the firmware release notes and confirm that the update addresses issues that could affect your environment, and that the firmware doesn't contain any known issues that could adversely affect you.

  2. ラボに同じドライブを搭載したサーバーにファームウェアをインストールし (そのドライブに複数のリビジョンがある場合はリビジョンも同じにします)、新しいファームウェアで負荷をかけてドライブをテストします。Install the firmware on a server in your lab that has identical drives (including the revision of the drive if there are multiple revisions of the same drive), and test the drive under load with the new firmware. 合成負荷テストの実行については、「Windows Server で合成ワークロードを使用した記憶域スペースのパフォーマンスのテスト」を参照してください。For info about doing synthetic load testing, see Test Storage Spaces Performance Using Synthetic Workloads.

記憶域スペース ダイレクトでの自動ファームウェア更新Automated firmware updates with Storage Spaces Direct

Windows Server 2016 には、記憶域スペース ダイレクト展開 (Microsoft Azure Stack ソリューションを含む) 向けのヘルス サービスが含まれています。Windows Server 2016 includes a Health Service for Storage Spaces Direct deployments (including Microsoft Azure Stack solutions). ヘルス サービスの主な目的は、ハードウェア展開の監視と管理を容易にすることです。The main purpose of the Health Service is to make monitoring and management of your hardware deployment easier. 管理機能の一部として、ワークロードをオフラインにしたり、ダウンタイムを発生させたりせずに、ドライブのファームウェアをクラスター全体にロールアウトする機能があります。As part of its management functions, it has the capability to roll-out drive firmware across an entire cluster without taking any workloads offline or incurring downtime. この機能はポリシーに基づいて動作し、管理者が制御できます。This capability is policy-driven, with the control in the admin's hands.

ヘルス サービスを使用してクラスター全体にファームウェアをロールアウトする作業は、以下の手順で簡単に実行できます。Using the Health Service to roll-out firmware across a cluster is very simple and involves the following steps:

  • 記憶域スペース ダイレクト クラスターに追加する HDD ドライブと SSD ドライブを決め、Windows によるファームウェアの更新をドライブがサポートしているかどうかを確認しますIdentify what HDD and SSD drives you expect to be part of your Storage Spaces Direct cluster, and whether the drives support Windows performing firmware updates
  • サポートされるコンポーネントの XML ファイルに追加するドライブの一覧を作成しますList those drives in the Supported Components xml file
  • サポートされるコンポーネントの XML に、そのドライブの目的のファームウェア バージョンを指定します (ファームウェア イメージの場所のパスを含めます)Identify the firmware versions you expect those drives to have in the Supported Components xml (including location paths of the firmware images)
  • XML ファイルをクラスター DB にアップロードしますUpload the xml file to the cluster DB

この時点で、ヘルス サービスは XML を検査して解析し、目的のファームウェア バージョンが展開されていないドライブを特定します。At this point, the Health Service will inspect and parse the xml and identify any drives that do not have the desired firmware version deployed. 次に、影響を受けるドライブから (ノードごとに) I/O をリダイレクトし、ドライブ上のファームウェアを更新します。It will then proceed to re-direct I/O away from the affected drives – going node-by-node – and updating the firmware on them. 記憶域スペース ダイレクト クラスターは、複数のサーバー ノードにデータを分散させることで、回復性を実現します。ヘルス サービスによって、ドライブを更新する価値があるノード全体を分離できます。A Storage Spaces Direct cluster achieves resiliency by spreading data across multiple server nodes; it is possible for the health service to isolate an entire node worth of drives for updates. ノードが更新されると、記憶域スペースの修復が開始され、すべてのデータのコピーが相互に同期を保った状態でクラスターに戻されてから、次のノードに進みます。Once a node updates, it will initiate a repair in Storage Spaces, bringing all copies of data across the cluster back in sync with each other, before moving on to the next node. ファームウェアのロール アウト中に、記憶域スペースの処理が "デグレード" モードに移行することが予想されます。そしてそれは通常のことです。It is expected and normal for Storage Spaces to transition to a "degraded" mode of operation while firmware is rolled out.

新しいファームウェア イメージの安定したロールアウトと十分な検証時間を確保するために、複数のサーバーを更新する間隔は長く設定されています。To ensure a stable roll-out and sufficient validation time of a new firmware image, there exists a significant delay between the updates of several servers. 既定では、ヘルスサービスは 2ndサーバーを更新する前に7日間待機します。Per default, the Health Service will wait 7 days before updating the 2nd server. 後続のサーバー (3rd、4番目、...) は、1日の遅延で更新されます。Any subsequent server (3rd, 4th, …) updates with a 1 day delay. 管理者がファームウェアを不安定、または望ましくないと判断した場合、いつでもヘルス サービスで以降のロールアウトを停止できます。Should an administrator find the firmware to be unstable or otherwise undesirable, she can stop further roll-out by the health service at any time. ファームウェアが検証済みで、迅速なロールアウトが望ましい場合、これらの既定値を日単位から時間単位や分単位に変更できます。If the firmware has been previously validated and a quicker roll-out is desired, these default values can be modified from days, to hours or minutes.

次に、一般的な記憶域スペース ダイレクト クラスター向けのサポートされるコンポーネントの XML 例を示します。Here is an example of the supported components xml for a generic Storage Spaces Direct cluster:

 <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 をクラスター DB にアップロードします。To get the roll-out of the new firmware started in this Storage Spaces Direct cluster, simply upload the .xml to the cluster DB:

$SpacesDirect = Get-StorageSubSystem Clus*

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

$CurrentDoc.Value | Out-File <Path>

Visual Studio Code、メモ帳など、好みのエディターでファイルを編集し、保存します。Edit the file in your favorite editor, such as Visual Studio Code or Notepad, then save it.

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

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

ヘルスサービスの動作を確認し、そのロールアウト機構の詳細については、次のビデオを参照してください。 https://channel9.msdn.com/Blogs/windowsserver/Update-Drive-Firmware-Without-Downtime-in-Storage-Spaces-DirectIf you would like to see the Health Service in action and learn more about its roll-out mechanism, have a look at this video: https://channel9.msdn.com/Blogs/windowsserver/Update-Drive-Firmware-Without-Downtime-in-Storage-Spaces-Direct

よく寄せられる質問Frequently asked questions

ドライブのファームウェア更新のトラブルシューティング」もご覧ください。Also see Troubleshooting drive firmware updates.

この方法は任意の記憶域デバイスで使用できますかWill this work on any storage device

ファームウェアに正しいコマンドが実装されている記憶域デバイスで使用できます。This will work on storage devices that implement the correct commands in their firmware. ドライブのファームウェアが (SATA/NVMe の) 正しいコマンドを実際にサポートしているかどうかは、Get-StorageFirmwareInformation コマンドレットを実行して確認できます。また、ベンダーと OEM は HLK テストを使用してこの動作をテストできます。The Get-StorageFirmwareInformation cmdlet will show if a drive's firmware indeed does support the correct commands (for SATA/NVMe) and the HLK test allows vendors and OEMs to test this behavior.

SATA ドライブを更新すると、その更新メカニズムはサポートされなくなったとレポートされます。After I update a SATA drive, it reports to no longer support the update mechanism. ドライブに何か問題があるのでしょうかIs something wrong with the drive

いいえ。新しいファームウェアのインストール後に更新ができなくなった場合を除き、ドライブに問題はありません。No, the drive is fine, unless the new firmware doesn't allow updates anymore. これは、キャッシュされたバージョンのドライブの機能が正しくないという既知の問題です。You are hitting a known issue whereby a cached version of the drive's capabilities is incorrect. “Update-StorageProviderCache -DiscoveryLevel Full” を実行すると、ドライブの機能が再列挙され、キャッシュされたコピーが更新されます。Running "Update-StorageProviderCache -DiscoveryLevel Full" will re-enumerate the drive capabilities and update the cached copy. 回避策として、上記のコマンドを 1 回実行してから、ファームウェアの更新を開始するか、スペース ダイレクト クラスターでロールアウトを完了することをお勧めします。As a work-around, we recommend running the above command once before initiating a firmware update or complete roll-out on a Spaces Direct cluster.

このメカニズムで SAN のファームウェアを更新できますかCan I update firmware on my SAN through this mechanism

いいえ。通常、SAN には、メンテナンス操作用に独自のユーティリティとインターフェイスがあります。No - SANs usually have their own utilities and interfaces for such maintenance operations. この新しいメカニズムは、SATA、SAS、NVMe デバイスなど、直接接続されている記憶域向けです。This new mechanism is for directly attached storage, such as SATA, SAS, or NVMe devices.

ファームウェア イメージはどこで入手できますかFrom where do I get the firmware image

ファームウェアは、常にお使いの OEM、ソリューション、ベンダー、またはドライブ ベンダーから直接に入手し、他の入手先からはダウンロードしないでください。You should always obtain any firmware directly from your OEM, solution vendor, or drive vendor and not download it from other parties. Windows には、ドライブにイメージを取得するメカニズムがありますが、イメージの整合性を検証する機能はありません。Windows provides the mechanism to get the image to the drive, but cannot verify its integrity.

この方法はクラスター化されたドライブで使用できますかWill this work on clustered drives

このコマンドレットは、クラスター化されたドライブ上でも動作しますが、ヘルス サービスの調整によって実行中のワークロードに対する I/O の影響を軽減することに留意してください。The cmdlets can perform their function on clustered drives as well, but keep in mind that the Health Service orchestration mitigates the I/O impact on running workloads. クラスター化されたドライブに対してコマンドレットを直接使用すると、I/O が遅延する可能性があります。If the cmdlets are used directly on clustered drives, I/O is likely to stall. 一般的に、基になるドライブに対するワークロードがないか、最小限の場合に、ドライブのファームウェア更新を行うことがベスト プラクティスです。In general, it is a best practice to perform drive firmware updates when there is no, or just a minimal workload on the underlying drives.

記憶域スペースのファームウェアを更新すると、どうなりますかWhat happens when I update firmware on Storage Spaces

記憶域スペース ダイレクトにヘルス サービスを展開した Windows Server 2016 の場合、ドライブが Windows Server によるファームウェアの更新をサポートしていれば、ワークロードをオフラインすることなく、この操作を実行できます。On Windows Server 2016 with the Health Service deployed on Storage Spaces Direct, you can perform this operation without taking your workloads offline, assuming the drives support Windows Server updating the firmware.

更新が失敗すると、どうなりますかWhat happens if the update fails

この更新は、さまざまな理由で失敗する可能性があります。その一部を次に示します。1) ドライブは、Windows がファームウェアを更新するための適切なコマンドをサポートしていません。The update could fail for various reasons, some of them are: 1) The drive doesn't support the correct commands for Windows to update its firmware. この場合、新しいファームウェア イメージはアクティブ化されず、ドライブの動作には引き続き古いイメージが使用されます。In this case the new firmware image never activates and the drive continues functioning with the old image. 2) イメージをそのドライブにダウンロードできないか、ドライブに適用できません (バージョンの不一致、破損したイメージなど)。2) The image cannot download to or be applied to this drive (version mismatch, corrupt image, …). この場合、ドライブはアクティブ化コマンドに失敗します。In this case the drive fails the activate command. この場合も、ドライブの動作には引き続き古いイメージが使用されます。Again, the old firmware image will continue function.

ファームウェアの更新後にドライブがまったく応答しない場合、ドライブ ファームウェア自体のバグが発生している可能性があります。If the drive does not respond at all after a firmware update, you are likely hitting a bug in the drive firmware itself. ラボ環境ですべてのファームウェア更新プログラムをテストしてから、運用環境に展開してください。Test all firmware updates in a lab environment before putting them in production. 唯一の解決策はドライブの交換のみの可能性があります。The only remediation may be to replace the drive.

詳しくは、「ドライブのファームウェア更新のトラブルシューティング」をご覧ください。For more info, see Troubleshooting drive firmware updates.

進行中のファームウェアのロールアウトを停止するにはどうすればよいですかHow do I stop an in-progress firmware roll-out

PowerShell の次のコマンドレットでロールアウトを無効にします。Disable the roll-out in PowerShell via:

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

ロールアウト中にアクセス拒否エラーや、パスが見つからないエラーが発生します。解決方法を教えてくださいI am seeing an access denied or path-not-found error during roll out. How do I fix this

更新に使用するファームウェア イメージにすべてのクラスター ノードからアクセスできるようにします。Ensure that the firmware image you would like to use for the update is accessible by all cluster nodes. 最も簡単な方法は、クラスター共有ボリュームに配置することです。The easiest way to ensure this is to place it on a cluster shared volume.