了解和部署持續性記憶體
適用於:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 10
重要
Azure Stack HCI 現在是 Azure 本機的一部分。 產品檔案重新命名正在進行中。 不過,舊版的 Azure Stack HCI,例如 22H2 會繼續參考 Azure Stack HCI,而且不會反映名稱變更。 深入了解。
永續性記憶體(或 PMem)是一種新型的記憶體技術,可透過電源週期保留其內容,並可作為頂層記憶體,這就是為什麼您可能會聽到人們將 PMem 稱為「儲存類別記憶體」或 SCM 的原因。 本文提供永續性記憶體的背景,並說明如何將它部署為 Azure Stack HCI 和 Windows Server 中的最上層儲存層。
什麼是持續性記憶體?
永續性記憶體是一種適用於標準 DIMM(記憶體)插槽的非揮發性媒體類型。 速度比 DRAM 慢,但提供比 SSD 和 NVMe 更高的輸送量。 相較於 DRAM,永續性記憶體模組的容量要大得多,而且每個 GB 的成本較低,不過它們仍然比 NVMe 更昂貴。 即使系統電源在發生非預期的電源中斷、使用者起始關機或系統當機時,記憶體內容仍會維持不變。 這表示您可以使用永續性記憶體模組作為超快速永續性記憶體。
Azure Stack HCI 和 Windows Server 2019 支援使用持續性記憶體作為快取或容量磁碟驅動器。 不過,假設定價模式,持續性記憶體會提供快取或少量專用記憶體作為記憶體對應數據的最大值。 在大部分情況下,永續性記憶體磁碟驅動器會自動作為快取磁碟驅動器使用,而任何速度較慢的磁碟驅動器都會當做容量磁碟驅動器使用。 如需如何設定快取和容量磁碟驅動器的詳細資訊,請參閱 瞭解存放集區快取 和 規劃磁碟區。
持續性記憶體概念
本節說明您需要瞭解的基本概念,才能在 Windows Server 和 Azure Stack HCI 環境中部署持續性記憶體,以減少 I/O 瓶頸並改善效能。
存取方法
存取永續性記憶體的方法有兩種。 畫面如下:
- 封鎖存取,其運作方式類似記憶體以取得應用程式相容性。 在此組態中,數據會如常般流經文件系統和記憶體堆疊。 您可以將此組態與NTFS和ReFS搭配使用,而且建議用於大部分的使用案例。
- 直接存取 (DAX),其運作方式類似記憶體,以取得最低的延遲。 您只能搭配NTFS使用DAX。 如果您未正確使用 DAX,則資料可能會遺失。 強烈建議您使用 DAX 搭配 開啟區塊轉譯數據表 (BTT), 以降低撕裂寫入的風險。 若要深入瞭解,請參閱 瞭解及設定DAX。
警告
DAX 在 Azure Stack HCI 環境上不受支援。 Azure Stack HCI 僅支持封鎖存取,且 BTT 已開啟。
地區
區域是一組一或多個持續性記憶體模組。 區域通常會建立為 交錯集 ,其中多個永續性記憶體模組會顯示為單一邏輯虛擬位址空間,以增加輸送量。 為了增加可用的頻寬,相鄰的虛擬位址會分散到多個永續性記憶體模組。 區域通常可以在伺服器平臺的 BIOS 中建立。
PmemDisks
若要使用永續性記憶體作為記憶體,您必須定義至少一 個 PmemDisk,這是主機上的虛擬硬碟 (VHD),其列舉為虛擬機 (VM) 內的 PmemDisk。 PmemDisk 是連續尋址的非揮發性記憶體範圍,您可以將其視為硬碟磁碟分區或 LUN。 您可以使用 Windows PowerShell Cmdlet 來建立多個 PmemDisk,以分割可用的原始容量。 每個永續性記憶體模組都包含儲存組態元數據的標籤儲存區域 (LSA)。
封鎖翻譯數據表
不同於固態硬碟,持續性記憶體模組不會防範可能發生在電源故障或系統中斷的情況下發生的「撕毀寫入」,使數據面臨風險。 BTT 可藉由為持續性記憶體裝置提供不可部分完成的磁區更新語意來減輕這種風險,基本上是啟用類似區塊的磁區寫入,以便應用程式可以避免在故障情況下混合新舊資料。 我們強烈建議在所有情況下開啟 BTT。 因為 BTT 是 PmemDisk 的屬性,所以必須在建立 PmemDisk 時開啟它。
在區塊存取模式中,我們建議使用 BTT,因為所有數據都會使用區塊語意。 BTT 在 DAX 模式中也很有用,因為元數據作業仍然使用區塊語意,即使應用程式的數據作業沒有。 即使所有應用程式作業都使用具有 DAX 語意的記憶體對應檔案,元數據作業仍可能會發生撕裂寫入:因此,開啟 BTT 仍然很有價值。
支援的硬體
下表顯示 Azure Stack HCI 和 Windows Server 支援的永續性記憶體硬體。 Windows Server 2019 完全支持持續性記憶體,包括 儲存空間直接存取。
永續性記憶體技術 | Windows Server 2016 | Azure Stack HCI v20H2/Windows Server 2019 |
---|---|---|
PERSIS 中的 NVDIMM-N 帳篷模式 | 支援 | 支援 |
Intel Optane™ DC 持續性記憶體 在應用程式直接模式中 | 不支援 | 支援 |
Intel Optane™ DC 持續性記憶體 在記憶體模式中 | 支援 | 支援 |
Intel Optane DC Persistent Memory 同時 支援記憶體 (volatile) 和 App Direct (persistent) 作業模式。 若要使用持續性記憶體模組作為記憶體,這是伺服器工作負載的主要使用案例,您必須使用應用程式直接存取模式。 記憶體模式基本上會使用持續性記憶體作為較慢的 RAM,這通常不符合伺服器工作負載的效能需求。 記憶體模式與 DAX 不同,這是可使用類似記憶體的語意存取的永續性記憶體磁碟區。
作業模式通常是由原始裝置製造商預先設定。
注意
當您重新啟動在應用程式直接模式中有多個 Intel® Optane™ 永續性記憶體模組的系統時,可能會失去部分或所有相關邏輯記憶體磁碟的存取權。 此問題發生在早於 1903 版的 Windows Server 2019 版本上。
因為持續性記憶體模組未定型,否則會在系統啟動時失敗,因此會發生此存取遺失。 在這種情況下,系統上任何持續性記憶體模組上的所有 PmemDisks 都會失敗,包括不會實際對應到失敗模組的記憶體模組。
若要還原所有 PmemDisks 的存取權, 請取代失敗的模組。
如果 Windows Server 2019 1903 版或更新版本上的模塊失敗,您只會失去實際對應至受影響模組的 PmemDisks 存取權;其他則不會受到影響。
設定永續性記憶體
如果您使用 Intel Optane 持續性記憶體,請遵循 這裡的指示。 如果您使用來自其他廠商的持續性記憶體模組,請參閱其檔。
若要建立支持 BTT 的 New-VHD
PmemDisk,請使用 Cmdlet:
New-VHD E:\pmemtest.vhdpmem -Fixed -SizeBytes 1GB -AddressAbstractionType BTT
VHD 擴充功能必須是 「vhdpmem」。。
您也可以使用 Convert-VHD
Cmdlet,將未啟用 BTT 的 VHD 轉換成一個使用 Cmdlet 的 VHD:
Convert-VHD .\pmemtest_nobtt.vhdpmem -AddressAbstractionType BTT -DestinationPath pmemtest_btt.vhdpmem
轉換之後,新的 VHD 將會有與原始的命名空間 GUID 相同的命名空間 GUID。 這可能會導致問題,特別是當兩者都連結至相同的 VM 時。 若要為已轉換的 VHD 建立新的命名空間 UUID,請使用 Set-VHD
Cmdlet:
Set-VHD -ResetDiskIdentifier .\pmemtest_btt.vhdpmem
瞭解交錯集
交錯集通常可以在伺服器平臺的 BIOS 中建立,讓多個永續性記憶體裝置顯示為主機操作系統的單一磁碟,增加該磁碟的輸送量。
注意
Windows Server 2016 不支援交錯的永續性記憶體模組集合。
回想一下,永續性記憶體模組位於標準 DIMM(記憶體)位置,這會讓數據更接近處理器。 此設定可減少延遲並改善擷取效能。 為了進一步增加輸送量,兩個或多個持續性記憶體模組會建立 n 向交錯集來等量讀取/寫入作業。 最常見的組態是雙向或四向交錯。
您可以使用 Get-PmemDisk
PowerShell Cmdlet 來檢閱這類邏輯磁碟的設定,如下所示:
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
我們可以看到邏輯 PMem 磁碟 2 使用實體裝置 Id20 和 Id120,而邏輯 PMem 磁碟 3 則使用實體裝置 Id1020 和 Id1120。
若要擷取邏輯磁碟驅動器所使用之交錯集的進一步資訊,請執行 Get-PmemPhysicalDevice
Cmdlet:
(Get-PmemDisk)[0] | Get-PmemPhysicalDevice
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
設定交錯集
若要設定交錯集,請執行 Get-PmemUnusedRegion
Cmdlet 來檢閱未指派給系統上邏輯永續性記憶體磁碟的所有持續性記憶體區域:
Get-PmemUnusedRegion
RegionId TotalSizeInBytes DeviceId
-------- ---------------- --------
1 270582939648 {20, 120}
3 270582939648 {1020, 1120}
若要查看系統中的所有 PMem 裝置資訊,包括裝置類型、位置、健全狀況和作業狀態等等,請執行 Get-PmemPhysicalDevice
Cmdlet:
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 區域,因此我們可以建立新的永續性記憶體磁碟。 我們可以執行下列 Cmdlet,使用未使用的區域來建立多個永續性記憶體磁碟:
Get-PmemUnusedRegion | New-PmemDisk
Creating new persistent memory disk. This may take a few moments.
完成此動作之後,我們可以執行下列命令來查看結果:
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 | Where MediaType -eq SCM
,而不是 Get-PmemDisk
取得相同的結果。 新建立的永續性記憶體磁碟會對應一對一的磁碟驅動器,這些磁碟驅動器會出現在PowerShell和 Windows Admin Center 中。
取代持續性記憶體
如果您必須取代失敗的模組,則必須重新佈建 PMem 磁碟(請參閱我們先前概述的步驟)。
當您進行疑難解答時,可能必須使用 Remove-PmemDisk
。 此 Cmdlet 會移除特定的永續性記憶體磁碟。 我們可以執行下列 Cmdlet 來移除所有目前的永續性記憶體磁碟:
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.
重要
拿掉持續性記憶體磁碟會導致該磁碟上的數據遺失。
您可能需要的另一個 Cmdlet 是 Initialize-PmemPhysicalDevice
。 此 Cmdlet 會初始化實體永續性記憶體裝置上的標籤儲存區域,並可清除裝置上損毀的標籤記憶體資訊。
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.
重要
Initialize-PmemPhysicalDevice
會導致持續性記憶體中的數據遺失。 只使用它作為修正持續性記憶體相關問題的最後手段。
在 Ignite 2018 Microsoft作用中的持續性記憶體
若要查看持續性記憶體的一些優點,讓我們看看 Ignite 2018 Microsoft這段影片 。
任何提供容錯的記憶體系統,都一定會製作分散式寫入複本。 這類作業必須周遊網路,並放大後端寫入流量。 因此,絕對最大的 IOPS 基準檢驗數位通常是藉由測量只讀來達成,特別是如果記憶體系統有常識優化,盡可能從本機複本讀取。 儲存空間直接存取 已優化來執行此動作。
使用只讀作業測量時,叢集會傳遞 13,798,674 IOPS。
如果您仔細觀看影片,您會發現更令人眼睜睜地看到延遲。 即使在超過 13.7 M IOPS 時,Windows 中的文件系統也會回報持續小於 40 個 40 個的延遲! (這是微秒符號,每秒百萬分之一。這種速度比典型的全閃廠商今天自豪地宣傳的速度要快一些。
在 Windows Server 2019 和 Intel® Optane™ DC 持續性記憶體中,儲存空間直接存取 可提供突破性的效能。 這個超過 13.7M IOPS 的 HCI 基準,加上可預測且極其低的延遲,是先前領先 6.7M IOPS 的基準檢驗的兩倍多。 更重要的是,這次我們只需要12個伺服器節點,比之前少25%。
測試硬體是設定為使用三向鏡像和分隔 ReFS 磁碟區的 12 部伺服器叢集, 12 x Intel® S2600WFT,384 GiB 記憶體,2 x 28 核心 “CascadeLake” ,1.5 TB Intel Optane™ DC 持續性記憶體作為快取, 32 TB NVMe (4 x 8 TB Intel®® DC P4510) 作為容量 ,2 x Mellanox ConnectX-4 25 Gbps。
下表顯示完整的效能數位。
基準 | 效能 |
---|---|
4K 100% 隨機讀取 | 1380 萬 IOPS |
4K 90/10% 隨機讀取/寫入 | 945萬IOPS |
2 MB 循序讀取 | 549 GB/秒的輸送量 |
下一步
如需相關資訊,另請參閱:
- 儲存空間直接存取概觀 \(部分機器翻譯\)
- 持續性記憶體健康情況管理
- 了解儲存體集區快取