Debian Jessie上的KVM入门
KVM是针对Linux on x86(包括64位)硬件的完整虚拟化解决方案,其中包含虚拟化扩展,Intel VT或者AMD-V。
它由提供核心虚拟化基础结构的可加载内核模块和处理器特定模块kvm-intel.ko或者kvm-amd.ko组成。
我们的服务器有一个Intel CPU,它支持硬件虚拟化:
# grep -c vmx /proc/cpuinfo 4
我们将使用Debian Jessie。
安装
# apt-get install qemu-kvm libvirt-bin virtinst virt-viewer ebtables dnsmasq
KVM内核模块
现在,如果我们要使用Debian Jessie随附的默认3.16内核,我们应该已经有以下内核配置:
# egrep 'KVM_INTEL|KVM_AMD' /boot/config-3.16.0-4-amd64 CONFIG_KVM_INTEL=m CONFIG_KVM_AMD=m
因此,如果未加载KVM内核模块,则必须按以下方式加载它:
# modprobe kvm_intel #(for Intel processors) # modprobe kvm_amd #(for AMD processors)
在我们的特定情况下,我们已经将kvm编译到内核中,因此没有模块被加载:
# egrep 'KVM_INTEL|KVM_AMD' /boot/config-4.2.6-dev CONFIG_KVM_INTEL=y # CONFIG_KVM_AMD is not set
安装软件包后,我们可能需要启用libvirtd服务并确保其已启动:
# systemctl enable libvirtd # systemctl start libvirtd
现在,我们可以检查节点信息(4个CPU,12GB 内存):
# virsh nodeinfo CPU model: x86_64 CPU(s): 4 CPU frequency: 2719 MHz CPU socket(s): 1 Core(s) per socket: 2 Thread(s) per core: 2 NUMA cell(s): 1 Memory size: 12006088 KiB
创建一个新的KVM主机
创建一个大小为4GB的新磁盘镜像/kvm_data/centos1.img
并格式化qcow2:
# qemu-img create -f qcow2 /kvm_data/centos1.img 4G Formatting '/kvm_data/centos1.img', fmt=qcow2 size=4294967296 encryption=off cluster_size=65536 lazy_refcounts=off
设置一个新的CentOS 7虚拟机,该虚拟机分配1个CPU和1GB 内存:
# virt-install --virt-type kvm --name=centos1 --vcpu=1 --ram=1024 \ --disk path=/kvm_data/centos1.img,size=4,format=qcow2,sparse=true \ --os-variant=rhel7 --cpuset=auto \ --graphics spice \ --cdrom /tmp/CentOS-7-x86_64-DVD-1511.iso \ --network user
如果我们收到"错误来宾名称'centos1'已被使用"。
错误,我们可能需要先取消定义访客:
# virsh undefine centos1
默认情况下,QEMU调用-nic和-user选项以将单个网络适配器添加到来宾并提供NATed外部Internet访问。
主持人和来宾不会看到对方。
为了为VM客户端提供完全的网络可访问性,您可以设置一个公共网桥。
这超出了本文的范围。
请查看此帖子以获取详细信息。
获取有关磁盘镜像文件名的信息:
# qemu-img info /kvm_data/centos1.img image: /kvm_data/centos1.img file format: qcow2 virtual size: 4.0G (4294967296 bytes) disk size: 1.1G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
获取域信息:
# virsh dominfo centos1 Id: 4 Name: centos1 UUID: e6da3d3b-3526-48e1-9a0c-c16b2ac002ac OS Type: hvm State: running CPU(s): 1 CPU time: 9.7s Max memory: 1048576 KiB Used memory: 1048576 KiB Persistent: yes Autostart: disable Managed save: no Security model: none Security DOI: 0
列出网域:
# virsh list --all Id Name State ------------------------------ 4 centos1 running
通过CLI进行KVM域管理
启动一个(先前定义的)非活动域:
# virsh start centos1 Domain centos1 started
连接到访客控制台:
# virsh console centos1
将域状态保存到文件:
# virsh save centos1 /tmp/centos1.state Domain centos1 saved to /tmp/centos1.state
从文件中的保存状态还原域:
# virsh restore /tmp/centos1.state Domain restored from /tmp/centos1.state
正常关闭域:
# virsh shutdown centos1
如果需要更改域的配置,则可以编辑XML配置:
# virsh edit centos1
显示虚拟机的图形控制台:
# virt-viewer centos1
自动启动域:
# virsh autostart centos1
禁用自动启动域:
# virsh autostart centos1 --disable
Virsh有180多个命令,请查看virsh帮助以获取更多信息。
通过GUI进行KVM域管理
提供了用于管理VM的图形UI:
# apt-get install virt-manager
打开虚拟机管理器:
# virt-manager