一、KVM介绍
KVM,基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为 KVM),
是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。
KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。
KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。
KVM目前由Red Hat等厂商开发,对CentOS/Fedora/RHEL等Red Hat系发行版支持极佳。
二、KVM部署及使用
1.系统环境查询
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@localhost ~]# uname -r 3.10.0-862.el7.x86_64 [root@localhost ~]# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 [root@localhost ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) 8月 12 17:42:59 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon... 8月 12 17:42:59 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon. 8月 12 18:01:18 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon... 8月 12 18:01:19 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon. [root@localhost ~]# hostname -I 192.168.137.103 192.168.122.1
验证CPU是否支持虚拟化,输入有vmx或svm就支持,支持虚拟化则就支持KVM
[root@localhost ~]# cat /proc/cpuinfo | egrep 'vmx|svm'
有vmx或svm内容输出就支持,支持虚拟化则就支持KVM
查看是否加载KVM
[root@promote images]# lsmod | grep kvm
kvm_intel 174841 0
kvm 578518 1 kvm_intel
irqbypass 13503 1 kvm
已经加载,如果没有加载,则执行以下命令,加载KVM
[root@localhost ~]#modprobe kvm
2.安装KVM虚拟化软件
安装依赖包(使用本地yum源)
# yum install libvirt* virt-* qemu-kvm* -y
说明:
libvirt # 虚拟机管理
virt # 虚拟机安装克隆
qemu-kvm # 管理虚拟机磁盘
启动KVM
# systemctl start libvirtd.service
# systemctl status libvirtd.servic
2.安装第一台KVM虚机
[root@localhost ~]# virt-install
--virt-type kvm
--os-type=linux
--os-variant rhel7
--name centos7
--memory 1024
--vcpus 1
--disk (虚拟硬盘绝对路径),format=raw,size=10
--cdrom (iso镜像文件绝对路径)
--network network=default
--noautoconsole
注意:需要先将镜像文件拷贝到 设置的路径下
参数说明
参数 |
参数说明 |
--virt-type HV_TYPE |
要使用的管理程序名称 (kvm, qemu, xen, ...) |
--os-type |
系统类型 |
--os-variant DISTRO_VARIANT |
在客户机上安装的操作系统,例如:'fedora18'、'rhel6'、'winxp' 等。 |
-n NAME, --name NAME |
客户机实例名称 |
--memory MEMORY |
配置客户机虚拟内存大小 |
--vcpus VCPUS |
配置客户机虚拟 CPU(vcpu) 数量。 |
--disk DISK |
指定存储的各种选项。 |
-cdrom CDROM |
光驱安装介质 |
-w NETWORK, --network NETWORK |
配置客户机网络接口。 |
--graphics GRAPHICS |
配置客户机显示设置。 |
虚拟化平台选项: |
|
-v, --hvm |
这个客户机应该是一个全虚拟化客户机 |
-p, --paravirt |
这个客户机应该是一个半虚拟化客户机 |
--container |
这个客户机应该是一个容器客户机 |
--virt-type HV_TYPE |
要使用的管理程序名称 (kvm, qemu, xen, ...) |
--arch ARCH |
模拟 CPU 架构 |
--machine MACHINE |
机器类型为仿真类型 |
其它选项: |
|
--noautoconsole |
不要自动尝试连接到客户端控制台 |
--autostart |
主机启动时自动启动域。 |
--noreboot |
安装完成后不启动客户机。 |
3.KVM虚机管理
virsh命令常用参数总结
参数 |
参数说明 |
基础操作 |
|
list |
查看虚拟机列表,列出域 |
start |
启动虚拟机,开始一个(以前定义的)非活跃的域 |
shutdown |
关闭虚拟机,关闭一个域 |
destroy(危险) |
强制关闭虚拟机,销毁(停止)域 |
vncdisplay |
查询虚拟机vnc端口号 |
配置管理操作 |
|
dumpxml |
导出主机配置信息 |
undefine |
删除主机 |
define |
导入主机配置 |
domrename |
对虚拟机进行重命名 |
挂起与恢复 |
|
suspend |
挂起虚拟机 |
resume |
恢复虚拟机 |
自启动管理 |
|
autostart |
虚拟机开机启动 |
autostart --disable |
取消虚拟机开机启动 |
以上参数通过 “virsh --help” 获得。 |
查看虚拟机配置文件
[root@localhost ~]# cat /etc/libvirt/qemu/test01.xml
修改KVM虚拟机配置的方法
[root@localhost ~]# virsh edit test01 (使用该命令修改可以对文件进行语法校验)