Skip to main content

戴爾EMC推出了第14代PowerEdge服務器對NVDIMM-N的支持。NVDIMM-N是永久存儲器(PMEM)的變體之一

此圖顯示了NVDIMM-N上狀態LED的位置

Microsoft還使用記憶體這名詞 ,而不是NVDIMM,但他還有驅動程序。本質上,它是非易失性DIMM(NVDIMM),這意味著它即使在系統遭受意外斷電,崩潰(BSOD)或關機/重啟,系統崩潰等情況下也能保留其數據.
有電池模塊下 ,NVDIMM-N模組(如存儲控制器)會類似閃存存儲 斷電後也可保留數據。

本文原文出自於 2019 .6.25 本文為初稿翻譯 還有待實作跟編修

https://www.starwindsoftware.com/blog/configure-nvdimm-n-on-a-dell-poweredge-r740-with-windows-server-2019

NWDIMM電池

NVDIMM-N模塊位於標準CPU內存插槽中。比任何硬碟類型都更接近CPU。這樣我們就可以獲得記憶體的好處(非常高的速度,非常低的延遲)以及內存的好處。

Hyper-V和NVDIMM-N

VMware和Microsoft都在大力投資以獲得更好的存儲性能。虛擬磁盤和HCI存儲產品一樣。
VMware從vSphere ESXi 6.7引入了對NVDIMM-N的支持。
Microsoft通過Windows Server 2019 LTSC為NVDIMM-N主流提供支持。
但對於虛擬化/ HCI的使用情況,我們可以將NVDIMM-N與S2D一起使用或直接將其呈現給VM以與DAX或塊一起使用訪問取決於您的工作負載的需要。

如您所知,我傾向於投資於具有成本效益,高價值的方法,讓Hyper-V在性能方面大放異彩,因此我必須調查此功能。就像大多數人一樣,我是這項技術的新手。所以,我們正在冒險。

第一步是在服務器上配置NVDIMM

在我們可以利用NVDIMM-N模塊之前,我們需要在BIOS設置中為該用例配置它們。我們確保將BIOS和所有固件更新到最新和最好的固件。驅動程序和Windows Server更新也是如此。

啟動進入BIOS並導航至系統設置/系統BIOS /內存設置/持久內存。

系統設置/系統BIOS /內存設置/持久內存

在該菜單中,確保您的設置如下所示。

  • 永久內存必須設置為非易失性DIMM(Non-volattile),而不是關閉。
  • 必須禁用NVDIMM只讀。
  • 持久內存清理設置為自動。
  • NVDIMM出廠重置和安全擦除所有Dimms已禁用。
  • NVDIMM Interleave已禁用或啟用。我們將先從disable開始。後面會講這設定
  • 電池如果安裝正確 狀態應會顯示為“Present-Ready”。

電池狀態應顯示為“現在就緒”

你退出了,它會要求保存任何更改。當服務器重新啟動時,我們將在“存儲設備”下的“設備管理器”中找到NVDIMM-N模塊。這個數字取決於服務器中的數量。它說明瞭如果您沒有在BIOS中啟用它們,則不會顯示NVDIMM-N設備。這些是服務器內存插槽中的物理設備。

這些是服務器內存插槽中的物理設備。

如果我的NVDIMM電池耗盡或設置為只讀(BIOS)怎麼辦?

Windows Server 2019仍然可以運行並能夠讀寫數據。但是,當重新啟動,崩潰或斷電時,數據會丟失。如果希望操作系統在這些情況下將NVDIMM標記為只讀,則需要在名為ReadOnlyOnPersistenceLoss的HKLM \ System \ CurrentControlSet \ Services \ pmem下創建一個值為1的註冊表DWORD值。

ReadOnlyOnPersistenceLoss

如何在Windows中使用NVDIMM-N模塊

在Windows Server 2019中,我們支持標籤和命名空間管理。這基本上意味著默認情況下乾淨的NVDIMM-N模塊不會顯示為可用磁盤。你必須創造那些。這就是為什麼在配置邏輯永久內存磁盤之前看不到它們的原因。完成後,您可以將它們聯機,初始化並格式化。要開始使用它,我們使用PowerShell。我們來看看。我們運行Get-Command -Module PersistentMemory並列出可用的cmdlet。

Get-Command -Module PersistentMemory並列出可用的cmdlet

概述:

  • GET-PmemDisk。這將返回所有或指定的邏輯持久性內存磁盤。它提供有關大小,原子性類型,運行狀況和基礎物理設備的信息。在全新安裝中,您將找不到任何內容,因為您必須創建這些內容。我們稍後會這樣做。
  • GET-PmemPhysicalDevice。這將返回服務器中的所有或指定的物理永久性內存設備(NVDIMM)。這些是您在設備管理器中看到的物理內存設備
  • Get-PmemUnusedRegion:返回可用於配置邏輯PEMEM磁盤的所有PMEM區域。請注意,當您進行交錯時,所有NVDIMM都會單獨列出。使用交錯時,每個處理器的多個NVDIMS組合成一個或多個可用區域
  • 初始化-PmemPhysicalDevice。這會重置設備。它會將標籤清零並重建存儲類內存(SCM)堆棧。當事情出錯並且你想重新開始時,這是最後的事情。您通常不會經常使用它。
  • 新PmemDisk。此cmdlet從給定的未使用區域創建新的邏輯永久磁盤。它會寫入標籤以創建命名空間,然後重建SCM堆棧以公開新的邏輯設備。這裡要注意的一件事是我們可以在這裡選擇一個原子性類型:node(默認)或BlockTranslationTable,它通過提供原子性來防止扇區撕裂。現在,MSFT似乎支持這兩種DAX作為塊級用例,但這是業界的討論點。我希望MSFT能夠在有意義的時候看到更多的指導。
  • 刪除 – PmemDisk。這將刪除邏輯持久性內存磁盤。它還會刪除命名空間的標籤,然後重建SCM堆棧以刪除邏輯設備。然後,物理設備可用於創建新的邏輯PMEM磁盤。

創建邏輯PMEM磁盤

首先,我們使用Get-PmemPhysicalDevice列出物理內存設備

首先,我們使用Get-PmemPhysicalDevice列出物理內存設備

我們看到六個,它們對應於我們在主機中的6個。這與我們在內存設備的“設備管理器”中看到的內容相對應。

然後,我們列出可用區域,以通過Get-PmemUnusedRegion創建邏輯PMEM磁盤

使用via Get-PmemUnusedRegion創建邏輯PMEM磁盤

同樣,我們看到六個因為我們沒有使用交錯,所以每個區域包含1個PMEM物理設備,一個NVDIMM-N模塊。我們將使用所有這些來創建6個邏輯PMEM磁盤。但在我們這樣做之前,我們運行Get-PmemDisk以查看還沒有。

我們現在使用New-PmemDisk -RegionId 1 -AtomicityType None創建一個

現在讓我們再次運行Get-PmemUnusedRegion和Get-PmenDisk。你看,我們有一個比以前更少的未使用區域……

Get-PmemUnusedRegion和Get-PmenDisk

……我們看到一個PMEM磁盤

 我們看到一個PMEM磁盤

然後我們從其他6個未使用的區域創建PMEM磁盤,我們現在有6個磁盤供我們使用。請耐心等待一段時間。

然後,我們從其他6個未使用的區域創建PMEM磁盤

列出所有PMEM磁盤

列出所有PMEM磁盤

請注意,為所有可用的物理設備創建PMEM磁盤後,您將沒有更多未使用的區域。運行Get-PmemUnusedRegion此時不返回任何內容。因為我們已經消耗了所有可用的區域。

在“設備管理器”中,我們看到了永久性內存磁盤。我注意到友好的命名似乎沒有正常工作,所以我沒有打擾使用它。

在“設備管理器”中,我們看到了永久性內存磁盤

這些持久性內存磁盤現在可供操作系統使用,可以在線創建,初始化和格式化(作為DAX)存儲,我們可以在其上創建Hyper-V .vhdpmem虛擬磁盤。我們稍後會寫一下。

交錯(Raid 0設定)

我需要更多的空間而不是16GB的小空間。等一下,等一下,我們會幫你的。現在有理由直到我們獲得更大的NVDIMM。
另外,請注意您可以在SQL Server中拆分日誌文件以幫助處理較小的磁盤。

Windows Server 2019還為我們提供了對NVDIMM-N節點交叉的支持。這具有提高性能的能力。這裡的重大收益是跨通道對NVDIMM進行交錯。在信道內交織的性能增益不太重要。

要啟用它,請啟動BIOS設置並導航到系統設置/系統BIOS /內存設置/持久內存,然後將交錯更改為啟用。

持久內存並將交錯更改為啟用

您將收到警告,這將刪除所有數據。別擔心。我們已經刪除了主機上的邏輯PMEM磁盤,以確保在佈局更改區域時不會遇到問題。如果那裡有值得保存的東西,你必須在某處備份,不知何故你可以恢復。

保存更改

當您保存這些更改並重新啟動時,您會看到從Memory Devices的角度來看,沒有任何變化,仍然有六個。但是看看Get-PmemUnusedRegion,您會看到現在每個區域包含3個物理PMEM設備。

在Get-PmemUnusedRegion,您將看到現在每個區域包含3個物理PMEM設備

當我們創建一個邏輯PMEM磁盤時,我們有更多的空間!這讓我的DBA更加熱情,他們現在開始為他們的SQL Server VM設想更大的日誌或臨時數據庫LUN。

因此,讓我們從未使用的區域創建邏輯PMEM磁盤。我現在使用塊轉換錶用於Atomicity類型。

1

Get-pmemdisk | New-PmemDisk -AtomicityType BlockTranslationTable

現在阻止翻譯表的原子類型

我們運行Get-PmemDisk

運行Get-PmemDisk

如您所見,由於交錯,我們有2個邏輯PMEM磁盤,每個磁盤由3個物理NVDIMM-N模塊組成。

在設備管理器中,如下所示。請注意,它表明持久性內存磁盤是交錯的。

持久性內存磁盤是交錯的

一點警告。交錯不能提供針對故障NVDIMN-N模塊的保護。因此,如果您丟失了1/3,則數據會丟失。這裡沒有“鏡像”或“RAID”。你知道嗎 現在,當您將它們用於S2D或VM內部時,有一些方法可以防止這種情況超出本文的範圍。順便說一句,這是創建更大的NVDIMM持久邏輯磁盤以便與S2D一起使用的方法。通過使用多個,您可以擁有冗餘,就像使用多個NVMe磁盤一樣。

其他一些有趣的觀察

請注意,物理NVDIMM-N設備由nvdimm.sys驅動程序管理。

NVDIMM-N設備由nvdimm.sys驅動程序管理

邏輯PMEM磁盤由partmgr.sys和pmem.sys驅動程序管理。

邏輯PMEM磁盤由partmgr.sys和pmem.sys驅動程序管理

NVDIMM-N物理設備和邏輯PMEM磁盤的創建由scmbus.sys總線驅動程序管理,用於存儲類內存。同樣,命名加劇了一些人作為供應鏈管理是一種特定類型的持久性存儲器和不一樣的NVDIMM變種,但對於所有的實際目的,我們知道它是什麼以及它被使用。

驅動文件細節

 

StarWind Virtual SAN  通過在虛擬機管理程序服務器之間鏡像內部閃存和存儲資源,消除了對物理共享存儲的任何需求。此外,該解決方案可以在現成的硬件上運行。這種設計使StarWind Virtual SAN不僅可以實現高性能和高效的硬件利用,還可以降低運營和資本支出。

了解有關➡StarWindVirtual SAN的更多信息

結論

那就是我們對帶有Windows Server 2019和DELLEMC第14代硬件的PMEM / NVDIMM /存儲級內存的介紹。在下一篇文章中,我們將把邏輯PMEM磁盤暴露給Hyper-V VM,這樣我們就可以使虛擬化SQL Server大放異彩。

Leave a Reply