一、KVM简介

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

二、KVM安装

1. 准备工作

  • 关闭iptables防火墙
  • BIOS开启CPU支持虚拟化(一般默认是开启的)
  • 查看CPU是否支持KVM完全虚拟化

查看方法:


# cat /proc/cpuinfo | egrep --color=always 'vmx|svm'   #如有信息输出则可判断支持
 
  
2. 安装虚拟化相关软件包
系统yum升级
 
  
#yum update #或是用yum upgrade
 
  
安装虚拟化和图形桌面软件包组
 
  
#yum -y groupinstall "Virtualization" "Desktop" "X Window System" "Desktop Platform"
 
  
安装KVM相关
 
  
#yum -y install kvm libvirt libvirt-python python-virtinst virt-manager qemu-kvm-tools virt-viewer virt-v2v
 
  
安装完成后重启系统
#reboot
3. 查看加载的KVM模块
 
  
# lsmod|grep kvm
kvm_intel              55656  6 
kvm                   345659  1 kvm_intel
 
  
# stat /dev/kvm
  File: "/dev/kvm"
  Size: 0               Blocks: 0          IO Block: 4096   character special file
Device: 5h/5d   Inode: 10640       Links: 1     Device type: a,e8
Access: (0666/crw-rw-rw-)  Uid: (    0/    root)   Gid: (   36/     kvm)
Access: 2016-04-21 17:20:39.789558372 +0800
Modify: 2016-04-21 17:20:39.789558372 +0800
Change: 2016-04-21 17:20:39.789558372 +0800
 
  

4. 查看libvirtd运行状态
 
  
#/etc/init.d/libvirtd status
libvirtd (pid  2491) is running...
 
  

5. 配置网络桥接
备份ifcfg-eth0
 
  
#cp /etc/sysconfig/network-scripts/ifcfg-eth0 /root
 
  
创建br0
 
  
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-eth0 ifcfg-br0
 
  
查看配置的内容,这里选择了自动获取IP地址,
 
  
[root@node4 network-scripts]# cat ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=br0
[root@node4 network-scripts]# cat ifcfg-br0  
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
 
  

6.禁用网络过滤器
编辑/etc/sysctl.conf添加如下内容
 
  
#sysctl -p 
...
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
 
  

7.重启网络服务
 
  
#/etc/init.d/network restart
 
  

三、安装虚拟机

在/data/vm目录下创建2个用于安装虚拟机的磁盘镜像:
 
  
#qemu-img create -f raw /data/vm/vm01.img 10G   #用于图形化安装虚拟机
#qemu-img create -f qcow2 /data/vm/vm02.img 10G #用于命令行安装虚拟机
#qemu-img info /data/vm/vm01.img #查看镜像信息


1. 用virt-manager图形化安装虚拟机

打开应用程序->系统工具->虚拟系统管理器

Linux安装KVM并安装虚拟机 在kvm上安装虚拟机_重启

点击创建虚拟机按钮,输入虚拟机名称,点前进,

Linux安装KVM并安装虚拟机 在kvm上安装虚拟机_运维_02

选择挂载的CD光盘和操作系统选项,点前进,

Linux安装KVM并安装虚拟机 在kvm上安装虚拟机_虚拟化_03

确定虚拟机的内存和CPU,点前进,

Linux安装KVM并安装虚拟机 在kvm上安装虚拟机_重启_04

为虚拟机启用已经建好的存储硬盘,点前进,

Linux安装KVM并安装虚拟机 在kvm上安装虚拟机_操作系统_05

下一步确认虚拟机的信息,点击完成后就进入到安装系统的界面,安装系统步骤这里就不介绍了。


2. 命令行安装虚拟机的命令如下:

#virt-install --virt-type kvm -n vm02 -r 1024 --disk path=/data/vm/vm02.img,size=10,format=qcow2 -w bridge:br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel6 --location=http://192.168.1.166/centos6
 
  
参数说明:
--virt-type kvm  #The hypervisor to install on. Example choices are kvm, qemu, xen, or kqemu.
-n --name= #虚拟机实例名称,即虚拟机的name
-r --ram= #给虚拟机分配的内存大小,单位为M
--disk #Specifies media to use as storage for the guest
-w --network= #设置使用的网络
--graphics 确定图形展示的类型,默认就是VNC,监听在0.0.0.0
--os-type= #系统类型
--os-variant= #确定系统系列类型,以优化虚拟机的配置,--os-variant list可查看支持哪些类型值
-l --location= #确定安装介质或是说安装源,这里用了http服务做了系统的安装源,就是把光盘挂载目录链接到了网站根目录下。

命令执行后可以用VNC客户端软件访问VNC界面,就是正常安装系统的界面。
查看 vnc 启动在哪个端口
 
  
#virsh vncdisplay vm02
 
  

不用VNC,直接在命令行启动一个console用文本状态的界面安装,命令:
 
  
#virt-install --virt-type kvm -n vm03 -r 1024 --vcpus 1 --os-variant=rhel6 --accelerate -v -w bridge:br0 --disk path=/data/vm/vm03.img,size=10,format=qcow2 --location=http://192.168.1.166/centos6 --nographics -x "console=ttyS0"
 
  

virt-install 相关参数可以查看帮助,
 
  
#man virt-install
#virt-install -h
 
  
3. virsh 管理虚拟机的命令
virsh list 列出当前虚拟机列表,不包括没有启动的
virsh list --all  列出所有虚拟机列表,包含没有启动的
virsh start vm01  启动虚拟机vm01
virsh shutdown vm01 正常关闭虚拟机vm01
virsh destroy vm01  强制关闭虚拟机vm01,相当于断电式关机
virsh undefine vm01 删除虚拟机vm01,即删除对vm01的定义,vm01镜像文件并没删除
virsh reboot vm01 重启vm01
virsh autostart vm01 虚拟机随宿主机启动
virsh# 查看dominfo的子命令
• domid  查看虚拟机的标识符
• domname  查看虚拟机的名称
• domuuid  查看虚拟机的 UUI
• domstate  查看虚拟机目前的状
• dominfo  查看虚拟机的信息
virsh dumpxml vm01  > file.xml 导出虚拟机vm01的配置到一个xml文件
virsh define file.xml 从xml文件从新定义一个虚拟机实例,file.xml需要修改相关配置以避免与vm01冲突


转载于:https://blog.51cto.com/8869176/1766355