了解及設定 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,而且只能搭配 NTFS 使用 DAX。

注意

DAX 在 Azure Stack HCI 環境上不受支援。

DAX 和區塊轉換表 (BTT)

如果您未正確使用 DAX,則資料可能會遺失。 強烈建議您將 DAX 與區塊轉換表 (BTT) 結合使用,以防在電源故障或系統中斷的情況下可能發生的「寫入損壞」。 BTT 可藉由為持續性記憶體裝置提供不可部分完成的磁區更新語意來減輕這種風險,基本上是啟用類似區塊的磁區寫入,以便應用程式可以避免在故障情況下混合新舊資料。

儘管我們建議在大多數 DAX 磁碟區上啟用 BTT 以避免 NTFS 中繼資料遭受寫入損壞問題,但 BTT 的缺點是它可能會影響 DAX 磁碟區上「大型」和「巨型」記憶體分頁的使用,因為中繼資料作業將導致重新對應。 如果您想要針對記憶體對應區段使用大型和巨型的記憶體分頁,請不要開啟 BTT。

使用 Windows PowerShell 建立 DAX 磁碟區

因為 DAX 是檔案系統的屬性,所以在格式化 NTFS 磁碟區時必須指定它。

建立磁碟區之後,請將 -IsDax 參數搭配 Format-Volume cmdlet 一起使用,以將磁碟區格式化為「已啟用 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

下一步

如需相關資訊,另請參閱: