远程管理kvm虚拟机
virt-manager不仅可以在本地主机上管理kvm虚拟机,也可以远程管理其他宿主机上的虚拟机。
首先我们需要检查本主机是否安装了openssh-askpass
yum -y install openssh-askpass
接着我们只需要进入菜单栏中File选择添加连接,之后就能通过这里管理其他虚拟机。
virsh命令行管理虚拟机
virsh既有命令行模式,也有交互模式。在shell命令行下直接输入virsh就进入交互模式;在virsh后加上命令参数就是命令行模式。
virsh help | 查看帮助信息 |
virsh list | 列出所有运行中的kvm虚拟机 |
virsh list --all | 列出所有kvm虚拟机 |
virsh start centos7.0 | 启动某台虚拟机 |
virsh shutdown centos7.0 | 关闭某台虚拟机 |
virsh destroy centos7.0 | 强制关闭某台虚拟机 |
virsh autostart centos7.0 | 设置某台虚拟机为开机自启 |
virsh autostart --disable centos7.0 | 关闭开机自启 |
virsh pool-list | 列出存储池 |
virsh undefine centos7.0 | 删除一个虚拟机 |
virsh define | 从一个XML 文件定义(但不开始)一个域 |
virsh edit centos7.0 | 编辑某台虚拟机配置文件 |
我们既可以用virsh命令行来修改虚拟机配置文件,也可以直接在宿主机中修改:
vim /etc/libvirt/qemu/centos7.0.xml
虚拟机克隆
virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.qcow2
kvm虚拟化透传
nested虚拟机嵌套:简单来说,就是要在虚拟机上跑虚拟机。
kvm的虚拟机嵌套与VMWare原理不同:VMWare第一层使用硬件虚拟化,第二层完全由软件模拟,因此VMWare只能做两层嵌套;而kvm是将物理CPU的特性完全传给虚拟机,只要硬件性能允许,就可以嵌套无数层。
KVM 虚拟化需要CPU对虚拟化技术的支持,当我们进行虚拟机嵌套虚拟机时,我们需要让虚拟机CPU对 VT 功能的支持达到透传的效果。我们来查看一层虚拟机是否支持VT功能:
cat /proc/cpuinfo | grep vmx
如果没有结果就说明一层虚拟机并未将宿主机CPU的VT功能成功透传,我们需要手动进行CPU虚拟化透传。
在最外层服务器上执行:
echo 'options kvm_intel nested=1' > /etc/modprobe.d/kvm-nested.conf
重新加载kvm_intel模块
modprobe -r kvm_intel
modprobe kvm_intel
修改虚拟机配置文件,使物理CPU直接暴露给虚拟机
virsh edit centos7.0
<cpu mode='host-passthrough' check='none'/>
之后我们可以看到在虚拟机上也支持VT功能了。