一聚教程网:一个值得你收藏的教程网站

热门教程

CentOS6.5 64位系统安装配置KVM虚拟机步骤详解

时间:2022-06-30 21:14:44 编辑:袖梨 来源:一聚教程网

环境:
系统版本:CentOS 6.5 x86_64
内存:8G
CPU:Intel i5-4430
IP:192.168.1.100

一、KVM简介

KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机),是一个开源的系统虚拟化模块,基于硬件的完全虚拟化,不过需要硬件支持(如Intel VT技术或者AMD V技术)。自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。

二、KVM安装配置

1、准备工作

1.1 关闭iptables防火墙

[root@localhost ~]# service iptables stop //停止iptables
1.2 CPU开通支持虚拟化
需要在BIOS中开启虚拟化,一般是默认开启的

2、安装kvm虚拟机

2.1 查看CPU是否支持kvm完全虚拟机

[root@localhost ~]# cat /proc/cpuinfo | grep 'vmx' //Intel CPU判断方法
[root@localhost ~]# cat /proc/cpuinfo | grep 'svm' //AMD CPU判断方法
根据对应的CPU型号进行选择判断方法,如果能出现信息 ,就说明CPU支持KVM完全虚拟机
2.2 安装kvm和其它虚拟化所需管理软件包

[root@localhost ~]# yum install -y kvm virt-* libvirts bridge-utils qemu-img
软件包名称介绍:

kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序
libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机
bridge-utils:设置网络网卡桥接
virt-*:创建、克隆虚拟机命令,使用qemu命令来创建磁盘等。
qemu-img:安装qemu组件,使用qemu命令来创建磁盘等。
2.3 加载kvm模块,查看kvm模块是否被加载

[root@localhost ~]# modprobe kvm-intel //加载kvm模块
[root@localhost ~]# lsmod | grep kvm //查看kvm模块是否被加载
2.4 重启确认kvm是否被加载

[root@localhost ~]# reboot //重启
[root@localhost ~]# lsmod | grep kvm //查看kvm模块是否被加载
2.5 查看已打开虚拟机列表

[root@localhost ~]# virsh list //查看虚拟机列表,如果有的话,就会显示出来
2.6 配置eth0、br0网卡

[eth0网卡]
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=74:D4:35:87:71:02
TYPE=Ethernet
UUID=723095b7-27d1-4f88-aa5f-5aa6b0472fbc
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
BRIDGE=br0
[br0网卡]
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
大家可以看着我的配置来进行修改,
2.7 查看目前所有的网桥接口

[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.74d435877102 no eth0
virbr0 8000.5254005ce327 yes virbr0-nic
2.8 修改VNC服务器的配置文件

[root@localhost ~]# vim /etc/libvirt/qemu.conf
将 vnc_listen = "0.0.0.0" 前面的#号注释去掉 //在文件的第12行

2.9 重启libvirtd和messagebus服务

[root@localhost ~]# /etc/init.d/libvirtd restart //重启libvirtd服务
 Stopping libvirtd daemon: [ OK ]
 Starting libvirtd daemon: [ OK ]
 [root@localhost ~]# /etc/init.d/messagebus restart //重启messagebus服务
 Stopping system message bus: [ OK ]
 Starting system message bus: [ OK ]
3、在宿主主机上创建、安装kvm虚拟机

3.1 创建镜像文件目录和虚拟磁盘存放目录

[root@localhost ~]# mkdir /iso
[root@localhost ~]# mkdir -p /data/kvmdisk/
3.2 把Centos6.5和windows2003系统文件拷贝到iso目录下
这个可以通过ftp或者通过挂载,下载都行
3.3 创建虚拟机

[root@localhost ~]# virt-install -n win03 -r 512 -vcpus=1 -s 50 -c /iso/win2003.iso --hvm --os-type=windows -f /data/kvmdisk/win2003.img --graphics vnc,listen=0.0.0.0,port=7789 --force --autostart
//命令解释:
创建一个名叫win03的虚拟机,内存大小为512内存,1个cpu,50G的硬盘,安装镜像是/iso/win2003.iso 指定为全虚拟化,系统类型为windows 指定虚拟机硬盘为/data/kvmdisk/win2003.img,同时配置vnc的端口为7789 自动开始安装

virt-install参数说明:

-n --name= 虚拟机名称
-r --ram= 虚拟机分配的内存
-u --uuid= 虚拟机的uuid
--vcpus=2 指定2个vcpu个数
-v --hvm 全虚拟他
-p --paravirt 半虚拟化
-l --location=localdir 安装源
--vnc 使用vnc
//可以用"--graphics vnc,listen=LISTEN,..."
--vncport 指定vnc监控端口,默认端口为5900,端口不能重复使用
--vnclisten 指定vnc绑定ip
-c --cdrom=光驱或者安装途径
-s --file-size= 使用磁盘映像的大小,单位为GB
-f --file= 作为磁盘映像使用的文件
--disk= 使用不同选项作为磁盘使用安装介质
--force 防止交互式提示
--os-variant 指定操作系统类型
--accelerate 加速
--network 网络类型,此处用的是默认,一般用的是应该是bridge桥接
3.4 创建kvm虚拟机的磁盘文件

[root@localhost ~]# qemu-img create -f qcow2 -o preallocation=metadata kvm_test.img 10G
//命令解释:
创建一个qcow2虚拟化镜像格式,大小为10G,文件名为kvm_test.img
4、vnc客户端连接KVM虚拟机

4.1 使用vnc连接
使用vnc连接刚刚创建的kvm虚拟机,比如刚刚创建的就可以使用192.168.1.100:7789
4.2 操作kvm虚拟机

查看所有的kvm虚拟机

[root@localhost ~]# virsh list --all
 Id Name State
----------------------------------------------------
 1 kvm_mode_5566 running
 5 win03_2 running
 7 win03_3 running
 - win03_1 shut off

查看在线的虚拟机

[root@localhost ~]# virsh list
 Id Name State
----------------------------------------------------
 1 kvm_mode_5566 running
 5 win03_2 running
 7 win03_3 running
停止kvm虚拟机

[root@localhost ~]# virsh shutdown win03_2
Domain win03_2 is being shutdown
[root@localhost ~]#
更多操作命令如下,virsh命令行管理工具

命令行:
virsh list #显示本地活动虚拟机
virsh list –all #显示本地所有的虚拟机(活动的+不活动的)
virsh define ubuntu.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
virsh start ubuntu #启动名字为ubuntu的非活动虚拟机
virsh create ubuntu.xml #创建虚拟机(创建后,虚拟机立即执行,成为活动主机)
virsh suspend ubuntu #暂停虚拟机
virsh resume ubuntu #启动暂停的虚拟机
virsh shutdown ubuntu #正常关闭虚拟机
virsh destroy ubuntu #强制关闭虚拟机
virsh undefine ubuntu #移除ubuntu虚拟机
virsh dumpxml ubuntu #显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)
virsh setmem ubuntu 512000 #给不活动虚拟机设置内存大小
virsh setvcpus ubuntu 4 # 给不活动虚拟机设置cpu个数
针对虚拟机操作
virsh domid win03_3 #查看虚拟机的标识符
virsh domname win03_2 #查看虚拟机的名称
virsh domuuid win03_2 #查看虚拟机的 UUID
virsh domstate win03_2 #查看虚拟机目前的状态
virsh dominfo win03_2 #查看虚拟机的信息
提示:win03_2为虚拟机名称 操作需要接虚拟名称的
4.3 配置kvm虚拟机
通过vnc连接上虚拟机后,安装好系统,配置好IP,就可以正常使用了,一个完整的虚拟机就这样创建好了!

三、常见问题

1、问题一:
创建虚拟机时,提示如下:

Starting install...
ERROR internal error Process exited while reading console log output: char
device redirected to /dev/pts/1
qemu-kvm: -drive file=/etc/libvirt/kvm_mode.img,if=none,id=drive-ide0-0-
0,format=raw,cache=none: could not open disk image /etc/libvirt/kvm_mode.img:
Permission denied
解决方法:
文件夹赋予全部权限

[root@localhost ~]# chmod -R 777 /etc/libvirt/
原因:
暂时没有找到
2、问题二:
开启宿主主机时,没有自动启动小机,手动执行,开启小机,结果提示如下错误:

[root@localhost ~]# virsh start win03_2
error: Failed to start domain win03_2
error: unsupported configuration: Unable to find security driver for label selinux
解决方法:
不要禁用selinux,开启selinux

[root@localhost ~]# sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
[root@localhost ~]# reboot //重启生效
原因:
可能是宿主主机禁用了selinux,kvm无法加载安全模块了

附:虚拟机配置文件详解,以win03_1.xml为例


//域类型
 win03_1 //虚拟机名称
 dd61db7a-3b7c-1c14-a169-3fbd6d710c57 //虚拟机uuid
 524288 //虚拟机最大内存
 524288 //虚拟机当前内存
 1 //vcpu个数
 
 hvm //全虚拟化
  //从硬盘启动
 

 
 
 
 
 

 
 
 

 destroy
 restart
 restart
 
 /usr/libexec/qemu-kvm
  //disk是用来描述磁盘的主要容器
  //缓存大小
  //指定磁盘文件的绝对路径
  //ide接口
 


 
  //cdrom信息
 
  //cdrom镜像位置
 
 
 

 
 
 

 
 
 

 
  //桥接设置
  //mac地址
  //桥接网卡
 

 
 
 
 

 
 
 

  //vnc端口
  //监听的IP
 

 
 
 

 
 

热门栏目