我的主机是 CentOs6.8,内核是 3.10.0-957.el7.x86_64。我已在其上安装了 KVM,并使用 KVM 创建我的客户机。我的客户机运行正常。
现在,我在客户端上运行一些软件或代码。我收到如下错误:
/opt/cloudera/parcels/CDH-5.13.0-1.cdh5.13.0.p0.29/lib/kudu/sbin/kudu-tserver --tserver_master_addrs=sz-5-centos224,sz-5-centos238 --flagfile=/opt/cm-5.13.0/run/cloudera-scm-agent/process/8442-kudu-KUDU_TSERVER/gflagfile WARNING: Logging before InitGoogleLogging() is written to STDERR F0802 17:24:26.397984 5041 init.cc:84] Check failed: _s.ok() Bad status: Not implemented: The CPU on this system (QEMU Virtual CPU version (cpu64-rhel6)) does not support the SSE4.2 instruction set which is required for running Kudu. If you are running inside a VM, you may need to enable SSE4.2 pass-through.`
从错误中我可以看出这是因为客人没有安装sse4.2,那么,如何让客人启用sse4.2呢?请帮帮我。谢谢。
答案1
我遇到了与您同样的问题,以下步骤解决了我的问题:
我为 qemu64 cpu 启用了 sse4.2:
qemu-system-x86_64 -enable-kvm -cpu qemu64,+ssse3,+sse4.1,+sse4.2
通过向 vm xml 添加以下元素,确保客户机使用 qemu64 cpu 进行虚拟化:
<cpu mode='custom' match='exact' check='partial'> <model fallback='allow'>qemu64</model> <feature policy='require' name='sse4.2'/> <feature policy='disable' name='svm'/> </cpu>
我不得不禁用 svm,因为我的主机不支持它。你可以使用以下命令来编辑 vm xml:
virsh edit vm_name
销毁虚拟机并从头开始构建它:
virsh destroy vm_name
virsh start vm_name
请注意,virsh 关闭或重新启动虚拟机不会将 xml 更改应用于虚拟机。您必须销毁它才能使更改生效使用
lscpu
或cat /proc/cpuinfo/
在标志部分,您可以确保您的客户端上启用了 sse4.2。
有用的链接:-https://ahelpme.com/howto/qemu-full-virtualization-cpu-emulations-enable-disable-cpu-flags-instruction-sets/ -http://www.linux-kvm.org/page/Tuning_KVM -https://github.com/vagrant-libvirt/vagrant-libvirt/issues/667