瞭解及設定 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。

注意

Azure Stack HCI 環境不支援 DAX。

DAX 和區塊轉譯表 (.BTT)

如果您未正確使用 DAX,可能會遺失資料。 強烈建議您搭配使用 DAX 與區塊轉譯表 (.BTT) ,以防止發生電源中斷或系統中斷時可能發生的「損毀寫入」。 .BTT 藉由為持續性記憶體裝置提供不可部分完成的磁區更新語義來降低此風險,基本上是啟用類似區塊的磁區寫入,讓應用程式可以避免在失敗情況下混用舊的新資料。

雖然我們建議您在大部分的 DAX 磁片區上啟用 .BTT,以避免叢集 NTFS 中繼資料來損毀寫入問題,但 .BTT 的缺點是它可能會影響在 DAX 磁片區上「大型」和「海量」記憶體頁面的使用量,因為中繼資料作業會發生重新對應。 如果您想要針對記憶體對應區段使用海量和海量儲存體頁面,請勿開啟 .BTT。

使用 Windows PowerShell 建立 DAX 磁片區

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

建立磁片區之後,請使用 -IsDax 參數搭配 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

下一步

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