持久内存(PMem)科普

持久内存(PMem)是一种新型内存条,结合了内存和外存的优点,提供大容量、高性能且具有持久性。它可以作为内存使用,也可用于高速持久化需求,适用于大内存成本优化、高性能持久化应用和内存数据持久性场景。Intel的傲腾持久内存是PMem的一种实现,适用于需要大内存、快速恢复和持久化特性的系统。

image-20210616113503631

【AI 应用与异构内存编程挑战赛】火热进行中 ☛ 大赛官网 | 报名链接 | 技术社区

大赛支持微信群

img

 

来源:原创
如需转载,请注明来自 memark.io 技术社区

你说不定在不同的渠道已经听说过一些类似的让人一头雾水的技术名词,比如非易失性存储,持久内存,傲腾持久内存,甚至英文的名词 Optane SSD, Optane persistent memory, PMem, DCPMM, AEP 等等…… 这些名词到底是什么?有什么联系?有什么用处?本文从科普的角度,帮你回答这些问题。希望你看了本文以后,不管你是程序员还是相关行业从业者,至少都能明白什么是持久内存,它到底能发挥什么样的作用。

持久内存到底是什么?

首先回答一下混乱的命名问题,我们暂时不纠结于这些名字之间的演化关系了,简单来说可以认为大部分都是指的同一个东西(当然不是严格正确)。目前Intel中文官方命名为“英特尔傲腾持久内存”,简称为“持久内存”。英文官方名为 Intel Optane Persistent Memory,简称为 PMem。因此在本篇文章中,统一使用“持久内存”或者“PMem”进行指代。

那么正式开始……说到底,持久内存其实是一种新型的内存条,我们可以先来看一下,它长这个样子,和普通内存条其实没啥特别大差异,而且它就是插在服务器的内存插槽里的。

所以简单来说,你可以直接从京东(https://item.jd.com/24641671886.html)上面买来,然后插到你的服务器上的内存插槽上,你就可以使用持久内存啦。当然,持久内存对于硬件是有一定的要求的,AMD的CPU就不用想了,持久内存属于 Intel 的独家法宝,自然不会留给竞争对手做支持。具体CPU的支持型号可以查看:https://discuss.memark.io/t/topic/22/2 当然如果想要发挥持久内存的最大优势,其在硬件配置插法上是有一定的讲究的,后面将会具体展开。

然后我们研究下持久内存在整个计算机体系架构中的位置。学过计算机的同学,一定对计算机的存储金字塔的架构非常熟悉,那么如果我们把持久内存也放到这个金字塔里,会是在什么位置呢?我们具体来看一下。如下图所示的存储金字塔中,我们可以看到持久内存处于外存(HDD或者SSD)以及内存DRAM之间,其不论在容量、性能、价格上都是处于两者的中间位置。除此以外,在功能上,它

<think>好的,我现在需要帮助用户了解如何在Linux系统中挂载PMEM持久化内存,并使用DAX或文件系统配置。首先,我得回忆一下之前提供的引用内容,看看有哪些相关信息可以利用。 根据引用[3]里的内容,提到了在Linux中挂载持久化内存需要修改GRUB的启动参数,使用memmap参数来分配内存区域作为PMEM。例如,memmap=4G!12G表示从12G开始分配4G的空间作为PMEM。这一步应该是配置PMEM的基础,所以需要先配置内核参数,然后更新grub并重启系统。 接下来,用户提到要使用DAX或文件系统配置。引用[2]中讨论了支持持久内存感知的文件系统,比如通过mmap映射PMEM空间,并利用DAX机制绕过DRAM缓存。这里可能需要创建文件系统时启用DAX选项,比如在mkfs时使用-d选项或者挂载时指定dax参数。 然后,关于文件系统的选择,引用[1]提到了闪存文件系统如JFFS2和UBIFS,但PMEM可能需要不同的文件系统。根据之前的知识,ext4和xfs都支持DAX,所以用户可能需要选择其中之一,并在格式化时启用相关选项。例如,使用mkfs.ext4 -F /dev/pmem0或者mkfs.xfs -f /dev/pmem0。 挂载的时候,需要指定dax选项,比如mount -o dax /dev/pmem0 /mnt/pmem。同时,确保挂载点存在,可能需要创建目录。 另外,用户可能还需要安装PMDK这样的持久内存编程库,以便更好地管理PMEM,这部分在引用[2]中也提到了。不过用户的问题主要是挂载和配置,所以安装PMDK可能作为可选步骤。 现在需要把这些步骤整理成一个清晰的流程:配置内核参数、重启、创建命名空间(如果使用ndctl工具)、创建文件系统、挂载并启用DAX。可能还需要检查内核版本是否支持这些功能,比如Linux 4.2以上支持DAX。 需要注意的是,不同的PMEM模式(比如fsdax、devdax)可能需要不同的处理方式,但用户的问题可能更关注基本的挂载步骤,因此可能需要简要说明这些模式的区别,并提供常用的fsdax配置方法。 最后,生成相关问题,可能涉及性能优化、验证步骤、不同文件系统比较、DAX优势以及PMDK的使用等。</think>### 分步指南:Linux系统中挂载PMEM持久化内存 #### 1. **内核参数配置** 通过`memmap`参数预留内存区域作为持久化内存PMEM)。修改`/etc/default/grub`文件,在`GRUB_CMDLINE_LINUX`中添加以下内容(示例分配4GB PMEM,起始地址为12GB): ```bash GRUB_CMDLINE_LINUX="memmap=4G!12G" ``` 更新GRUB并重启: ```bash sudo update-grub && sudo reboot ``` 重启后可通过`dmesg | grep -i pmem`验证PMEM设备(如`/dev/pmem0`)是否被识别[^3]。 --- #### 2. **创建PMEM命名空间(可选)** 若使用Intel Optane PMEM等设备,需通过`ndctl`工具创建命名空间(以`fsdax`模式为例): ```bash sudo ndctl create-namespace -m fsdax -e namespace0.0 ``` 此操作将PMEM设备初始化为支持DAX的文件系统模式[^2]。 --- #### 3. **创建支持DAX的文件系统** 选择支持DAX的文件系统(如ext4或xfs),以ext4为例: ```bash sudo mkfs.ext4 -F /dev/pmem0 ``` **关键参数**: - `-F`:强制格式化,避免交互确认 - `-O dax`:显式启用DAX(某些系统需内核≥5.10) --- #### 4. **挂载PMEM并启用DAX** 创建挂载目录并挂载设备: ```bash sudo mkdir /mnt/pmem sudo mount -o dax /dev/pmem0 /mnt/pmem ``` 验证挂载状态: ```bash mount -v | grep pmem ``` 输出应包含`dax`标志,表明DAX已启用。 --- #### 5. **配置持久化(可选)** 将挂载信息写入`/etc/fstab`以实现开机自动挂载: ```bash /dev/pmem0 /mnt/pmem ext4 defaults,dax 0 0 ``` --- ### 关键配置对比 | 配置项 | 作用 | 示例参数 | |--------------|-----------------------------------|-------------------| | `memmap` | 预留PMEM物理地址范围 | `memmap=4G!12G` | | `-m fsdax` | 初始化PMEM为文件系统模式 | `ndctl -m fsdax` | | `-o dax` | 挂载时启用直接访问(绕过缓存) | `mount -o dax` | --- ### 注意事项 1. **内核版本要求**:DAX需Linux 4.2+,完整PMEM支持建议≥5.10 2. **硬件模式**:确保PMEM硬件处于`App Direct`模式而非`Memory Mode` 3. **性能验证**:通过`mmap`直接操作PMEM文件,检查是否绕过页缓存(参考`vmtouch`工具)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值