永続メモリの理解と配置Understand and deploy persistent memory

適用対象:Windows Server 2019Applies to: Windows Server 2019

永続メモリ (または PMem) は、手頃な価格の大きな容量と永続性を備えた一意の組み合わせを提供する新しい種類のメモリテクノロジです。Persistent Memory (or PMem) is a new type of memory technology that delivers a unique combination of affordable large capacity and persistence. このトピックでは、PMem の背景と、記憶域スペースダイレクトで Windows Server 2019 を使用して展開する手順について説明します。This topic provides background on PMem and the steps to deploy it with Windows Server 2019 with Storage Spaces Direct.

背景情報Background

PMem は、電力サイクルを通じてコンテンツを保持する非揮発性 RAM (NVDIMM) の一種です。PMem is a type of non-volatile RAM (NVDIMM) that retains its content through power cycles. 予期しない停電、ユーザーによるシャットダウン、システムクラッシュなどが発生した場合でも、システムの電源が切れた場合でも、メモリの内容は維持されます。この一意の特性は、PMem をストレージとして使用することもできることを意味します。これは、"ストレージクラスメモリ" として参照される可能性があるためです。Memory contents remain even when system power goes down in the event of an unexpected power loss, user initiated shutdown, system crash, etc. This unique characteristic means you can also use PMem as storage - which is why you may hear PMem being referred to as "storage-class memory".

これらの利点の一部を確認するには、Microsoft Ignite 2018 からのこのデモを見てみましょう。To see some of these benefits, let's look at the this demo from Microsoft Ignite 2018:

Microsoft Ignite 2018 Pmem デモMicrosoft Ignite 2018 Pmem demo

フォールトトレランスを提供するすべてのストレージシステムは、ネットワークを経由してバックエンドの書き込み増幅を発生させる必要がある、書き込みの分散コピーを必ず作成します。Any storage system that provides fault tolerance necessarily makes distributed copies of writes, which must traverse the network and incurs backend write amplification. このため、最大の IOPS ベンチマーク番号は、通常、読み取り専用で実現されます。特に、ストレージシステムが、可能な限りローカルコピーからの読み取りを行うための共通の最適化がある場合は、特に記憶域スペースダイレクトます。For this reason, the absolute largest IOPS benchmark numbers are typically achieved with reads only, especially if the storage system has common-sense optimizations to read from the local copy whenever possible, which Storage Spaces Direct does.

100% の読み取りでは、クラスターは 13798674 IOPS を提供します。With 100% reads, the cluster delivers 13,798,674 IOPS.

13.7 m IOPS レコードスクリーンショット

ビデオをよく見ると、さらに多くの jaw を削除することが待機時間であることがわかります。 13.7 M を超える IOPS であっても、Windows のファイルシステムは、常に40μs 未満の待機時間を報告しています。If you watch the video closely, you'll notice thatwhat's even more jaw-dropping is the latency: even at over 13.7 M IOPS, the filesystem in Windows is reporting latency that's consistently less than 40 µs! (これはマイクロ秒の記号で、1秒の万です)。これは、一般的なすべての flash ベンダ人格が現在提供しているものよりもはるかに高速な順序です。(That's the symbol for microseconds, one-millionth of a second.) This is an order of magnitude faster than what typical all-flash vendors proudly advertise today.

Windows Server 2019 および Intel®™ Optane で記憶域スペースダイレクト、DC 永続メモリによってパフォーマンスが飛躍的に向上します。Together, Storage Spaces Direct in Windows Server 2019 and Intel® Optane™ DC persistent memory deliver breakthrough performance. この業界最先端の HCI ベンチマークは、予測可能で非常に短い待機時間で、13.7 M IOPS を超えています。これは、以前の業界トップレベルの6.7 ベンチマークである 6.7 M IOPS を超えています。This industry-leading HCI benchmark of over 13.7M IOPS, with predictable and extremely low latency, is more than double our previous industry-leading benchmark of 6.7M IOPS. さらに、今回は12台のサーバーノードだけが必要でした。What's more, this time we needed just 12 server nodes, 25% fewer than two years ago.

IOPS の向上

使用されるハードウェアは、3方向のミラーリングと区切られた ReFS ボリュームを使用する12台のサーバークラスターで、 12 x INTEL® S2600WFT、 384 GiB memory、2 x 28 コア "cascadelake"、 1.5 TB Intel® Optane™ DC 永続メモリ (キャッシュ)、 32 TB NVMe (4 x 8 TB Intel® DC P4510) 容量、 2 x Mellanox/4 25 GbpsThe hardware used was a 12-server cluster using three-way mirroring and delimited ReFS volumes, 12 x Intel® S2600WFT, 384 GiB memory, 2 x 28-core “CascadeLake”, 1.5 TB Intel® Optane™ DC persistent memory as cache, 32 TB NVMe (4 x 8TB Intel® DC P4510) as capacity, 2 x Mellanox ConnectX-4 25 Gbps

次の表には、完全なパフォーマンスの数値が含まれています。The table below has the full performance numbers:

ベンチマークBenchmark パフォーマンスPerformance
4K 100% のランダム読み取り4K 100% Random Read 1380万 IOPS13.8 Million IOPS
4K 90/10% ランダム読み取り/書き込み4K 90/10% Random Read/Write 945万 IOPS9.45 million IOPS
2 MB 順次読み取り2MB Sequential Read 549 GB/秒のスループット549 GB/s Throughput

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

次の表は、Windows Server 2019 および Windows Server 2016 でサポートされている永続メモリハードウェアを示しています。The table below shows supported persistent memory hardware for Windows Server 2019 and Windows Server 2016. Intel Optane では、メモリ (揮発性) とアプリダイレクト (つまり、Note that Intel Optane supports both Memory (i.e. volatile) and App Direct (i.e 永続的) モード。persistent) modes.

永続メモリテクノロジPersistent Memory Technology Windows Server 2016Windows Server 2016 Windows Server 2019Windows Server 2019
永続モードでのNVDIMMNVDIMM-N in persistent mode SupportedSupported SupportedSupported
アプリダイレクトモードでのIntel Optane™ DC 永続メモリIntel Optane™ DC Persistent Memory in App Direct Mode サポート非対象Not Supported SupportedSupported
Intel Optane™ DC 永続メモリ(メモリモード)Intel Optane™ DC Persistent Memory in Memory Mode SupportedSupported SupportedSupported

では、永続メモリの構成方法について説明します。Now, let's dive into how you configure persistent memory.

インターリーブセットInterleave sets

インターリーブセットについてUnderstanding interleave sets

NVDIMM が standard DIMM (メモリ) スロットに存在し、プロセッサの近くにデータが配置されていることを思い出してください。これにより、待機時間が短縮され、パフォーマンスが向上します。Recall that a NVDIMM resides in a standard DIMM (memory) slot, placing data closer to the processor (thus, reducing the latency and fetching better performance). これを基にして、インターリーブセットは、2つ以上の NVDIMMs が N 方向インターリーブセットを作成し、スループットを向上させるためにストライプの読み取り/書き込み操作を行う場合に使用します。To build on this, an interleave set is when two or more NVDIMMs create an N-Way interleave set to provide stripes read/write operations for increased throughput. 最も一般的な設定は、2方向または4方向のインターリーブです。The most common setups are 2-Way or 4-Way interleaving.

インターリーブセットは、多くの場合、複数の永続メモリデバイスが1つの論理ディスクとして Windows Server に表示されるように、プラットフォームの BIOS で作成できます。Interleaved sets can often be created in a platform's BIOS to make multiple persistent memory devices appear as a single logical disk to Windows Server. 各永続メモリ論理ディスクには、次のものを実行して、物理デバイスのインターリーブセットが含まれています。Each persistent memory logical disk contains an interleaved set of physical devices by running:

Get-PmemDisk

出力例を次に示します。An example output is shown below:

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 には、Id20 と Id120 の物理デバイスと論理 pmem ディスク #3 Id1020 と Id1120 の物理デバイスがあることがわかります。We can see that the logical pmem disk #2 has physical devices of Id20 and Id120 and logical pmem disk #3 has physical devices of Id1020 and Id1120. また、次のように、特定の pmem ディスクを使用して、インターリーブセット内のすべての物理 NVDIMMs を取得することもできます。We can also feed a specific pmem disk to Get-PmemPhysicalDevice to get all its physical NVDIMMs in the interleave set as below.

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

出力例を次に示します。An example output is shown below:

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

インターリーブセットの構成Configuring interleave sets

インターリーブセットを構成するには、次の PowerShell コマンドレットを実行します。To configure an interleave set, run the following PowerShell cmdlet:

Get-PmemUnusedRegion

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

これは、システム上の論理永続メモリディスクに割り当てられていないすべての永続メモリ領域を示しています。This shows all the persistent memory region(s) not assigned to a logical persistent memory disk on the system.

デバイスの種類、場所、状態、動作状態など、システム内のすべての永続的なメモリデバイス情報を表示するには、ローカルサーバーで次のコマンドレットを実行します。To see all of the persistent memory devices information in the system, including device type, location, health and operational status, etc. you can run the following cmdlet on the local server:

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 領域があるため、新しい永続メモリディスクを作成できます。Since we have available unused pmem region, we can create new persistent memory disks. 未使用の領域を使用して複数の永続メモリディスクを作成するには、次の方法があります。We can create multiple persistent memory disks using the unused regions by:

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

この処理が完了すると、次のように実行して結果を確認できます。Ater this is done, we can see the results by running:

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 PhysicalDisk | を実行できることに注意してください。 ここでは、同じ結果を得るために、 -PmemDiskではなく、MEDIATYPE-Eq SCM を指定します。It is worth noting that we could have run Get-PhysicalDisk | Where MediaType -Eq SCM instead of Get-PmemDisk to get the same results. 新しく作成された永続メモリディスクは、PowerShell と Windows 管理センターに表示されるドライブに1:1 対応します。The newly created persistent memory disk corresponds 1:1 to drives that appear in PowerShell and Windows Admin Center.

キャッシュまたは容量に永続的なメモリを使用するUsing persistent memory for cache or capacity

Windows Server 2019 の記憶域スペースダイレクトでは、キャッシュまたは容量ドライブとして永続メモリの使用がサポートされています。Storage Spaces Direct on Windows Server 2019 supports using persistent memory as either a cache or capacity drive. キャッシュと容量のドライブの設定の詳細については、こちらのドキュメントを参照してください。See this documentation for more details on setting up cache and capacity drives.

DAX ボリュームの作成Creating a DAX Volume

DAX についてUnderstanding DAX

永続メモリにアクセスするには、2つの方法があります。There are two methods for accessing persistent memory. これらは次のとおりです。They are:

  1. 直接アクセス (DAX) 。これはメモリのように動作し、待機時間が最短になります。Direct access (DAX), which operates like memory to get the lowest latency. アプリは、スタックをバイパスして、永続的なメモリを直接変更します。The app directly modifies the persistent memory, bypassing the stack. これは NTFS でのみ使用できることに注意してください。Note that this can only be used with NTFS.
  2. アプリの互換性のためにストレージのように動作するアクセスをブロックします。Block access, which operates like storage for app compatibility. データはこのセットアップのスタックを経由し、NTFS および ReFS と共に使用できます。The data flows through the stack in this setup, and this can be used with NTFS and ReFS.

この例を次に示します。An example of this can be seen below:

DAX スタック

DAX の構成Configuring DAX

永続メモリに DAX ボリュームを作成するには、PowerShell コマンドレットを使用する必要があります。We will need to use PowerShell cmdlets to create a DAX volume on a persistent memory. -Isdaxスイッチを使用して、DAX が有効になるようにボリュームをフォーマットすることができます。By using the -IsDax switch, we can format a volume to be DAX enabled.

Format-Volume -IsDax:$true

次のコードスニペットは、永続的なメモリディスクに DAX ボリュームを作成するのに役立ちます。The following code snippet will help you create a DAX volume on a persistent memory disk.

# Here we use the first pmem disk to create the volume as an example
$disk = (Get-PmemDisk)[0] | Get-PhysicalDisk | Get-Disk
# Initialize the disk to GPT if it is not initialized
If ($disk.partitionstyle -eq "RAW") {$disk | Initialize-Disk -PartitionStyle GPT}
# Create a partition with drive letter 'S' (can use any available drive letter)
$disk | New-Partition -DriveLetter S -UseMaximumSize


   DiskPath: \\?\scmld#ven_8980&dev_097a&subsys_89804151&rev_0018#3&1b1819f6&0&03018089fb63494db728d8418b3cbbf549997891#{53f56307-b6
bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                               Size Type
---------------  ----------- ------                                               ---- ----
2                S           16777216                                        251.98 GB Basic

# Format the volume with drive letter 'S' to DAX Volume
Format-Volume -FileSystem NTFS -IsDax:$true -DriveLetter S

DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining      Size
----------- ------------ -------------- --------- ------------ ----------------- -------------      ----
S                        NTFS           Fixed     Healthy      OK                    251.91 GB 251.98 GB

# Verify the volume is DAX enabled
Get-Partition -DriveLetter S | fl


UniqueId             : {00000000-0000-0000-0000-000100000000}SCMLD\VEN_8980&DEV_097A&SUBSYS_89804151&REV_0018\3&1B1819F6&0&03018089F
                       B63494DB728D8418B3CBBF549997891:WIN-8KGI228ULGA
AccessPaths          : {S:\, \\?\Volume{cf468ffa-ae17-4139-a575-717547d4df09}\}
DiskNumber           : 2
DiskPath             : \\?\scmld#ven_8980&dev_097a&subsys_89804151&rev_0018#3&1b1819f6&0&03018089fb63494db728d8418b3cbbf549997891#{5
                       3f56307-b6bf-11d0-94f2-00a0c91efb8b}
DriveLetter          : S
Guid                 : {cf468ffa-ae17-4139-a575-717547d4df09}
IsActive             : False
IsBoot               : False
IsHidden             : False
IsOffline            : False
IsReadOnly           : False
IsShadowCopy         : False
IsDAX                : True                   # <- True: DAX enabled
IsSystem             : False
NoDefaultDriveLetter : False
Offset               : 16777216
OperationalStatus    : Online
PartitionNumber      : 2
Size                 : 251.98 GB
Type                 : Basic

正常性の監視Monitoring Health

永続メモリを使用する場合、監視エクスペリエンスにはいくつかの違いがあります。When you use persistent memory, there are a few differences in the monitoring experience:

  1. 永続メモリは物理ディスクのパフォーマンスカウンターを作成しないため、Windows 管理センターのグラフに表示されるかどうかはわかりません。Persistent memory doesn't create Physical Disk performance counters, so you won't see if appear on charts in Windows Admin Center.
  2. 永続メモリは Storport 505 データを作成しないため、プロアクティブな外れ値検出は行われません。Persistent memory doesn't create Storport 505 data, so you won't get proactive outlier detection.

これとは別に、監視エクスペリエンスは他の物理ディスクと同じです。Apart from that, the monitoring experience is the same as any other physical disk. 次のように実行して、永続メモリディスクの正常性を照会できます。You can query for the health of a persistent memory disk by running:

Get-PmemDisk

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

Get-PmemDisk | Get-PhysicalDisk | select SerialNumber, HealthStatus, OperationalStatus, OperationalDetails

SerialNumber               HealthStatus OperationalStatus  OperationalDetails
------------               ------------ ------------------ ------------------
802c-01-1602-117cb5fc      Healthy      OK
802c-01-1602-117cb64f      Warning      Predictive Failure {Threshold Exceeded,NVDIMM_N Error}

HealthStatusは、永続メモリディスクが正常であるかどうかを示します。HealthStatus shows if the persistent memory disk is healthy or not. Unsafは、この論理ディスクのデータ損失の原因となる可能性があるシャットダウンの数を追跡します。The UnsafeshutdownCount tracks the number of shutdowns that may cause data loss on this logical disk. これは、このディスクの基になるすべての永続メモリデバイスの unsafe シャットダウンカウントの合計です。It is the sum of the unsafe shutdown counts of all the underlying persistent memory devices of this disk. 次のコマンドを使用して正常性の情報を照会することもできます。We can also use the below commands to query health info. OperationalStatusOperationalDetailsは、正常性状態に関する詳細情報を提供します。The OperationalStatus and OperationalDetails provide more information about the health status.

永続メモリデバイスの正常性を照会するには:To query the health of persistent memory device:

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 Unhealthy    {HardwareError}   CPU1_DIMM_C1     102005310        126 GB                 0 GB

これは、どの永続メモリデバイスが異常であるかを示します。This shows which persistent memory device is unhealthy. 異常なデバイス (DeviceId) 20 は、上記の例のケースに一致します。The unhealthy device (DeviceId) 20 matches the case in the above example. BIOS からPhysicalLocationを使用すると、障害が発生している永続メモリデバイスを特定するのに役立ちます。The PhysicalLocation from BIOS can help identify which persistent memory device is in faulty state.

永続メモリの置換Replacing persistent memory

ここでは、永続メモリの正常性状態を表示する方法について説明します。Above we described how to view the health status of your persistent memory. 障害が発生したモジュールを交換する必要がある場合は、永続メモリディスクを再プロビジョニングする必要があります (上記の手順を参照してください)。If you need to replace a failed module, you will need to re-provision the persistent memory disk (refer to the steps we outlined above).

トラブルシューティングを行うときに、特定の永続メモリディスクを削除する削除 PmemDiskを使用する必要がある場合があります。When troubleshooting, you may need to use Remove-PmemDisk, which removes a specific persistent memory disk. 現在のすべての永続ディスクを削除するには、次の方法があります。We can remove all current persistent disks by:

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.

永続メモリディスクを削除すると、そのディスク上のデータが失われることに注意してください。It is important to note that removing a persistent memory disk will result in data loss on that disk.

別のコマンドレットが必要になることもあります。 PmemPhysicalDeviceは、物理永続メモリデバイスのラベルストレージ領域を初期化します。Another cmdlet you may need is Initialize-PmemPhysicalDevice, which will initialize the label storage area on the physical persistent memory devices. これは、永続メモリデバイスの破損したラベルのストレージ情報を消去するために使用できます。This can be used to clear corrupted label storage info on the persistent memory devices.

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.

このコマンドは、永続的なメモリ関連の問題を修正するための最後の手段として使用する必要があることに注意してください。It is important to note that this command should be used as a last resort to fix persistent memory related issues. これにより、永続メモリへのデータ損失が発生します。It will result in data loss to the persistent memory.

関連項目See also