---
title: 如何在oVirt创建虚拟机时自定义属性
description: "创建新的虚拟机时想要自定义属性qemu:commandline，但是自定义的属性不在关键字列表内。是否有办法解决此问题。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/troubleshooting/trouble/kunpengcpfs_09_0031.html
sourcePath: /source/zh/kunpengcpfs/troubleshooting/trouble/kunpengcpfs_09_0031.html
indexId: 217ae67ed2d5814191d5e2c08b0f14b2a87ce8d6803df6e6ec757804cbc9005871
---
# 如何在oVirt创建虚拟机时自定义属性


#### 问题现象描述

创建新的虚拟机时想要自定义属性qemu:commandline，但是自定义的属性不在关键字列表内。是否有办法解决此问题。


#### 关键过程、根本原因分析

由于oVirt虚拟机的XML配置不支持手动修改，针对多样的虚拟机配置，oVirt提供了自定义属性的功能来支持这些配置。官方内置的自定义属性中没有qemu:commandline，但是提供了vdsm-hook-qemucmdline扩展包支持，需要自行安装配置。


#### 结论、解决方案及效果

- vdsm-hook-qemucmdline目前只支持添加qemu:arg子标签，如果想支持qemucmdline其他属性标签，可以自行修改“/usr/libexec/vdsm/hooks/before_vm_start/50_qemucmdline”脚本文件和自定义属性配置。
- 如果要支持其他自定义属性，可以参考  官方文档(https://ovirt.org/documentation/administration_guide/index.html#appe-VDSM_and_Hooks)
，自行创建添加自定义属性和hook脚本。


1. 安装扩展包。
  1 yum install vdsm-hook-qemucmdline.noarch

2. 添加自定义属性配置。
  1 engine-config -s "UserDefinedVMProperties=qemu_cmdline=^.*$" --cver=4.4

3. 重启ovirt-engine服务。
  1 service ovirt-engine restart


使用示例如下所示。

1. 打开oVirt Web管理页面，在“编辑虚拟机”的“自定义属性”中选择“qemu_cmdline”，填写如下格式：

```
["-chardev","socket,path=/tmp/vm_sock0,server=on,wait=off,id=vm_sock","-device","virtio-serial","-device","virtserialport,chardev=vm_sock,name=serialport0"]
```


2. 虚拟机创建完并启动后，使用virsh dumpxml命令查看虚拟机配置，可以看到添加的qemu_cmdline效果如下：

```
<qemu:commandline>
<qemu:arg value='-chardev'/>
<qemu:arg value='socket,path=/tmp/vm_sock0,server=on,wait=off,id=vm_sock'/>
<qemu:arg value='-device'/>
<qemu:arg value='virtio-serial'/>
<qemu:arg value='-device'/>
<qemu:arg value='virtserialport,chardev=vm_sock,name=serialport0'/>
</qemu:commandline>
```
