QEMU文档之virtio pmem

        本文档解释了virtio pmem设备的建立和使用。virtio pmem设备为正规存储中的半虚拟化持续内存设备。

1 使用场景

        virtio pmem允许绕过guest page cache并直接使用host page cache。这会减少guest内存footprint因为host可以在内存压力下做出有效内存回收。

2 virtio-pmem vs nvdimm模拟

        在正常host存储上的NVDIMM模拟不会坚持guest写因为在设备spec中没有定义的语义。virtio pmem设备提供在non-NVDIMM host存储上的guest写。

3 virtio pmem的使用

        可以使用QEMU命令行创建一个以memory-backend-file备份的virtio pmem设备,如下面例子所示:

-object memory-backend-file,id=mem1,share,mem-path=./virtio_pmem.img,size=4G
-device virtio-pmem-pci,memdev=mem1,id=nv1

        这里,"object memory-backend-file,id=mem1,share,mem-path=<image>,size=<image size>"创建一个指定大小的backend文件。

        "device virtio-pmem-pci,memdev=mem1,id=nv1"通过上述内存后端设备创建一个virtio pmem PCI设备

        如果提供多个"-object"和"-device"对,多virtio pmem设备将被创建。

4 Hotplug

        可以通过QEMU monitor对virtio pmem设备进行热插。首先,通过object_add来增加内存备份;然后通过device_add增加virtio pmem设备。

        比如,下面命令对guest增加另外4GB virtio pmem设备:

(qemu) object_add memory-backend-file,id=mem2,share=on,mem-path=virtio_pmem2.img,size=4G
(qemu) device_add virtio-pmem-pci,id=virtio_pmem2,memdev=mem2

5 Guest Data Persistence

        在non-NVDIMM上的guest data persistence要求guest用户应用发送fsync/msync。这与真实的nvdimm后端不一样,并不需要另外的fsync/msync。在host后备文件上坚持guest写,这仍在host page cache中,这会在电源失败时导致数据丢失的风险。

        对于virtio pmem设备,MAP_SYNC标志不支持。它提供暗示给应用让其对write persistence发fsync。

6 限制

- 不支持真实nvdimm设备后端

- 不支持virtio pmem hotplug

- 不支持ACPI NVDIMM特性如regions/namespaces

- 不支持ndctl命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值