[libvirt] Error when creating VM with persistent memory

Seema Pandit pan.blr.17 at gmail.com
Tue Aug 27 07:58:17 UTC 2019


I am trying to create a VM with added persistent memory using virsh. It
fails when persistent memory namespace size is larger than available system
memory. Please see error below, prealloc=yes is set in the command line.
For dax type namespace, as I understand, prealloc should not be needed. Is
this support to add persistent memory implemented in virsh? If so, how to
set prealloc=no? Anything else needed to add in xml for persistent memory?
Thanks.



   1. dax namespace (400GB) which is larger than system memory.

# ndctl create-namespace -t pmem -m devdax --align=4k -s 400G {

  "dev":"namespace1.0",

  "mode":"devdax",

  "map":"dev",

  "size":"393.75 GiB (422.78 GB)",

  "uuid":"00670b70-7871-4749-a901-9184b7a388d8",

  "raw_uuid":"a5a1d3f8-01e4-45a2-bad1-38fd09bf4672",

  "daxregion":{

    "id":1,

    "size":"393.75 GiB (422.78 GB)",

    "align":4096,

    "devices":[

      {

        "chardev":"dax1.0",

        "size":"393.75 GiB (422.78 GB)"

      }

    ]

  },

  "numa_node":1

}

2. Relevant parts of xml

<domain type='kvm'>

  <name>test</name>

  <uuid>02c49a19-ce9e-4320-9a6b-1ebf0913a10e</uuid>

  <maxMemory slots='16' unit='KiB'>459800576</maxMemory>

  <memory unit='KiB'>65536000</memory>

  <currentMemory unit='KiB'>65536000</currentMemory>

  <vcpu placement='static'>4</vcpu>

  <os>

:

:

<cpu mode='custom' match='exact' check='partial'>

    <feature policy='require' name='hypervisor'/>

    <numa>

      <cell id='0' cpus='0-3' memory='65536000' unit='KiB'/>

    </numa>

  </cpu>

:

:

  <memory model='nvdimm'>

      <source>

        <path>/dev/dax1.0</path>

      </source>

      <target>

        <size unit='GiB'>376</size>

        <node>0</node>

        <label>

          <size unit='KiB'>128</size>

        </label>

      </target>

      <address type='dimm' slot='0'/>

    </memory>





3. Error:

# virsh start test

error: Failed to start domain test

error: internal error: qemu unexpectedly closed the monitor: ftruncate:
Invalid argument 2019-08-22T04:16:08.744402Z qemu-system-x86_64: -object
memory-backend-file,id=memnvdimm0,prealloc=yes,mem-path=/dev/dax1.0,size=403726925824:
unable to map backing store for guest RAM: Cannot allocate memory



Virsh version 4.7.0, qemu version 3.0.0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190827/66c016cf/attachment-0001.htm>


More information about the libvir-list mailing list