Libvirt模拟持久化内存PMEM
Libvirt可以很好的管理QEMU。在QEMU里创建PMEM的方法已经在pmem.io给出,本文给出其在libvirt内的xml定义。
参考资料
XML定义文件
关键部分定义如下:
<domain type='kvm'>
<name>PM-VM</name>
...
<maxMemory slots='3' unit='GiB'>64</maxMemory>
<cpu>
<numa>
<cell id='0' cpus='0-15' memory='16' unit='GiB'/>
</numa>
</cpu>
...
<features>
<acpi/>
<apic/>
</features>
...
<os>
<type arch='x86_64' machine='pc'>hvm</type>
</os>
...
<devices>
...
<memory model='nvdimm' access='shared'>
<source>
<path>xxxx</path>
</source>
<target>
<size unit='GiB'>16</size>
<node>0</node>
</target>
</memory>
<memory model='nvdimm' access='shared'>
<source>
<path>yyyy</path>
</source>
<target>
<size unit='GiB'>16</size>
<node>0</node>
</target>
</memory>
...
</devices>
</domain>
- 一定要有
NUMA
定义 - 一定要有
ACPI
定义
DEBUG XML文件
通过下述指令可以将XML文件转换为QEMU对应启动脚本,由此定位问题
virsh domxml-to-native qemu-argv /path/to/file.xml
Enable PMEM
在虚拟机内部需要通过ndctl
指定namespace
来使能pmem
sudo ndctl create-namespace -f -e namespace0.0 --mode=fsdax
至此,就可以起飞了🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫🛫