使用Intel 教程进行参考。
首先需要一台linux设备,虚拟机一样可以。
教程里建议使用kernel版本在4.3及以上的linux版本(基本上现在的linux版本都是)
我使用的虚拟机装的linux版本为ubuntu 20.04。
教程里说的很麻烦,要对内核进行编译,但是其实现在的linux版本都可以支持PMEM,所以直接更改grub文件就行。
首先
dmesg | grep BIOS-e820
可以看到系统中的可用内存分布:
(教程示例)
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000bffdffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000bffe0000-0x00000000bfffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000053fffffff] usable
其中地址0x0000000100000000-0x000000053fffffff是可以使用的
执行下面的语句:
sudo vi /etc/default/grub
然后在其中增加一句
GRUB_CMDLINE_LINUX="memmap=nn(GMK)!ss(GMK)"
里面nn和ss都是数字,nn是你想给PM分配的大小,ss是分配开始的地址,GMK分别代表非配大小的单位。
比如:
GRUB_CMDLINE_LINUX="memmap=512M!4G"
就意味着从0x0x0000000100000000地址分配512MB的空间给PM。
然后执行下面的命令:
dmesg | grep user:
可以发现已经有一块区域被分配为Persistent了。然后执行:
lsblk
可以看到被分配的Persistent Memory已经被系统识别出来了。
然后执行以下命令:
mkdir /mnt/pmemdir
mkfs.ext4 /dev/pmem0
mount -o dax /dev/pmem0 /mnt/pmemdir
先在/mnt/下创建pmemdir目录,然后在pmem0上创建文件系统,再将其挂载在pmemdir目录中。
使用命令
df -h
可以查看挂载情况
至此结束。
教程中到这写到:
Now files can be created on the freshly mounted partition for use in creating PMDK pools.
可以在新挂载的分区上创建文件,用于创建PMDK池。