Debian Jessie上的KVM入门

时间:2020-03-21 11:47:57  来源:igfitidea点击:

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客户端提供完全的网络可访问性,您可以设置一个公共网桥。
这超出了本文的范围。
请查看此帖子以获取详细信息。

this

获取有关磁盘镜像文件名的信息:

# 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