原创

手把手教学Linux安装KVM以及使用KVM创建虚拟机

温馨提示:
本文最后更新于 2018年03月08日,已超过 2,239 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

KVM是什么

KVM(用于基于内核的虚拟机)是一个完整的虚拟化解决方案,适用于包含虚拟化扩展(Intel VT或AMD-V)的x86硬件上的Linux。它由可加载的内核模块kvm.ko组成,它提供核心虚拟化基础架构和处理器特定模块,kvm-intel.ko或kvm-amd.ko。

使用KVM,可以运行多个运行未修改的Linux或Windows映像的虚拟机。每个虚拟机都有专用的虚拟化硬件:网卡,磁盘,图形适配器等。

KVM是开源软件。KVM的内核组件包含在主线Linux中,截至2.6.20。KVM的用户空间组件包含在主线QEMU中,从1.3开始。

1.检查cpu是否支持虚拟化

如果有vmx信息输出,就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机。

grep vmx /proc/cpuinfo

2.确保BIOS里开启了虚拟化功能


查看是否加载KVM模块。

lsmod | grep kvm

如果没有加载

modprobe kvm

modprobe kvm-intel

lsmod | grep kvm

3.配置网络

3.1桥接网络

如果没有brctl命令(用来管理网桥的工具),则需要安装bridge-utils。

yum -y install bridge-utils

systemctl restart network

3.2配置KVM的网桥模式

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-br0

/etc/sysconfig/network-scripts/ifcfg-br0

[root@kvm network-scripts]# cat ifcfg-br0 
## 修改为Bridge(桥接模式)
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
## 修改为br0
NAME=br0
## 注释掉UUID
#UUID=9d8b6a36-4495-4f9c-96f6-5bf4cc32dc3c
## 修改为br0
DEVICE=br0
ONBOOT=yes

IPADDR=192.168.200.125
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=8.8.8.8

/etc/sysconfig/network-scripts/ifcfg-ens33

[root@kvm network-scripts]# cat ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9d8b6a36-4495-4f9c-96f6-5bf4cc32dc3c
DEVICE=ens33
ONBOOT=yes

## 注释掉这下面几行
#IPADDR=192.168.200.125
#NETMASK=255.255.255.0
#GATEWAY=192.168.200.2
#DNS1=8.8.8.8

## 添加下面这行
BRIDGE=br0

重启网卡:

systemctl restart network

查看网卡:

brctl show

测试是否能够连接外网:

ping www.liuzhaopo.top

3.3安装libvirt及kvm

libvirt是管理虚拟机的API库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机。

yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64  libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch  libvirt-python.x86_64 libiscsi-1.7.0-5.el6.x86_64  dbus-devel  virt-clone tunctl virt-manager libvirt libvirt-python python-virtinst

由于要用virt-manager图形化安装虚拟机,所以还需要安装X-window(这个在前面部署VNC环境里就已经安装了)。【如果创建虚拟机的时候,选择的是GNOME桌面安装,不是最小安装,这一步不需要做】

yum groupinstall "X Window System"

安装中文字符,解决界面乱码问题。【如果创建虚拟机的时候,选择的是GNOME桌面安装,不是最小安装,这一步不需要做】

yum install -y dejavu-lgc-sans-fonts

yum groupinstall -y "Fonts"

安装图形界面gnome。【如果创建虚拟机的时候,选择的是GNOME桌面安装,不是最小安装,这一步不需要做】

yum groupinstall "GNOME Desktop"

更改系统开机默认启动图形界面gnome。【如果创建虚拟机的时候,选择的是GNOME桌面安装,不是最小安装,这一步不需要做】

systemctl set-default multi-user.target  //设置成命令模式

systemctl set-default graphical.target  //设置成图形模式

启用libvirt。

systemctl enable libvirtd

systemctl start libvirtd

3.4管理kvm以及创建新的虚拟机

3.4.1使用Linux的图形界面(virt-manager)创建新的虚拟机

选择镜像。

提前将镜像文件上传至服务器的某一个文件夹中。

选择我们提前创建的镜像。

使用KVM创建虚拟机成功,接下来就是和我们安装Centos一样的操作了,选择第一个安装Centos7。

安装成功之后,一样的。

将使用KVM创建的Centos7配置一下网络和主机名。

在我们的原来的虚拟机中查看所有使用KVM创建的虚拟机。

使用XShell连接我们创建的虚拟机。

结束。。。

3.4.2使用VNC

在这里可以选择VNC的,然后使用Windows下载一个VNC Viewer,emmm......剩下的我还没去研究......

3.5KVM相关操作命令

#帮助
virsh -help

#查看创建的所有虚拟机
virsh list --all

#查看正在运行的虚拟机
virsh list

#创建的虚拟机开机,后面是虚拟机的名字
virsh start kvm-centos7-1
#####################virsh参数如下#####################
autostart      #自动加载指定的一个虚拟机
connect        #重新连接到hypervisor
console        #连接到客户会话
create         #从一个SML文件创建一个虚拟机
start          #开始一个非活跃的虚拟机
destroy        #删除一个虚拟机
define         #从一个XML文件定义一个虚拟机
domid          #把一个虚拟机名或UUID转换为ID
domuuid        #把一个郁闷或ID转换为UUID
dominfo        #查看虚拟机信息
domstate       #查看虚拟机状态
domblkstat     #获取虚拟机设备快状态
domifstat      #获取虚拟机网络接口状态
dumpxml        #XML中的虚拟机信息
edit           #编辑某个虚拟机的XML文件
list           #列出虚拟机
migrate        #将虚拟机迁移到另一台主机
quit           #退出非交互式终端
reboot         #重新启动一个虚拟机
resume         #重新恢复一个虚拟机
save           #把一个虚拟机的状态保存到一个文件
dump           #把一个虚拟机的内核dump到一个文件中以方便分析
shutdown       #关闭一个虚拟机
setmem         #改变内存的分配
setmaxmem      #改变最大内存限制值
suspend        #挂起一个虚拟机
vcpuinfo       #虚拟机的cpu信息
version        #显示virsh版本
本文目录