10 KVM虚拟机配置-虚拟CPU和虚拟内存

10.1 概述

本节介绍虚拟CPU和虚拟内存的常用配置。

10.2 元素介绍

  • vcpu:虚拟处理器的个数。

  • memory:虚拟内存的大小。

    属性unit:指定内存单位,属性值支持KiB(210 字节),MiB(220 字节),GiB(230 字节),TiB(240 字节)等。

  • cpu:虚拟处理器模式。

    属性mode:表示虚拟CPU的模式。

    • host-passthrough:表示虚拟CPU的架构和特性与主机保持一致。
    • custom:表示虚拟CPU的架构和特性由此cpu元素控制。

    子元素topology:元素cpu的子元素,用于描述虚拟CPU模式的拓扑结构。

    • 子元素topology的属性socket、cores、threads分别描述了虚拟机具有多少个cpu socket,每个cpu socket中包含多少个处理核心(core),每个处理器核心具有多少个超线程(threads),属性值为正整数且三者的乘积等于虚拟CPU的个数。
    • ARM架构支持虚拟超线程, 虚拟CPU热插与虚拟超线程功能互斥。

    子元素model:元素cpu的子元素,当mode为custom时用于描述CPU的模型。

    子元素feature:元素cpu的子元素,当mode为custom时用于描述某一特性的使能情况。其中,属性name表示特性的名称,属性policy表示这一特性的使能控制策略:

    • force:表示强制使能该特性,无论主机CPU是否支持该特性。
    • require:表示使能该特性,当主机CPU不支持该特性并且hypervisor不支持模拟该特性时,创建虚拟机失败。
    • optional:表示该特性的使能情况与主机上该特性的使能情况保持一致。
    • disable:禁用该特性。
    • forbid:禁用该特性,当主机支持该特性时创建虚拟机失败。

10.3 配置示例

例如,虚拟CPU个数为4,处理模式为host-passthrough,虚拟内存为8GiB,4个CPU分布在两个CPU socket中,且不支持超线程的配置如下:

<domain type='kvm'>    ---虚拟化类型
    ...
    <vcpu>4</vcpu>     ---虚拟cpu数量
    <memory unit='GiB'>8</memory>    ---虚拟内存大小
    <cpu mode='host-passthrough'>    ---虚拟处理器模式为host-passthrough
        <topology sockets='2' cores='2' threads='1'/>    ---socket、cores、threads数量
    </cpu>
...
</domain>

虚拟内存为8GiB,虚拟CPU个数为4,处理模式为custom,model为Kunpeng-920,且禁用pmull特性的配置如下:

<domain type='kvm'>    ---虚拟化类型
    ...
    <vcpu>4</vcpu>    ---虚拟cpu数量
    <memory unit='GiB'>8</memory>    ---虚拟内存大小
    <cpu mode='custom'>    ---虚拟处理器模式为custom
        <model>Kunpeng-920</model>    ---虚拟cpu的类型为Kunpeng-920
        <feature policy='disable' name='pmull'/>    ---cpu子元素的使能情况
    </cpu>
    ...
</domain>

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image-20230213184913440