CloudStack 默认情况下 KVM实例的CPU模型可能是QEMU虚拟CPU版本x.x.x,其CPU特性暴露最少。
如果需要设置CPU。在大多数情况下,主机管理员在每个主机配置文件(/etc/CloudStack/agent/agent.properties)中指定客户CPU配置就足够了

  1. custom: you can explicitly specify one of the supported named model in /usr/share/libvirt/cpu_map.xml
  2. host-model: libvirt will identify the CPU model in /usr/share/libvirt/cpu_map.xml which most closely matches the host, and then request additional CPU flags to complete the match. This should give close to maximum functionality/performance, which maintaining good reliability/compatibility if the guest is migrated to another host with slightly different host CPUs.
  3. host-passthrough: libvirt will tell KVM to passthrough the host CPU with no modifications. The difference to host-model, instead of just matching feature flags, every last detail of the host CPU is matched. This gives absolutely best performance, and can be important to some apps which check low level CPU details, but it comes at a cost with respect to migration: the guest can only be migrated to an exactly matching host CPU.

custom:可以在/usr/share/libvirt/cpu_map.xml中显式指定受支持的命名模型之一。

host-model:libvirt将识别/usr/share/libvirt/cpu_map.xml中与主机最接近的CPU模型,然后请求额外的CPU标志来完成匹配。这将提供接近最大功能/性能的功能/性能,如果将来宾迁移到具有稍微不同的主机CPU的另一个主机,则该功能/性能将保持良好的可靠性/兼容性。

host-passthrough:libvirt将告诉KVM在没有修改的情况下通过主机CPU。主机模型的不同,而不仅仅是匹配特征标志,主机CPU的每一个细节都是匹配的。这提供了绝对最好的性能,对于一些检查低级别CPU细节的应用程序来说也是很重要的,但这是以迁移为代价的:客户只能迁移到完全匹配的主机CPU上。

有时候 需求不同虚拟主机拥有不同型号的CPU,为什么会有这样的需求咱也不懂。。。这时候参考KVM和qumu的使用。最终我也没实现 如何让cloudstack管理的虚拟机如何在同一个宿主机上有不同CPU型号。。。

在 VMwareWorkstation 创建两个虚拟机 一个作为计算节点 一个作为 管理节点时。。。发现在设置custom 时。。。有些 模型不支持设置。。。

本来以为 是因为 qemu 版本问题。。。因为cloudstack4.11.0 版本安装kvm 主机建议 qemu版本 2.0 或以上,但是CentOS7 版本的附带的qemu-kvm 安装包是1.5.3 版本。。。于是源码安装了 qemu 最后 发现 只有 2.6版本。。。可以正常安装后使用,但是,依然是有些 CPU模型无法设置。。。

这里 附上 qemu的源码安装
安装依赖包

yum -y install gcc gcc-c++ automake libtool zlib-devel glib2-devel bzip2-devel libuuid-devel spice-protocol spice-server-devel usbredir-devel libaio-devel

下载压缩包。。。https://download.qemu.org/

解压

tar xf qemu-XXX.tar.bz2

进入该解压后的包

cd qemu-XXX

配置安装。。可以先查看一下帮助

./configure --help ./configure  --prefix=/usr/local/qemu  --target-list="x86_64-softmmu x86_64-linux-user" --enable-debug

这里一定要说。target-list 表示要安装的 模拟架构 x86_64-softmmu 表示安装X86_64 位架构的模拟架构命令所需 x86_64-linux-user 安装该架构的虚拟机所需。 注,一般 我们只用安装 这两个就行了。。。因为target list 中安装的是独立的命令。并不是包含在一个指令中。

编译 这里 qemu2.1-2.5 版本 编译都会 报错。。。不知为何

make

执行安装

make install

安装路径在 配置安装时指定了 /usr/local/qemu 。可以将这里面的 /bin 目录下命令 添加到环境变量。。。

vim ~/.bashrc

将路径添加到末尾

export PATH=/usr/local/qemu/bin:$PATH

重新激活该文件
source ~/.bashrc

如此做 即使之前安装了 CentOS7自带的qemu1.5.3 版本。 相应的 qemu-img qemu-io 等命令也会执行/usr/local/qemu/bin/ 中的。。。

然后。。。为了使cloudstack使用新安装的qemu(这里说一句。cloudstack是使用qemu + kvm + libvirt 来管理KVM主机的。使用的也是这些个开源软件 但是做了一些封装和端口处理。)
执行 virsh capabilities 可以看到 一大堆内容。。。但是大多内容先忽视。。。

可以看到 一个 host 大标签 和 两个 guest 大标签。。。host大概是对计算节点主机的一个大概描述。guest表示在该计算节点上创建虚拟机的一个描述。一个是32位,一个是64位。。。 先看guest 可以看到一行。不管是64位还是32位 都有 /usr/libexec/qemu-kvm 大约是创建的虚拟机和 这个指令有关。。。

安装完新版 qemu 后,我们要把这个指定替换掉。。。可以先备份。然后

ln -s  /usr/local/qemu/bin/qemu-system-x86_64 /usr/libexec/qemu-kvm
ln -s /usr/local/qemu/libexec/qemu-bridge-helper /usr/libexec/qemu-bridge-helper

然后根据该指令查询可 设置的CPU型号

/usr/libexec/qemu-kvm -cpu ?
[root@agent ~]# /usr/libexec/qemu-kvm -cpu ?
x86           qemu64  QEMU Virtual CPU version 2.5+                    X
x86           phenom  AMD Phenom(tm) 9550 Quad-Core Processor           X
x86         core2duo  Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz  X
x86            kvm64  Common KVM processor                              Y
x86           qemu32  QEMU Virtual CPU version 2.5+
x86            kvm32  Common 32-bit KVM processor
x86          coreduo  Genuine Intel(R) CPU           T2600  @ 2.16GHz  X
x86              486
x86          pentium
x86         pentium2
x86         pentium3
x86           athlon  QEMU Virtual CPU version 2.5+                    X
x86             n270  Intel(R) Atom(TM) CPU N270   @ 1.60GHz           X
x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)     Y
x86           Penryn  Intel Core 2 Duo P9xxx (Penryn Class Core 2)      Y
x86          Nehalem  Intel Core i7 9xx (Nehalem Class Core i7)         Y
x86         Westmere  Westmere E56xx/L56xx/X56xx (Nehalem-C)            X
x86      SandyBridge  Intel Xeon E312xx (Sandy Bridge)
x86        IvyBridge  Intel Xeon E3-12xx v2 (Ivy Bridge)                X
x86    Haswell-noTSX  Intel Core Processor (Haswell, no TSX)
x86          Haswell  Intel Core Processor (Haswell)
x86  Broadwell-noTSX  Intel Core Processor (Broadwell, no TSX)
x86        Broadwell  Intel Core Processor (Broadwell)
x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)             Y
x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)            X
x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)            X
x86       Opteron_G4  AMD Opteron 62xx class CPU                        X
x86       Opteron_G5  AMD Opteron 63xx class CPU                        X
x86             host  KVM processor with all supported host features (only available in KVM mode)

后面的XY是我自己加的。。。没什么意义 懒得删除了。。。看上去可以选择的CPU不少啊
设置 /etc/cloudstack/agent/agent.properties 然后发现其中几个CPU模型设置后 系统VM 还是启动失败。。。所以和qemu版本应该无关。即使1.5.3 版本 ,cloudstack也能正常运行。。。
看日志文件 看了好久 也没发现到底为什么 系统VM会启动失败。。。

ERROR 信息倒是有

com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[ConsoleProxy|v-6-VM]Scope=interface com.cloud.dc.DataCenter; id=1

什么资源 不够之类的。。。没什么用

尝试了好多次。。。发现错误信息在 info 中,不是 error

2020-05-06 14:11:35,518 INFO  [c.c.v.VirtualMachineManagerImpl] (Work-Job-Executor-45:ctx-335ce82b job-1/job-54 ctx-2f92e5f7) (logid:56d5ba67) Unable to start VM on Host[-1-Routing] due to the CPU is incompatible with host CPU: Host CPU does not provide required features: monitor

大抵意思是 创建该CPU模型需要 HOST 就是宿主机 的CPU具有 monitor 特性。。。我TM。找了快两天原因。竟然是这个。。。查看当前host 的 CPU是不是没有 该特性

cat /proc/cpuinfo

flags 里面就是 host 的CPU的特性。。。要是觉得过多不好看 直接查询 没结果就是没有。。。

egrep "monitor" /proc/cpuinfo

果然没有,可能是因为这个HOST本身就是VMWare Worksations 创建的一个虚拟机的缘故吧。。。正常的主机应该是有的。。。。
另外 virsh capabilities host 大标签中 feature name 也是该宿主机 的CPU特性 可以看到 并没有。。。

<host><uuid>a28c4d56-acc8-5031-6d1f-1e77095a16cf</uuid><cpu><arch>x86_64</arch><model>Nehalem</model><vendor>Intel</vendor><microcode version='5'/><counter name='tsc' frequency='2793049000' scaling='no'/><topology sockets='2' cores='2' threads='1'/><feature name='vme'/><feature name='ds'/><feature name='ss'/><feature name='ht'/><feature name='vmx'/><feature name='x2apic'/><feature name='tsc-deadline'/><feature name='hypervisor'/><feature name='tsc_adjust'/><feature name='rdtscp'/><feature name='invtsc'/><pages unit='KiB' size='4'/><pages unit='KiB' size='2048'/></cpu><power_management><suspend_mem/><suspend_disk/><suspend_hybrid/></power_management><iommu support='no'/><migration_features><live/><uri_transports><uri_transport>tcp</uri_transport><uri_transport>rdma</uri_transport></uri_transports></migration_features><topology><cells num='1'><cell id='0'><memory unit='KiB'>4193716</memory><pages unit='KiB' size='4'>1048429</pages><pages unit='KiB' size='2048'>0</pages><distances><sibling id='0' value='10'/></distances><cpus num='4'><cpu id='0' socket_id='0' core_id='0' siblings='0'/><cpu id='1' socket_id='0' core_id='1' siblings='1'/><cpu id='2' socket_id='1' core_id='0' siblings='2'/><cpu id='3' socket_id='1' core_id='1' siblings='3'/></cpus></cell></cells></topology><cache><bank id='0' level='3' type='both' size='8' unit='MiB' cpus='0-1'/><bank id='1' level='3' type='both' size='8' unit='MiB' cpus='2-3'/></cache><secmodel><model>selinux</model><doi>0</doi><baselabel type='kvm'>system_u:system_r:svirt_t:s0</baselabel><baselabel type='qemu'>system_u:system_r:svirt_tcg_t:s0</baselabel></secmodel><secmodel><model>dac</model><doi>0</doi><baselabel type='kvm'>+107:+107</baselabel><baselabel type='qemu'>+107:+107</baselabel></secmodel></host>

所以 最后并未能实现 cloudstack 的一个宿主机上不同虚拟机拥有不同的CPU型号。。。只是发现qemu源码安装方式然后,发现 高版本qemu 在和cloudstack结合使用稳定性还不如 qemu1.5.3

另 源码安装的 qemu 并没有 make uninstall 命令。需要卸载可以直接删除 /usr/local/qemu 然后在 source 就是解压后的文件夹里执行 make clean 即可。。。当然
要把在 /usr/libexec/ 里qemu-kvm 备份恢复过来。。。

CloudStack使用KVM时设置虚拟实例的CPU型号相关推荐

  1. 如何让CloudStack使用KVM创建Windows实例成功识别并挂载数据盘

    问题产生背景: 使用CloudStack+ KVM组合进行资源池纳管工作,通过ISO镜像文件创建了两个模板: RHEL6U3 64位系统以及WindowsServer2008 R2 SP1 64位系统 ...

  2. h3c怎么设置虚拟服务器,h3c设置虚拟服务器

    h3c设置虚拟服务器 内容精选 换一换 您可以在几分钟之内,批量创建多台弹性云服务器.该任务指导用户使用制作的私有镜像创建应用集群,包括管理控制台方式和基于HTTPS请求的API(Applicatio ...

  3. 华为wifi设置虚拟服务器,家用路由器设置虚拟服务器

    家用路由器设置虚拟服务器 内容精选 换一换 弹性网卡即虚拟网卡,您可以通过创建并配置弹性网卡,并将其附加到您的云服务器实例(包括弹性云服务器和裸金属服务器)上,实现灵活.高可用的网络方案配置.弹性网卡 ...

  4. 【KVM系列07】使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照

    第七章 使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 1. QEMU/KVM 快照 1.1 概念 1.2 使用 virsh 实验 1.3 外部快照的删除 2. OpenSt ...

  5. h3c怎么创建虚拟服务器,h3c 设置虚拟服务器

    h3c 设置虚拟服务器 内容精选 换一换 通过云服务器或者外部镜像文件创建私有镜像时,如果云服务器或镜像文件所在虚拟机的网络配置是静态IP地址时,您需要修改网卡属性为DHCP,以使私有镜像发放的新云服 ...

  6. 华为路由器A1如何设置虚拟服务器,华为路由器A1如何设置虚拟服务器

    华为路由器A1如何设置虚拟服务器 内容精选 换一换 当您在使用VPC的路由表功能时,需要在弹性云服务器上部署SNAT,使得VPC内其他没有绑定EIP的弹性云服务器可以通过它访问Internet.该配置 ...

  7. 路由器设置虚拟服务器王者人生,路由器设置虚拟服务器王者人生

    路由器设置虚拟服务器王者人生 内容精选 换一换 Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器进行连接,连接示例图如图1所示.Atlas 200 DK连接Ubuntu服 ...

  8. mercury添加虚拟服务器,mercury怎么设置虚拟服务器

    mercury怎么设置虚拟服务器 内容精选 换一换 Windows场景中,当把源端服务器迁移到华为云后,目的端服务器C盘的已用空间比对应源端服务器C盘的已用空间大至少1GB,而不是与源端服务器C盘的已 ...

  9. 虚拟拨号服务器名称,怎么设置虚拟拨号服务器

    怎么设置虚拟拨号服务器 内容精选 换一换 您需要提前准备好符合条件的镜像文件,并了解操作系统的已知问题(参见已知问题).表1中,文件系统.网络.驱动相关的配置需要在虚拟机内部完成,强烈建议您在原平台的 ...

最新文章

  1. vs oracle带参数更新,Oracle vs PostgreSQL Develop(23) - PL(pg)sql(参数声明)
  2. 神经网络的输出层有哪些_神经网络算法—总结篇
  3. python之堡垒机(第九天)
  4. Python的多进程锁的使用
  5. flash(as3.0)在线聊天室
  6. 区块链技术指南之分布式系统核心问题
  7. 深入机械制造业供应链关键节点,SCM供应链管理系统全面防控企业供应链风险
  8. IOS 控制器切换的动画样式
  9. 从Uniswap v3来看新的期权范式?
  10. PIXEL-LEVEL SELF-PACED LEARNING FOR SUPER-RESOLUTION
  11. chatter命令详解(用来记录知识)
  12. python搜索pdf内容所在页码_使用pyPDF从文档中检索页码
  13. 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。
  14. 51单片机距离测试软件,单片机超声波传感器测量距离
  15. 手机病毒“僵尸网络”进入高发期
  16. 恨如一潭不见底的深渊
  17. hexo博客添加本地搜索功能
  18. 任正非:5G关系着公司的生死存亡,不惜代价要赢!
  19. IT中小企业的股权激励方案设计
  20. 万达电影需要长期救赎

热门文章

  1. dz plugin.php,解决dz论坛提示“插件不存在或已关闭”
  2. ADO数据库连接中的Persist Security Info参数的作用
  3. layui tabel筛选列 记忆功能
  4. Java开发工具有哪些
  5. 浅谈通用的字典表结构设计
  6. java mongo replica_mongo 的replica set的集群模式 实现读写分离
  7. Humanoid动画显示与Generic不一致
  8. 2023网盘扩容技术
  9. 51单片机的直流电机PWM调速控制系统(附Proteus仿真+C程序等全套资料)
  10. 自由职业为何会崛起成为一股暗潮?