永續性記憶體| 管理指南| SUSE Linux Enterprise Server 15 SP1
文章推薦指數: 80 %
這些記憶體稱做NVDIMM:非揮發性雙列直插式記憶體模組。
不過,與RAM 不同,永續性記憶體在多個方面類似於快閃記憶體式SSD。
後兩者都採用固態 ...
documentation.suse.com › SUSELinuxEnterpriseServer文件 › 管理指南 › 系統 › 永續性記憶體內容內容管理指南關於本指南I一般工作1Bash和Bash程序檔2sudo
3YaST線上更新4YaST5文字模式的YaST6使用指令行工具管理軟體7使用Snapper進行系統復原和快照管理8透過VNC進行遠端存取9使用RSync複製檔案IILinux系統開機10開機程序簡介11UEFI(整合可延伸韌體介面)12開機載入程式GRUB 213systemd精靈III系統1464位元系統環境的32位元和64位元應用程式15journalctl︰查詢systemd日誌16update-alternatives︰管理指令和檔案的多個版本17基本網路功能18印表機操作19圖形使用者介面。
20使用FUSE存取檔案系統21管理核心模組22使用udev進行動態核心裝置管理23使用kGraft即時修補Linux核心24特殊系統功能25使用NetworkManager26電源管理27VM訪客28永續性記憶體IV服務29使用NTP進行時間同步化30網域名稱系統31DHCP32使用NFS共享檔案系統33Samba34使用Autofs按需掛接35SLP36ApacheHTTP伺服器37使用YaST設定FTP伺服器38代理伺服器Squid39透過SFCB實作的網路企業管理V疑難排解40說明和文件41收集系統資訊以供支援所用42一般問題和解決方案A網路範例BGNU授權導覽←→documentation.suse.com › SUSELinuxEnterpriseServer文件 › 管理指南 › 系統 › 永續性記憶體頂端←→套用至SUSELinuxEnterpriseServer15SP128永續性記憶體#摘要#
本章包含關於使用裝備非揮發性主記憶體之SUSELinuxEnterpriseServer的額外資訊。
此類記憶體稱做永續性記憶體,由一或多個NVDIMM構成。
28.1簡介28.2詞彙28.3使用案例28.4用於管理永續性記憶體的工具28.5設定永續性記憶體28.6更多資訊28.1簡介#
永續性記憶體是一種新型電腦儲存,其速度接近動態RAM(DRAM),但同時具備RAM的逐位元組定址能力,以及固態硬碟(SSD)的效能。
與傳統RAM類似,永續性記憶體是直接安裝在主機板上的記憶體插槽。
因此,它的實體板型規格與RAM相同,以DIMM的形式提供。
這些記憶體稱做NVDIMM:非揮發性雙列直插式記憶體模組。
不過,與RAM不同,永續性記憶體在多個方面類似於快閃記憶體式SSD。
後兩者都採用固態記憶體電路形式,但除此之外,兩者都提供非揮發性儲存:系統斷電或者重新啟動後,記憶體中的內容會得到保留。
使用這兩種媒體時,寫入資料的速度比讀取資料要慢;兩者都支援有限的重新寫入週期數。
最後,與SSD一樣,如果在特定的應用方案中,更適合對永續性記憶體進行磁區層級的存取,則也可以這樣做。
不同的型號使用不同形式的電子儲存媒體(例如Intel3DXPoint),或者將NAND快閃記憶體與DRAM結合使用。
另外,業界正在開發新式的非揮發性RAM。
這意味著,不同的廠商和NVDIMM型號會提供不同的效能與持久性特徵。
由於涉及的儲存技術處於早期開發階段,不同廠商的硬體可能存在不同的限制。
因此,以下陳述適用於一般性場景。
永續性記憶體的速度最多比DRAM要慢10倍,但比快閃記憶體要快大約1000倍。
可在其中逐位元組重新寫入資料,而不像在快閃記憶體中一樣,需要抹除整個磁區,然後重新寫入資料。
最後,儘管重新寫入週期數有限,但大部分形式的永續性記憶體可以處理數百萬次重新寫入,相比之下,快閃記憶體只能處理數千個週期。
這會產生兩種重要結果:
使用最新技術無法執行僅包含永續性記憶體的系統,因此無法實現完全非揮發性的主記憶體。
必須混合使用傳統的RAM和NVDIMM。
作業系統和應用程式將在傳統RAM中執行,而NVDIMM則可當成速度極快的輔助儲存。
由於不同廠商的永續性記憶體效能特徵不同,程式設計師可能需要考慮到特定伺服器中NVDIMM的硬體規格,包括NVDIMM的數目,以及它們可以裝入哪些記憶體插槽。
顯然,這會對監管程式的使用、不同主機之間的軟體移轉等造成影響。
ACPI標準版本6中定義了此新式儲存子系統。
但是,libnvdimm支援該標準頒佈之前的NVDIMM,這些記憶體的使用方式相同。
28.2詞彙#區域
區域是永續性記憶體中可劃分為一或多個名稱空間的區塊。
如果不事先將某個區域配置到名稱空間,則您無法存取該區域的永續性記憶體。
名稱空間
非揮發性儲存的單個連續定址範圍,相當於NVMExpressSSD的名稱空間,或SCSI邏輯單位(LUN)。
名稱空間做為獨立區塊裝置顯示在伺服器的/dev目錄中。
根據所需的存取方法,名稱空間可將多個NVDIMM中的儲存合併成較大磁碟區,或者允許將這些儲存分割成較小的磁碟區。
模式
每個名稱空間還具有一種模式,該模式定義要為該名稱空間啟用哪些NVDIMM功能。
同一父區域的旁支名稱空間一律具有相同的類型,但可將其設定為使用不同的模式。
名稱空間模式包括:
devdax
裝置DAX模式。
建立單字元裝置檔案(/dev/daxX.Y
).不需要建立檔案系統。
fsdax
檔案系統DAX模式。
如果未指定其他模式,則使用預設值。
建立區塊裝置(/dev/pmemX[.Y]),支援將DAX用於ext4或XFS。
磁區
適用於不執行中繼資料檢查總數計算的傳統檔案系統。
適用於小型開機磁碟區。
與其他作業系統相容。
raw
不包含標籤或中繼資料的記憶體磁碟。
不支援DAX。
與其他作業系統相容。
注意
SUSE不支援raw模式。
無法在raw名稱空間中掛接檔案系統。
類型
每個名稱空間和區域都有一種類型,該類型定義如何存取與該名稱空間或區域關聯的永續性記憶體。
名稱空間的類型永遠與其父區域的類型相同。
有兩種不同的類型:「永續性記憶體」(可使用兩種不同的方式進行設定),以及已廢棄的「區塊模式」。
永續性記憶體(PMEM)
與RAM一樣,PMEM儲存提供位元組層級的存取。
使用PMEM時,單個名稱空間可以包含多個交錯式NVDIMM,使這些NVDIMM均可用做單個裝置。
可使用兩種方式來設定PMEM名稱空間。
將PMEM與DAX搭配使用
為DirectAccess(DAX)設定PMEM名稱空間後,存取記憶體時會繞過核心的頁面快取,直接進入媒體。
軟體可以分別直接讀取或寫入該名稱空間的每個位元組。
將PMEM與BTT搭配使用
與在傳統磁碟機中一樣,將依磁區存取設定為以BTT模式執行的PMEM名稱空間,而不是像在RAM中一樣,採用位元組定址模式。
某個轉譯表機制會將存取活動批次處理成磁區大小的單元。
BTT的優點在於,儲存子系統會確定將每個磁區完全寫入基礎媒體,如果某項寫入操作出於某種原因而失敗,則會取消註冊該操作。
因此,無法在給定的磁區中進行部分寫入。
此外,核心會快取對BTT名稱空間的存取。
缺點在於,BTT名稱空間不支援DAX。
區塊模式(BLK)
區塊模式儲存將每個NVDIMM做為獨立的裝置進行定址。
此模式已遭廢棄,且不再受支援。
除devdax名稱空間以外,其他所有類型也必須使用檔案系統格式化,如同使用傳統驅動器一樣。
SUSELinuxEnterpriseServer支援將ext2、ext4和XFS檔案系統用於此目的。
DirectAccess(DAX)
DAX允許將永續性記憶體直接對應成程序的位址空間(例如,使用mmap系統呼叫進行對應)。
DIMM實體位址(DPA)
在單個DIMM的記憶體中用做偏移量的記憶體位址;也就是說,在該DIMM中用做最低可定址位元組的從零開始的位址。
標籤
儲存在NVDIMM中的中繼資料,例如名稱空間定義。
可以使用DSM存取這些資料。
裝置特定的方法(DSM)
用於存取NVDIMM中韌體的ACPI方法。
28.3使用案例#28.3.1將PMEM與DAX搭配使用#
必須注意,這種記憶體存取方式不是交易性的。
如果發生斷電或其他系統故障,資料可能不會完全寫入儲存。
僅當應用程式可以處理部分寫入資料的情況時,PMEM儲存才適用。
28.3.1.1
可受益於較大位元組可定址儲存容量的應用程式。
#
如果伺服器代管的某個應用程式可逐位元組直接使用較大的快速儲存容量,則程式設計師可以使用mmap系統呼叫,將永續性記憶體區塊直接放入該應用程式的位址空間,而無需使用任何額外的系統RAM。
28.3.1.2避免使用核心頁面快取#
您可以節省用於頁面快取的RAM,而不要將RAM配置給應用程式。
例如,可以專門使用非揮發性記憶體來儲存虛擬機器(VM)影像。
由於這些影像不會快取,因此可以減少主機上的快取使用量,從而可在每部主機上設定更多的VM。
28.3.2將PMEM與BTT搭配使用#
當您想要使用一組NVDIMM中的永續性記憶體做為類似磁碟的極速儲存池時,此方法非常有用。
對於應用程式而言,此類裝置僅顯示為極速SSD,並可像其他任何儲存裝置一樣供您使用。
例如,LVM可以排佈在永續性記憶體的頂層,如往常一樣正常運作。
BTT的優點在於可以保證磁區寫入的不可部分完成性,因此,即使是依存於資料完整性的複雜應用程式也能保持正常運作。
可透過標準的錯誤報告通道來執行媒體錯誤報告。
28.4用於管理永續性記憶體的工具#
若要管理永續性記憶體,必須安裝ndctl套件。
安裝此套件也會安裝libndctl套件,後者提供一組使用者空間庫來設定NVDIMM。
這些工具透過libnvdimm庫運行。
該庫支援三種類型的NVDIMM:
PMEM
BLK
同步PMEM和BLK。
ndctl公用程式提供一系列有用的man頁面。
可使用以下指令存取這些頁面:
ndctlhelpsubcommand
若要查看可用子指令的清單,請使用:
ndctl--list-cmds
可用的子指令包括:
version
顯示NVDIMM支援工具的目前版本。
enable-namespace
使指定的名稱空間可供使用。
disable-namespace
防止使用指定的名稱空間。
create-namespace
從指定的儲存裝置建立新名稱空間。
destroy-namespace
移除指定的名稱空間。
enable-region
使指定的區域可供使用。
disable-region
防止使用指定的區域。
zero-labels
抹除裝置中的中繼資料。
read-labels
取回指定裝置的中繼資料。
list
顯示可用的裝置。
help
顯示關於工具用法的資訊。
28.5設定永續性記憶體#28.5.1檢視可用的NVDIMM儲存#
可以使用ndctllist指令列出系統中所有可用的NVDIMM。
在以下範例中,系統包含三個NVDIMM,它們位於單個三通道交錯集內。
root#ndctllist--dimms
[
{
"dev":"nmem2",
"id":"8089-00-0000-12325476"
},
{
"dev":"nmem1",
"id":"8089-00-0000-11325476"
},
{
"dev":"nmem0",
"id":"8089-00-0000-10325476"
}
]
結合不同的參數執行ndctl
list還可以列出可用的區域。
注意
區域可能不按數字順序顯示。
請注意,儘管只有三個NVDIMM,但它們卻顯示為四個區域。
root#ndctllist--regions
[
{
"dev":"region1",
"size":68182605824,
"available_size":68182605824,
"type":"blk"
},
{
"dev":"region3",
"size":202937204736,
"available_size":202937204736,
"type":"pmem",
"iset_id":5903239628671731251
},
{
"dev":"region0",
"size":68182605824,
"available_size":68182605824,
"type":"blk"
},
{
"dev":"region2",
"size":68182605824,
"available_size":68182605824,
"type":"blk"
}
]
空間以兩種不同的形式顯示:三個BLK類型的獨立64GB區域,或者一個PMEM類型的合併189GB區域,後者將三個交錯式NVDIMM中的所有空間表示為單個磁碟區。
請注意,available_size的顯示值與size的顯示值相同。
這意味著尚未配置任何空間。
28.5.2將儲存設定為使用DAX的單個PMEM名稱空間#
第一個範例將三個NVDIMM設定為使用DirectAccess(DAX)的單個PMEM名稱空間。
第一個步驟是建立新的名稱空間。
root#ndctlcreate-namespace--type=pmem--mode=fsdax--map=memory
{
"dev":"namespace3.0",
"mode":"memory",
"size":199764213760,
"uuid":"dc8ebb84-c564-4248-9e8d-e18543c39b69",
"blockdev":"pmem3"
}
如此會建立支援DAX的區塊裝置/dev/pmem3。
裝置名稱中的3承襲自父區域號碼(在本例中為region3)。
--map=memory選項從NVDIMM中設定出一部分PMEM儲存空間,以便可以使用這些空間來配置內部核心資料結構(稱做結構頁面)。
如此即可將新的PMEM名稱空間與O_DIRECTI/O和RDMA等功能搭配使用。
最終PMEM名稱空間的容量之所以小於父PMEM區域,是因為有一部分永續性記憶體保留給了核心資料結構。
接下來,我們驗證新的區塊裝置是否可用於作業系統:
root#fdisk-l/dev/pmem3
Disk/dev/pmem3:186GiB,199764213760bytes,390164480sectors
Units:sectorsof1*512=512bytes
Sectorsize(logical/physical):512bytes/4096bytes
I/Osize(minimum/optimal):4096bytes/4096bytes
與其他任何磁碟機一樣,在使用該裝置之前,必須先將其格式化。
在此範例中,我們使用XFS將其格式化:
root#mkfs.xfs/dev/pmem3
meta-data=/dev/pmem3isize=256agcount=4,agsize=12192640blks
=sectsz=4096attr=2,projid32bit=1
=crc=0finobt=0,sparse=0
data=bsize=4096blocks=48770560,imaxpct=25
=sunit=0swidth=0blks
naming=version2bsize=4096ascii-ci=0ftype=1
log=internallogbsize=4096blocks=23813,version=2
=sectsz=4096sunit=1blks,lazy-count=1
realtime=noneextsz=4096blocks=0,rtextents=0
接下來,可將新的磁碟機掛接到某個目錄:
root#mount-odax/dev/pmem3/mnt/pmem3
然後,可以驗證是否得到了一個支援DAX的裝置:
root#mount|grepdax
/dev/pmem3on/mnt/pmem3typexfs(rw,relatime,attr2,dax,inode64,noquota)
結果是,我們已得到一個使用XFS檔案系統格式化的,且掛接有DAX的PMEM名稱空間。
對該檔案系統中的檔案進行任何mmap()呼叫,都會傳回直接對應至NVDIMM上的永續性記憶體的虛擬位址,並且會完全繞過頁面快取。
對該檔案系統中的檔案進行任何fsync或msync呼叫仍可確定將修改後的資料完全寫入NVDIMM。
這些呼叫會衝洗透過mmap對應在使用者空間中修改之任何頁面的關聯處理器快取行。
28.5.2.1移除名稱空間#
在建立使用相同儲存的其他任何磁碟區類型之前,我們必須卸載此PMEM磁碟區,然後將其移除。
首先卸載該磁碟區:
root#umount/mnt/pmem3
然後停用名稱空間。
root#ndctldisable-namespacenamespace3.0
disabled1namespace
然後刪除該磁碟區:
root#ndctldestroy-namespacenamespace3.0
destroyed1namespace28.5.3建立使用BTT的PMEM名稱空間#
在下一個範例中,我們將建立使用BTT的PMEM名稱空間。
root#ndctlcreate-namespace--type=pmem--mode=sector
{
"dev":"namespace3.0",
"mode":"sector",
"uuid":"51ab652d-7f20-44ea-b51d-5670454f8b9b",
"sector_size":4096,
"blockdev":"pmem3s"
}
接下來,驗證新裝置是否存在:
root#fdisk-l/dev/pmem3s
Disk/dev/pmem3s:188.8GiB,202738135040bytes,49496615sectors
Units:sectorsof1*4096=4096bytes
Sectorsize(logical/physical):4096bytes/4096bytes
I/Osize(minimum/optimal):4096bytes/4096bytes
與前面設定的支援DAX的PMEM名稱空間一樣,這個支援BTT的PMEM名稱空間也會佔用NVDIMM中的所有可用儲存。
注意
裝置名稱(/dev/pmem3s)中的後置s表示磁區(sector),可用於輕鬆辨別設定為使用BTT的名稱空間。
可依前一範例中所述格式化和掛接磁碟區。
這裡顯示的PMEM名稱空間不能使用DAX。
它會使用BTT來提供磁區寫入不可部分完成性。
每次透過PMEM區塊驅動程式進行磁區寫入時,BTT都會配置一個新的磁區來接收新資料。
完全寫入新資料後,BTT將以不可部分完成性的方式更新其內部對應結構,使新寫入的資料可供應用程式使用。
如果在此過程中的任意時點發生電源故障,則寫入內容將會完全遺失,在這種情況下,應用程式可以存取其舊資料,而這些資料仍舊保持不變。
如此可以防止出現所謂「磁區撕裂」的情況。
與其他任何標準區塊裝置一樣,可以使用某種檔案系統格式化這個支援BTT的PMEM名稱空間,並在該檔案系統中使用它。
無法將該名稱空間與DAX搭配使用。
但是,此區塊裝置中檔案的mmap對應會使用頁面快取。
28.6更多資訊#
以下清單中提供了更多關於此主題的資訊︰
永續性記憶體Wiki
包含關於設定NVDIMM系統的指示、關於測試的資訊,以及關於啟用NVDIMM的規格連結。
隨著Linux中NVDIMM支援功能的不斷發展,此網站的內容也會不斷擴充。
永續性記憶體程式設計
關於在Linux和其他作業系統中設定、使用非揮發性記憶體,以及對使用此類記憶體的系統進行程式設計的資訊。
其中介紹了NVM庫(NVML)。
該庫提供有用的API用於在使用者空間中進行永續性記憶體程式設計。
LIBNVDIMM:非揮發性裝置
此文件面向核心開發人員,包含在目前Linux核心樹狀結構的「文件」資料夾中。
其中探討了涉及啟用NVDIMM的不同核心模組,列出了關於核心實作的一些技術詳細資料,並介紹了ndctl工具使用的sysfs核心介面。
GitHub:pmem/ndctl
用於管理Linux核心中libnvdimm子系統的公用程式庫。
此外還包含使用者空間庫,以及單元測試和文件。
→第 IV部分服務←第 27章VM訪客共享此頁面︰Facebook•LinkedIn•Twitter•電子郵件列印此頁面©
2022
SUSECareersLegalAboutContactUs
延伸文章資訊
- 1NVDIMM - 維基百科,自由的百科全書
非揮發性雙列直插式記憶體模組(英語:non-volatile dual in-line memory module,縮寫NVDIMM)是一種用於電腦的隨機存取記憶體。非揮發性記憶體是即使斷電也能...
- 2原創:一文詳解NVDIMM,這到底是個什麼「神仙」技術?
如圖2所示,NVDIMM-N是一種基於DRAM和NAND Flash的混合RDIMM(Registered DIMM,帶寄存器的雙列直插內存模組)模組,在常規的DDR接口上增加了供電和中斷 ...
- 3Windows 中的存放裝置類別記憶體(NVDIMM-N) 健全狀況管理
NVDIMM-N 裝置是以DRAM 為基礎。 當參考損毀的DRAM 位址時,大部分的CPU 會起始電腦檢查,然後重新啟動伺服器。 部分伺服器平台會 ...
- 4HPE 16 GB NVDIMM 單排x4 DDR4-2666 模組套件
HPE NVDIMM 是HPE Persistent Memory 產品類別中的最新、非揮發性記憶體產品。它們可提供適當大小的容量來消除較小儲存空間產生的瓶頸,從而顯著縮短延遲並提高處理 ...
- 5NVDIMM | Micron Technology, Inc
NVDIMM. Designed for applications that are sensitive to down time and require high performance to...