DAX の理解と構成

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10

直接アクセス (DAX) では、最低遅延を実現するために永続メモリ デバイスをバイト アドレス指定可能なメモリとして扱い、通常のファイル システムのブロック I/O の従来型技法には従わず、バイト アドレス指定可能なメモリへの直接アクセスを提供します。 アプリによって永続メモリが直接変更され、I/O スタックのソフトウェア オーバーヘッドが回避されます。 これが DAX 対応コード (つまり、メモリ マッピング データ) によって適切に使用されると、パフォーマンス上の大きな利点が得られます。 しかしながら DAX にはいくつかの問題があり、DAX 対応コードなしでは大きな利点が得られません。

Windows Server 2019 以降では、パリティも冗長性もない単一の永続メモリ ディスクを使用する記憶域スペースまたは記憶域スペース ダイレクトの構成でのみ DAX ボリュームを作成できます。 複数の永続メモリ ディスクをまたがって DAX を使用することはできず、また DAX は NTFS でのみ使用できます。

注意

DAX は Azure Stack HCI 環境ではサポートされていません。

DAX とブロック変換テーブル (BTT)

DAX は、正しく使用しないと、データが失われるおそれがあります。 DAX をブロック変換テーブル (BTT) と共に使用して、電源障害やシステム停止時に発生するおそれがある "書き込み時の欠落" から保護することを強くお勧めします。 BTT では、永続メモリ デバイスにアトミック セクター更新セマンティクスを提供し、ブロックに似たセクター書き込みを実質的に可能にすることによって、このリスクが軽減されます。これにより、障害が発生した場合に、アプリで新旧のデータが混ざるのを避けることができます。

NTFS メタデータでの書き込み時の欠落問題を回避するために大部分の DAX ボリュームでは BTT を有効にするようお勧めしますが、BTT には、メタデータの操作で再マッピングが発生するため、DAX ボリューム上での "大きい" および "巨大な" メモリ ページの使用に影響を与えるおそれがあるという欠点があります。 メモリ マッピングされたセクションで、大きいおよび巨大なメモリ ページを使用したい場合は、BTT を有効にしないでください。

Windows PowerShell を使用して DAX ボリュームを作成する

DAX は、ファイル システムのプロパティであるため、NTFS ボリュームをフォーマットする時に指定する必要があります。

ボリュームを作成した後、Format-Volume コマンドレットで -IsDax スイッチを使用して、DAX が有効になるようにボリュームをフォーマットします。

Format-Volume -IsDax:$true

次のコード スニペットでは、永続メモリ ディスク上に DAX ボリュームが作成されます。

# 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

次のステップ

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