您的位置:首页 > 运维架构 > Linux

kvm安装配置,创建虚拟机,centos环境

2016-10-18 14:30 1056 查看
一、kvm介绍

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

二、

安装

1.1关闭防火墙

[root@localhost ~]# service iptables stop //停止iptables

1.2 CPU开通支持虚拟化

需要在BIOS中开启虚拟化,一般是默认开启的

2.1 查看cpu是否支持kvm虚拟机

cat /proc/cpuinfo | grep 'vmx' //Intel CPU判断方法

 cat /proc/cpuinfo | grep 'svm' //AMD CPU判断方法

 根据对应的CPU型号进行选择判断方法,如果能出现信息 ,就说明CPU支持KVM完全虚拟机

2.2 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模块是否被加载

 modprobe kvm-intel //加载kvm模块

 lsmod | grep kvm //查看kvm模块是否被加载

2.4 重启确认kvm是否被加载

 reboot

 lsmod | grep kvm //查看kvm模块是否被加载

2.5 查看已打开虚拟机列表

 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 ]

____________________________________________________________

解決如下问题

启动 libvirtd 守护进程:libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference

                                                           [失败]

yum -y  upgrade device-mapper-libs

——————————————————————————————————————————————————————————

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 ubuntu16 -r 1024 -vcpus=2 -s 50

-c /home/iso/ubuntu-16.04-desktop-amd64.iso

--hvm --os-type=linux -f /home/data/kvmdisk/ubuntu.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桥接

在用virt-install生成虚拟机时会自动的生成一个默认xml格式的配置文件在/etc/libvirt/qemu目录下,以后需要调整虚拟机参数时可以修改此配置文件,然后使虚拟机生效。在初次建立虚拟机时里面的参数都是根据第一次生成虚拟机的配置指定的


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

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无法加载安全模块了

3、

配置vnc的过程中,如果客户端是ubuntu,在使用GUI工具的时候,virt-manger,需要依赖 open-ssh,而在ubuntu16.0.4中竟然需要手动安装之。解决方法如下:

sudo apt install ssh-askpass

————————————————————————————————————————

4、kvm 安装winwods镜像的时候出现,硬盘无法加载,无法识别硬盘文件。

解决方法:在创建硬盘文件的时候 取消 -f qcow2 的参数,

另外若是使用命令行工具创建虚拟机,可以不创建硬盘文件,而在创建的时候指定文件。例如

qemu-img create -f qcow2 win7.img 40G

virt-install --connect qemu:///system --name winxp --ram 2048 --vcpus=2

--disk path=/home/data/kvmdisk/xp.img,device=disk,format=qcow2,bus=ide,cache=none,size=50

--cdrom /home/iso/xp.iso --os-type=windows --graphics vnc,listen=0.0.0.0,port=7793 --force --autostart

注意:bus=ide的参数。

________________

硬盘文件无法识别的问题终极解决方案,原因归纳:

默认的磁盘驱动type raw,而在使用qemu-img 命令生成硬盘文件的时候若指定格式qcow2,那么需要在xml文件中指定其

驱动类型,qcow2,即:

<driver name='qemu' type='qcow2'/> 


命令行定义虚拟机的时候,由于默认的驱动类型是raw,所以无法识别qcow2类型的硬盘文件。建议使用xml配置的方式定义虚拟机,并启动之。




-----------------------------------------------------------------------------

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为虚拟机名称 操作需要接虚拟名称的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: