# 检查CPU虚拟化支持
grep -E '(vmx|svm)' /proc/cpuinfo
# 检查Intel VT-x支持
grep vmx /proc/cpuinfo
# 检查AMD-V支持
grep svm /proc/cpuinfo
# 检查内核虚拟化模块
lsmod | grep kvm
# 查看详细的CPU特性
cpuid | grep -i vmx
# 检查嵌套虚拟化支持
cat /sys/module/kvm_intel/parameters/nested
# 启用嵌套虚拟化(Intel)
echo"options kvm-intel nested=1" | sudo tee /etc/modprobe.d/kvm.conf
# 启用嵌套虚拟化(AMD)
echo"options kvm-amd nested=1" | sudo tee /etc/modprobe.d/kvm.conf
三、KVM(Kernel-based Virtual Machine)# 安装KVM相关包
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
# 启动libvirt服务
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
# 添加用户到libvirt组
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER
# 验证KVM安装
virt-host-validate
# 检查KVM运行状态
sudo systemctl status libvirtd
# 基本虚拟机启动命令
qemu-system-x86_64 \
-name my-vm \
-m2048 \
-smp 2 \
-hda vm-disk.img \
-cdrom ubuntu-20.04.iso \
-boot d \
-vnc :1
# 使用KVM加速
qemu-system-x86_64 -enable-kvm -m2048 -hda vm-disk.img
# 网络配置示例
qemu-system-x86_64 \
-netdev user,id=mynet0 \
-device virtio-net-pci,netdev=mynet0 \
-hda vm-disk.img
# 存储配置示例
qemu-system-x86_64 \
-drive file=vm-disk.img,format=qcow2 \
-cdrom ubuntu.iso
# CPU拓扑配置
qemu-system-x86_64 \
-smp sockets=2,cores=4,threads=2 \
-enable-kvm
# 内存大页配置
qemu-system-x86_64 \
-m 4096 \
-mem-prealloc \
-mem-path /dev/hugepages
# IO线程配置
qemu-system-x86_64 \
-object iothread,id=iothread0 \
-device virtio-blk-pci,iothread=iothread0,drive=drive0
# 安全启动配置
qemu-system-x86_64 \
-bios /usr/share/OVMF/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/usr/share/OVMF/OVMF_VARS.fd
# 查看CPU调度信息
cat /sys/bus/cpu/devices/cpu0/cpufreq/scaling_governor
# 设置CPU性能模式
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# 查看CPU亲和性
taskset -cp <pid>
# 设置CPU亲和性
taskset -c 0,2,4 <command>
# 虚拟机的CPU绑定
virsh vcpupin <vm-name> <vcpu> <host-cpu>
# 监控虚拟机CPU使用
virsh cpu-stats <vm-name>
# 查看QEMU进程状态
ps -eo pid,pcpu,pmem,args | grep qemu
# 使用perf监控性能
perf stat -e task-clock,cycles,instructions -p $(pgrep qemu)
# NUMA优化配置
numactl --hardware
numactl --cpunodebind=0 --membind=0 qemu-system-x86_64 ...
# 检查嵌套虚拟化支持
cat /sys/module/kvm_intel/parameters/nested # Intel
cat /sys/module/kvm_amd/parameters/nested # AMD
# 启用嵌套虚拟化
echo"options kvm-intel nested=Y" | sudo tee /etc/modprobe.d/kvm.conf
echo"options kvm-intel enable_shadow_vmcs=1" | sudo tee -a /etc/modprobe.d/kvm.conf
echo"options kvm-intel enable_apicv=1" | sudo tee -a /etc/modprobe.d/kvm.conf
# 重新加载模块
sudo modprobe -r kvm_intel
sudo modprobe kvm_intel
# 验证嵌套虚拟化
grep -i nested /proc/cpuinfo
# 在虚拟机中启用虚拟化扩展
virsh edit <vm-name>
# 添加以下配置:
<cpumode='host-passthrough'>
<featurepolicy='require'name='vmx'/>
</cpu>
# 或者使用host-model
<cpumode='host-model'>
<featurepolicy='require'name='vmx'/>
</cpu>
# 检查SMEP/SMAP支持
grep smep /proc/cpuinfo
grep smap /proc/cpuinfo
# 检查Intel SGX支持
grep sgx /proc/cpuinfo
# 检查AMD SEV支持
grep sev /proc/cpuinfo
# 启用IOMMU(Intel VT-d/AMD-Vi)
# 在GRUB配置中添加:
intel_iommu=on iommu=pt
# 或
amd_iommu=on iommu=pt
# 使用sVirt强化安全
setsebool -P virt_use_svirt on
# 配置SELinux for KVM
semanage boolean -m --on virt_use_svirt
# 使用名字空间隔离
virsh --connect qemu:///system
# 定期更新KVM和QEMU
sudo apt update && sudo apt upgrade qemu-kvm libvirt
# 安装性能测试工具
sudo apt install sysbench phoronix-test-suite lmbench
# CPU性能测试
sysbench cpu --cpu-max-prime=20000 run
# 内存性能测试
sysbench memory --memory-block-size=1K --memory-total-size=10G run
# 磁盘IO性能测试
sysbench fileio --file-total-size=5G prepare
sysbench fileio --file-total-size=5G --file-test-mode=rndrw run
# 网络性能测试
iperf3 -s # 服务器端
iperf3 -c <server-ip> # 客户端
# 原生性能基准
sysbench cpu --cpu-max-prime=20000 run
# 虚拟机内性能测试
virsh console <vm-name>
# 然后在虚拟机内运行相同的测试
# 性能开销计算
overhead=$(( (native_time - vm_time) * 100 / native_time ))
echo "虚拟化开销: $overhead%"
# 检查KVM内核模块
dmesg | grep kvm
dmesg | grep -i vmx
# 检查QEMU日志
tail -f /var/log/libvirt/qemu/<vm-name>.log
# 调试虚拟化问题
qemu-system-x86_64 -d cpu_reset -D /tmp/qemu-debug.log
# 性能问题诊断
perf record -g -p $(pgrep qemu)
perf report
# 使用GDB调试QEMU
gdb --args qemu-system-x86_64 -enable-kvm -m2048 -hda vm.img
# 跟踪系统调用
strace -f -o /tmp/qemu-strace.log qemu-system-x86_64 ...
# 内存调试
valgrind --tool=memcheck qemu-system-x86_64 ...
# CPU状态检查
virsh qemu-monitor-command<vm-name> --hmp info registers
# 检查Firecracker支持
firecracker --version
# 检查gVisor容器沙箱
docker run --runtime=runsc hello-world
# 检查Kata容器
kata-runtime --version
# 机密计算虚拟化
# 使用Intel SGX或AMD SEV
# Kubernetes虚拟化集成
kubectl get nodes -o wide
# 容器与虚拟机混合部署
# 使用KubeVirt项目
kubectl get vms
# 服务网格集成
istioctl version
# 无服务器虚拟化
kn version
#!/bin/bash
# virtualization-check.sh
echo"=== 虚拟化环境全面检查 ==="
echo"1. CPU虚拟化支持:"
if grep -E '(vmx|svm)' /proc/cpuinfo > /dev/null; then
echo"✓ CPU支持硬件虚拟化"
grep -E '(vmx|svm)' /proc/cpuinfo | head -1
else
echo"✗ CPU不支持硬件虚拟化"
fi
echo -e "\n2. KVM模块状态:"
if lsmod | grep kvm > /dev/null; then
echo"✓ KVM模块已加载"
lsmod | grep kvm
else
echo"✗ KVM模块未加载"
fi
echo -e "\n3. 嵌套虚拟化:"
if [ -f /sys/module/kvm_intel/parameters/nested ]; then
echo"Intel嵌套虚拟化: $(cat /sys/module/kvm_intel/parameters/nested)"
elif [ -f /sys/module/kvm_amd/parameters/nested ]; then
echo"AMD嵌套虚拟化: $(cat /sys/module/kvm_amd/parameters/nested)"
fi
echo -e "\n4. 虚拟化工具检查:"
for tool in qemu-system-x86_64 virsh virt-manager; do
ifcommand -v $tool > /dev/null; then
echo"✓ $tool 已安装: $(which $tool)"
else
echo"✗ $tool 未安装"
fi
done
#!/bin/bash
# kvm-optimize.sh
# 设置CPU性能模式
echo"设置CPU性能模式..."
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# 启用嵌套虚拟化
echo"启用嵌套虚拟化..."
if [ -f /sys/module/kvm_intel/parameters/nested ]; then
echo"options kvm-intel nested=Y" | sudo tee /etc/modprobe.d/kvm.conf
echo"options kvm-intel enable_shadow_vmcs=1" | sudo tee -a /etc/modprobe.d/kvm.conf
fi
# 配置大页内存
echo"配置大页内存..."
echo 2048 | sudo tee /proc/sys/vm/nr_hugepages
# 优化网络性能
echo"优化网络性能..."
sudo ethtool -K eth0 tx off rx off sg off tso off
echo"优化完成!请重启系统使更改生效。"