完成Persistent Memory的模拟

过程主要参考:

https://nvdimm.wiki.kernel.org/how_to_choose_the_correct_memmap_kernel_parameter_for_pmem_on_your_system

https://software.intel.com/zh-cn/articles/how-to-emulate-persistent-memory-on-an-intel-architecture-server

https://pmem.io/2016/02/22/pm-emulation.html

整个过程中遇到了不少的问题,要考虑的细节和整个完整步骤全部整理在下面的文章里

我的虚拟机是Ubuntu,内存是1G,硬盘是20G,内核版本是4.15。这里的内存最好调到最大。最后我将内存调到了6.2G(因为我的本机内存是8G的)

我猜测如果你的版本在4.2以上的话,不需要经过最开始的内核配置,最开始在这里走了很多弯路,浪费了很多时间,其实没必要进行配置,整个过程其实很简单,可以直接开始。

第一步

也是最重要的一步,获取虚拟机的 root 权利

$ su

第二步

可以先查一下自己虚拟机的内存配置

$ dmesg | grep BIOS-e820

这是最开始内存只有 1G 的配置,原本我们必须找到后面标有 “usable” 的内存空间才能使用,但是参考网页上的配置

最后一行从 4G-20G 显示的 ”usable“ 很明显在我的 1G 内存虚拟机里面 并没有最后一行,这是这次配置的最主要问题,这个问题很重要,如果你遇见这个问题,请把内存调到最大,然后就能得到这个结果

这里我们只用最后一行标有 ”usable“ 的空间

第三步

执行

$ vi /etc/default/grub

在代码的这一个地方添加

这里的意思就是,从 4G 开始,取了 2G 作为 PMEM 的空间。这里的 ”4G“ 和 ”2G“ 要根据自己的虚拟机来定,特别是这个 ”4G“ 是要根据自己的 ”usable“ 空间的起点来进行设置,然后这个 ”2G“ 其实只是一个空间大小,没有必要一定要设置 ”2G“ ,只要搞清楚这两个参数的关系就行了,也可以多设置几个空间,如果想要的话可以看看参考链接里面,上面设置的 ”4G“,不要乱设置。

保存退出

第三步

$ update-grub2

成功后一定要先重启。

如果其中遇到问题,请百度解决,在这里我遇到过问题主要是不小心将里面本来有的代码改掉了,也不是什么大问题。

第四步

重启之后执行

$ dmesg | grep user

这就代表分配成功了。

第五步——DAX - Direct Access

执行

$ mkdir /mnt/mem
$ mkfs.ext4 /dev/pmem0   
$ mount -o dax /dev/pmem0 /mnt/mem

没问题的话,就成功了,其中遇到的问题就是最后一步挂载失败,如果遇到这个问题就是开始的存储器范围设置问题,还有如果想更多的设置和查看,请多看参考链接进行了解。

猜你喜欢

转载自blog.csdn.net/D_____S/article/details/85052351