一:介绍

  • Hypervisor:是一种“虚拟机监视器(VMM)”,它介于裸机硬件和操作系统之间的组件,通过它, 可以在物理服务器上安装多个操作系统。
  • VNC:是一个在UNIX和Linux平台上的远程控制开源程序,有:vncserver,vncviewer,vncpasswd, 和 vncconnect。
  • KVM:Linux 2.6X版本中加入的内核模块,分为两个:kvm.ko 和 kvm_intel.ko / kvm_amd.ko
  • QEMU-KVM:KVM是一个可以虚拟CPU和内存的模块,但是不能够虚拟I/O等,所以它借鉴了QEMU,形成了一个QEMU-KVM的工具。利用它,用户可以很方便的操作KVM内核,虚拟出虚拟机、虚拟磁盘等。
  • 虚拟化分为:
    半虚拟化:完全用软件模拟,不需要硬件支持,速度慢 => xen
    全虚拟化:需要硬件支持,速度快 ==> KVM

二:创建虚拟机

  • 1、查看cup是否支持虚拟
grep -E -o 'vmx|svm' --color /proc/cpuinfo

注意:如果想在vmwareWorkstation的虚拟机中使用KVM,

则需要在设置那里开启VT-X技术,如图:

kvm批量创建虚拟机qcow2 qemu-kvm创建虚拟机_python

  • 2、查看Linux内核是否加载了kvm模块
lsmod | grep kvm
  • 3、加载KVM模块
modprobe kvm
  modprobe kvm_intel
  • 4、安装qemu-kvm,安装完成后会生成/usr/libexec/qemu-kvm,是用户空间操作kvm内核的接口,安装后,会自动加载上面的KVM模块
yum install -y qemu-kvm
  • 5、通过网络上传ISO镜像文件
通过CRT的Alt + p 打开ftp客户端上传即可
  • 6、生成一个8G的镜像文件,作为虚拟机的磁盘
qemu-img create  -f  raw  /root/hadoop.img 8G      默认生成raw格式,给多少就一次性划分多少
  qemu-img create  -f  qcow2  /root/hadoop.img 8G           生成qcow2格式,用多少算多少
  • 7、使用qemu-kvm创建虚拟机(参数说明 -m 指定内存大小 -smp 指定cup数量 -boot启动顺序)
/usr/libexec/qemu-kvm -m 2048 -smp 1 -boot order=cd 
  -cdrom /iso/CentOS-6.6-x86_64-minimal.iso -hda /cloud/CentOS.img  -vnc :1

  参数说明:
      -m 指定客户机内存大小,默认单位MB
      -smp 指定客户机cpu个数。SMP:(symmetric[sɪ'metrɪk] Multi-processing)对称多处理
      -boot 指定客户机系统启动顺序,order=cd是指先光盘再硬盘。c:CD-ROM d:Hard Disk
      -hda 指定客户机的IDE硬盘(即前面的创建的镜像文件)
      -cdrom 指定客户机的光驱
  • 8、安装vnc或使用vnc工具连接虚拟机,给虚拟机安装系统
  • 9、关闭虚拟机并再次启动虚拟机,指定vnc端口为5901(不需要指定cdrom,因为已经将操作系统安装到磁盘中了,当然指定也没有关系,因为会检测是否安装了操作系统!)
/usr/libexec/qemu-kvm -m 2048 -smp 1 -boot order=cd -hda /cloud/CentOS.img -vnc :1

三:配置网络(brigde、nat、host-only)

注意:brctl和tunctl只是临时创建,并不会修改network-scripts下面的ifcfg-eth0信息,所以开机会恢复。
  • 说明:需要bridge-utils 和 tunctl 的支持。
    brctl是Linux下用来创建和管理以太网桥,在内核中建立、维护、检查网桥配置的命令 tunctl是用来创建tap以及tun模式的网桥端口。
    在计算机网络中TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能。
    TAP等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层数据包比如IP数据封包。

bridge桥接配置

  • 1、要安装bridge-utils tunctl
yum install -y bridge-utils tunctl
  • 2、添加一个br0网桥(桥接类型)
brctl addbr br0
  ifconfig br0 up
  • 3、hypervisor的etho也需要绑定到bridge上,一步执行完成(注意修改成自己的IP)
brctl addif br0 eth0 && brctl stp br0 on && ifconfig eth0 0.0.0.0 && 
  ifconfig br0 192.168.33.250 netmask 255.255.255.0 && route add default gw 192.168.33.1
  • 4、创建TAP类型虚拟网卡设备,用于绑定虚拟机的网卡绑定
tunctl -t vnet0
  ifconfig vnet0 up
  brctl addif br0 vnet0
  brctl show
  • 5、创建虚拟机并关联网卡(可以连续带多个vnet)
/usr/libexec/qemu-kvm -m 2048 -smp 1 -boot order=cd -cdrom /kvmhost/iso/centos-6.7.iso 
  -hda /kvmhost/kvms/test.img -net nic -net tap,ifname=vnet0,script=no,downscript=no 
  -net nic -net tap,ifname=vnet1,script=no,downscript=no -vnc :1

kvm批量创建虚拟机qcow2 qemu-kvm创建虚拟机_python_02

  • 6、启动虚拟机并关联网卡(可以连续带多个vnet)并添加mac地址
/usr/libexec/qemu-kvm -m 2048 -smp 1 -boot order=cd -hda /cloud/Centos.img 
  -net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=vnet0,script=no,downscript=no
  • 7、编辑ifcfg-eth0 配置
静态ip(和物理机在同一个网段)

  配置子网掩码

  配置dns1

  配置默认网关(和物理机同一网关)
  • 8、重新启动network service network restart 即可

##host-only配置

  • 1、要安装bridge-utils tunctl
yum install -y bridge-utils tunctl
  • 2、添加一个hostonlybr0网桥(桥接类型)
brctl addbr hostonlybr0
  ifconfig hostonlybr0 up
  • 3、给网桥设置一个随意的ip地址(不需要吧eth0绑定到此网桥上,也就是和eth0隔离)
  • 4、创建TAP类型虚拟网卡设备,用于绑定虚拟机的网卡绑定
tunctl -t vnet0
  ifconfig vnet0 up
  brctl addif hostonlybr0 vnet0
  brctl show
  • 5、创建虚拟机并关联网卡
    /usr/libexec/qemu-kvm -m 4096 -smp 1 -boot order=cd -hda /cloud/Centos.img -net nic -net tap,ifname=vnet0,script=no,downscript=no
  • 6、启动虚拟机并关联网卡并添加mac地址
    /usr/libexec/qemu-kvm -m 2048 -smp 1 -boot order=cd -hda /cloud/Centos.img -net nic,macaddr=52:54:00:12:34:57 -net tap,ifname=vnet0,script=no,downscript=no
  • 7、编辑ifcfg-eth0 配置
静态ip(随意一个网段,大家都在一起即可)

  配置子网掩码

  配置dns1

  配置默认网关(和物理机同一网关)
  • 8、重新启动network service network restart 即可

四、qemu-img是一个比较重要的工具,是QEMU的磁盘管理工具。

  • 1、查看帮助信息
qemu-img -h
  • 2、查看镜像文件信息
qemu-img info /cloud/CentOS.img
  • 3、创建一个磁盘镜像文件
qemu-img create -f qcow2 /cloud/itcast.img 10G
  • 4、将raw格式转换成qcow2格式
qemu-img convert -O qcow2 /cloud/itcast.raw  /cloud/itcast.qcow2
  • 5、修改镜像大小
qemu-img resize /cloud/test.img +2G
  • 6、检查镜像
qemu-img check /cloud/itcast.qcow2
  • 7、镜像格式
qemu-img支持多种镜像格式,可通过qemu-img -h命令查看,常用的有qcow2,raw

  raw:原始的磁盘镜像格式,是qemu-img命令默认的文件格式,这种格式的文件的优势在于它非常
  简单且非常容易移植到其他模拟器上使用。特点一开始就让镜像实际占用了分配空间,但是写入速度稍快一下。

  qcow2:这种格式是QEMU目前推荐的镜像格式,它是功能最多的格式,它支持稀疏文件以节省存储空间,
  支持加密、压缩、快照等功能

QEMU monitor是QEMU与用户交互的一种控制台,一般用于为QEMU模拟器提供较为复杂的功能,

  • QEMU monitor的切换
"Ctrl + Alt + 2"  -->  QEMU monitor状态
  "Ctrl + Alt + 1"  -->  客户机标准显示窗口
  • 显示系统命令状态:info
  • 查看QEMU的版本信息
info versions
  • 查看当前QEMU是否有KVM的支持
info kvm
  info name
  info status
  • 查看客户机各个vCPU的信息
info cpus
  • 查看块设备信息,如硬盘、软盘、光驱等
info block
  • 查看客户机的网络配置信息
info network
  • 显示当前系统中已保存的客户机快照信息
info snapshots
  • 查看当前客户机的迁移状态
info migrate
  • 显示当前客户机的VNC状态
info vnc
  • 查看QEMU monitor中命令执行的历史
info history
  • 创建快照
savevm snap20150406
  • 恢复快照
loadvm snap20150406
  • 删除快照
delvm snap20150406