DAX の理解と構成
直接アクセス (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
次のステップ
関連情報については、以下も参照してください。