次の方法で共有


永続メモリを理解してデプロイする

適用対象: Azure Stack HCI バージョン 22H2 および 21H2。Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10

永続メモリ (または PMem) は、電源サイクルを通じてコンテンツを保持し、最上位層ストレージとして使用できる新しい種類のメモリ テクノロジです。このため、PMem は "ストレージ クラス メモリ" または SCM と呼ばれると聞くことがあります。 この記事では、永続メモリの背景を説明し、Azure Stack HCI と Windows Server で最上位のストレージ層としてデプロイする方法について説明します。

永続メモリとは

永続メモリは、標準の DIMM (メモリ) スロットに収まる不揮発性メディアの一種です。 DRAM よりも低速ですが、SSD や NVMe よりも高いスループットが提供されます。 DRAM と比較して、永続メモリ モジュールははるかに大きな容量で提供され、GB あたりのコストは低くなりますが、NVMe よりもコストは高くなります。 予期しない停電、ユーザーが開始したシャットダウン、またはシステムクラッシュが発生した場合でも、システムの電源がダウンしてもメモリの内容は残ります。 つまり、永続メモリ モジュールは、超高速で永続的なストレージとして使用できます。

Azure Stack HCI と Windows Server 2019 では、キャッシュまたは容量ドライブとして永続メモリを使用できます。 ただし、価格モデルを考えると、永続メモリは、キャッシュとして、またはメモリ マッピング データ用の少量の専用ストレージとして、最も多くの値を提供します。 ほとんどの場合、永続メモリ ドライブはキャッシュ ドライブとして自動的に使用され、遅いものはすべて容量ドライブとして使用されます。 キャッシュドライブと容量ドライブの設定方法に関する詳しい情報は、"記憶域プールキャッシュの理解" および "ボリューム計画" を参照してください。

永続メモリの概念

このセクションでは、I/O のボトルネックを軽減し、パフォーマンスを向上させるために、Windows Server および Azure Stack HCI 環境に永続的なメモリをデプロイするために理解する必要がある基本的な概念について説明します。

アクセス方法

永続メモリにアクセスする方法は 2 つあります。 これらは次のとおりです。

  • アクセスをブロックします。これは、アプリの互換性のためにストレージと同様に動作します。 この構成では、通常どおり、データはファイル システムとストレージ スタックを通過します。 この構成は NTFS と ReFS と組み合わせて使用できます。ほとんどのユース ケースに推奨されます。
  • 直接アクセス (DAX)。これは、待機時間を最小限に抑えるためにメモリのように動作します。 DAX は NTFS と組み合わせてのみ使用できます。 DAX を正しく使用しないと、データが失われる可能性があります。 書き込みが破損するリスクを軽減するために、ブロック変換テーブル (BTT) 有効にした DAX を使用することを強くお勧めします。 詳細については、「DAXの理解と構成」を参照してください。

警告

DAX は、Azure Stack HCI 環境ではサポートされていません。 Azure Stack HCI では、ブロック アクセスのみがサポートされ、BTT が有効になっています。

地域

リージョンは、1 つ以上の永続メモリ モジュールのセットです。 リージョンは、多くの場合、インターリーブ セットとして作成、スループットを向上させるために複数の永続メモリ モジュールが 1 つの論理仮想アドレス空間として表示されます。 使用可能な帯域幅を増やすには、隣接する仮想アドレスが複数の永続メモリ モジュールに分散されます。 リージョンは通常、サーバー プラットフォームの BIOS で作成できます。

PmemDisks

永続メモリをストレージとして使用するには、PmemDisk を少なくとも 1 つ定義する必要があります。これは、仮想マシン (VM) 内で PmemDisk として列挙するホスト上の仮想ハード ディスク (VHD) です。 PmemDisk は、ハード ディスク パーティションや LUN のように考えることができる、連続してアドレス指定された不揮発性メモリの範囲です。 Windows PowerShell コマンドレットを使用して複数の PmemDisk を作成し、使用可能な生容量を分割できます。 各永続メモリ モジュールには、構成メタデータを格納するラベル記憶域 (LSA) が含まれています。

翻訳テーブルをブロックする

ソリッドステート ドライブとは異なり、永続メモリ モジュールは、停電やシステムの停止が発生した場合に発生する可能性がある "破損した書き込み" から保護されないため、データが危険にさらされる可能性があります。 BTT は、永続的なメモリ デバイスにアトミック セクター更新セマンティクスを提供することでこのリスクを軽減し、基本的にブロックのようなセクター書き込みを有効にして、障害シナリオで古いデータと新しいデータを混在させないようにします。 ほぼすべてのケースで BTT を有効にすることを強くお勧めします。 BTT は PmemDisk のプロパティであるため、PmemDisk の作成時に有効にする必要があります。

ブロック アクセス モードでは、すべてのデータがブロック セマンティクスを使用するため、BTT を使用することをお勧めします。 BTT は DAX モードでも役立ちます。メタデータ操作では、アプリケーションのデータ操作が使用されていなくてもブロック セマンティクスが使用されるためです。 すべてのアプリケーション操作で、DAX セマンティクスを持つメモリ マップト ファイルを使用している場合でも、メタデータ操作で引き裂かれた書き込みが発生する可能性があります。そのため、BTT をオンにすることは依然として価値があります。

サポートされているハードウェア

次の表は、Azure Stack HCI と Windows Server でサポートされている永続メモリ ハードウェアを示しています。 永続メモリは、記憶域スペース ダイレクトを含め、Windows Server 2019 で完全にサポートされています。

永続メモリ テクノロジ Windows Server 2016 Azure Stack HCI v20H2/Windows Server 2019
の NVDIMM-N を永続モードで使用する 対応 サポートされている
アプリ ダイレクト モードでの Intel Optane™ DC 永続メモリ サポートされていません サポートされています
Intel Optane™ DC 永続メモリ のメモリモードでの サポート 対応済み

Intel Optane DC 永続メモリでは、メモリ (揮発性) モードと App Direct (永続的) 動作モードの両方がサポートされます。 サーバー ワークロードの主なユース ケースであるストレージとして永続メモリ モジュールを使用するには、アプリ ダイレクト モードを使用する必要があります。 メモリ モードでは、基本的に永続メモリが低速 RAM として使用されます。これは通常、サーバー ワークロードのパフォーマンス要件を満たしていません。 メモリ モードは、メモリのようなセマンティクスを使用してアクセスできる永続ストレージ ボリュームである DAX とは異なります。

動作モードは、多くの場合、元のデバイス製造元によって事前構成されています。

手記

複数の PmemDisk に分割された複数の Intel® Optane™ 永続メモリ モジュールを App Direct モードで持つシステムを再起動すると、関連する論理ストレージ ディスクの一部またはすべてにアクセスできなくなる可能性があります。 この問題は、バージョン 1903 より古い Windows Server 2019 バージョンで発生します。

このアクセスの損失は、永続メモリ モジュールがトレーニングされていないか、システムの起動時に失敗したために発生します。 このような場合、システム上の永続メモリ モジュール上のすべての PmemDisk が失敗します。これには、障害が発生したモジュールに物理的にマップされていない PmemDisk も含まれます。

すべての PmemDisks へのアクセスを復元するには、故障したモジュール 置き換えます。

Windows Server 2019 バージョン 1903 以降のバージョンでモジュールが失敗した場合、影響を受けるモジュールに物理的にマップされている PmemDisks にのみアクセスできなくなります。他のユーザーは影響を受けません。

永続メモリを構成する

Intel Optane 永続メモリを使用している場合は、こちらのの手順に従ってください。 別のベンダーの永続メモリ モジュールを使用している場合は、そのドキュメントを参照してください。

BTT をサポートする PmemDisk を作成するには、New-VHD コマンドレットを使用します。

New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT

VHD 拡張機能は "vhdpmem" である必要があります。

また、Convert-VHD コマンドレットを使用して、BTT が有効になっていない VHD を 、有効な VHD (およびその逆) に変換することもできます。

Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem

変換後、新しい VHD は元の GUID と同じ名前空間 GUID を持ちます。 これは、特に両方が同じ VM に接続されている場合に、問題につながる可能性があります。 変換された VHD の新しい名前空間 UUID を作成するには、Set-VHD コマンドレットを使用します。

Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem

インターリーブ セットを理解する

インターリーブ セットは通常、サーバー プラットフォームの BIOS で作成して、ホスト オペレーティング システムに対して複数の永続メモリ デバイスを 1 つのディスクとして表示し、そのディスクのスループットを向上させることができます。

手記

Windows Server 2016 では、永続メモリ モジュールのインターリーブ セットはサポートされていません。

永続メモリ モジュールは、プロセッサの近くにデータを配置する標準の DIMM (メモリ) スロットに存在することを思い出してください。 この構成により、待機時間が短縮され、フェッチのパフォーマンスが向上します。 スループットをさらに向上させるために、2 つ以上の永続メモリ モジュールで n 方向インターリーブ セットが作成され、読み取り/書き込み操作がストライピングされます。 最も一般的な構成は、双方向または 4 方向のインターリーブです。

Get-PmemDisk PowerShell コマンドレットを使用して、このような論理ディスクの構成を次のように確認できます。

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

論理 PMem ディスク 2 では物理デバイス ID 20 と Id120 が使用され、論理 PMem ディスク 3 では物理デバイス ID1020 と Id1120 が使用されていることがわかります。

論理ドライブが使用するインターリーブ セットに関する詳細情報を取得するには、Get-PmemPhysicalDevice コマンドレットを実行します。

(Get-PmemDisk)[0] | Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------------
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB

「インターリーブド」セットを構成する

インターリーブ セットを構成するには、Get-PmemUnusedRegion コマンドレットを実行して、システム上の論理永続メモリ ディスクに割り当てられないすべての永続メモリ領域を確認します。

Get-PmemUnusedRegion

RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
       1     270582939648 {20, 120}
       3     270582939648 {1020, 1120}

デバイスの種類、場所、正常性、運用状態など、システム内のすべての PMem デバイス情報を表示するには、Get-PmemPhysicalDevice コマンドレットを実行します。

Get-PmemPhysicalDevice

DeviceId DeviceType           HealthStatus OperationalStatus PhysicalLocation FirmwareRevision Persistent memory size Volatile
                                                                                                                      memory size
-------- ----------           ------------ ----------------- ---------------- ---------------- ---------------------- --------------
1020     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_C1     102005310        126 GB                 0 GB
1120     Intel INVDIMM device Healthy      {Ok}              CPU2_DIMM_F1     102005310        126 GB                 0 GB
120      Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_F1     102005310        126 GB                 0 GB
20       Intel INVDIMM device Healthy      {Ok}              CPU1_DIMM_C1     102005310        126 GB                 0 GB

使用可能な未使用の PMem リージョンがあるため、新しい永続メモリ ディスクを作成できます。 次のコマンドレットを実行することで、未使用のリージョンを使用して複数の永続メモリ ディスクを作成できます。

Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.

これが完了したら、次を実行して結果を確認できます。

Get-PmemDisk

DiskNumber Size   HealthStatus AtomicityType CanBeRemoved PhysicalDeviceIds UnsafeShutdownCount
---------- ----   ------------ ------------- ------------ ----------------- -------------------
2          252 GB Healthy      None          True         {20, 120}         0
3          252 GB Healthy      None          True         {1020, 1120}      0

同じ結果を得るために Get-PmemDisk の代わりに Get-PhysicalDisk | Where MediaType -eq SCM を実行できることは注目に値します。 新しく作成された永続メモリ ディスクは、PowerShell および Windows Admin Center に表示されるドライブと 1 対 1 で対応します。

永続メモリを置き換える

失敗したモジュールを交換する必要がある場合は、PMem ディスクを再プロビジョニングする必要があります (前に説明した手順を参照してください)。

トラブルシューティングを行うときは、Remove-PmemDiskを使用する必要があります。 このコマンドレットは、特定の永続メモリ ディスクを削除します。 次のコマンドレットを実行して、現在の永続メモリ ディスクをすべて削除できます。

Get-PmemDisk | Remove-PmemDisk

cmdlet Remove-PmemDisk at command pipeline position 1
Supply values for the following parameters:
DiskNumber: 2

This will remove the persistent memory disk(s) from the system and will result in data loss.
Remove the persistent memory disk(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
Removing the persistent memory disk. This may take a few moments.

大事な

永続メモリ ディスクを削除すると、そのディスクのデータが失われます。

必要になる可能性があるもう 1 つのコマンドレットは、Initialize-PmemPhysicalDeviceです。 このコマンドレットは、物理永続メモリ デバイス上のラベル記憶域を初期化し、デバイス上の破損したラベル ストレージ情報をクリアできます。

Get-PmemPhysicalDevice | Initialize-PmemPhysicalDevice

This will initialize the label storage area on the physical persistent memory device(s) and will result in data loss.
Initializes the physical persistent memory device(s)?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): A
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.
Initializing the physical persistent memory device. This may take a few moments.

大事な

Initialize-PmemPhysicalDevice は、永続メモリのデータ損失を引き起こします。 これは、永続的なメモリ関連の問題を修正するための最後の手段としてのみ使用してください。

Microsoft Ignite 2018 での永続メモリの活用

永続メモリの利点の一部を確認するには、Microsoft Ignite 2018 のこのビデオ 見てみましょう。

フォールト トレランスを提供するストレージ システムは、必ず書き込みの分散コピーを作成します。 このような操作は、ネットワークを走査し、バックエンド書き込みトラフィックを増幅する必要があります。 このため、絶対最大の IOPS ベンチマーク番号は、通常、読み取りのみを測定することによって実現されます。特に、ストレージ システムがローカル コピーから読み取るための一般的な最適化を可能な限り備える場合です。 記憶域スペース ダイレクトは、そのように最適化されています。

読み取り操作のみを使用して測定すると、クラスターは 13,798,674 IOPS を提供しました。

ビデオを注意深く視聴すると、驚くべきは待ち時間の短さであることに気付くでしょう。 13.7 M IOPS を超える場合でも、Windows のファイル システムは、一貫して 40 μs 未満の待機時間を報告しています。 (これはマイクロ秒のシンボルで、1 秒の 100 万分の 1)。この速度は、一般的なオールフラッシュベンダーが今日誇らしげに宣伝する速度よりも桁違いに速くなります。

Windows Server 2019 の記憶域スペース ダイレクトと Intel® Optane™ DC 永続メモリを組み合わせることで、画期的なパフォーマンスが実現しました。 予測可能で非常に短い待機時間を伴う 13.7M IOPS を超えるこの HCI ベンチマークは、業界をリードする 6.7M IOPS のベンチマークの 2 倍以上です。 さらに、今回は必要なサーバー ノードが 12 個のみで、以前より 25% 少なかったのです。

テスト ハードウェアは、3 方向ミラーリングと区切り ReFS ボリュームを使用するように構成された 12 サーバー クラスターでした。 12 x Intel® S2600WFT、384 GiB メモリ、2 x 28 コア "CascadeLake" 1.5 TB Intel® Optane™ DC 永続メモリをキャッシュとして、32 TB NVMe (4 x 8 TB Intel® DC P4510) を容量として、 2 x Mellanox ConnectX-4 25 Gbps。

次の表に、パフォーマンスの完全な数値を示します。

ベンチマーク パフォーマンス
4K 100% ランダム読み取り 1,380 万 IOPS
4K 90/10% ランダム読み取り/書き込み 945 万 IOPS
2 MB 順次読み取り 549 GB/秒のスループット

次の手順

関連情報については、以下も参照してください。