虚拟化技术比较

1、VPS openvz 平台和kvm、xen、vmware的区别

openvz:

是Paralles公司的虚拟化商业产品Virtuozzo的开源版本,该公司前身为SWsoft

缺点:

1、不能安装windows操作系统

2、不是完全的虚拟化、每个vps账户共用母机内核,不能单独修改内核,

优点:

不能修改内核,共用内核的特性使得openvz的效率最高,超过kvm、xen、vmware等平台,在不超售的情况下,openvz是最快速效率最高的vps平台

kvm、xen、vmware:

kvm 为Red Hat 所采用的主要技术

xen 为citrix 公司的的主要虚拟化技术

这几个vps可以归为一类,他们在虚级化母机时,是完全的虚级化,每个vps之间不共用母机内核,各自都是独立的,几乎所有的操作系统都可以安装到这些被虚拟化出来的vps上,

完全的虚级化使得这些平台的vps效率要低于openvz,但由于完全虚拟化,各vps之间没有干扰,而openvz取决于是否超售。

2、虚拟化之kvm

rhel 6.0 版本中,已经去掉了xen

在kvm模型中,每一个虚拟机都是由一个linux调度程序管理的标准进程,你可以在用户空间启动客户机操作系统,一个普通的linux进程有两种运行模式:内核和用户,kvm增加了第三种模式:客户模式(有自己的内核和用户模式)

准确来说,kvm仅仅是linux内核的一个模块,qemu是一个强大的虚拟化软件,kvm使用了qemu的基于x86的部分,并稍加改造,形成可控制kvm内核模块的用户空间工具QEMU-KVM,

尽管QEMU-KVM工具可以创造和管理kvm虚拟机,但由于QEMU工具效率不高,不易于使用,所以redhat为kvm开发了更多地工具:比如libvirt,virsh,virt-manager

libvirt不仅提供了api还自带一套基于文本的管理虚拟机的命令-virsh,可以通过使用virsh命令来使用libvirt的全部功能,但最终用户更渴望的是图形界面,这就是virt-manager,virt-manager就是利用libvirt的api实现的

2.1 install kvm

2.1.1 确认cpu是否支持虚级化技术

egrep '(vmx|svm)' --color=always /proc/cpuinfo

2.1.2 安装

yum install kvm virt-viewer virt-manager libvirt libvirt-python python-virtinst

2.1.3 确认正确加载kvm模块

modinfo kvm

2.1.4 加载kvm内核

modprobe kvm

2.1.5 查看内核是否开启

modprobe -ls |grep kvm

2.1.6 Important Configuration File

/etc/libvirt/ - Main configuration directory.

/etc/libvirt/qemu/ - Virtual machine configuration directory. All xml files regarding VMs are stored here. You can edit them manually or via virt-manager.

/etc/libvirt/qemu/networks/ - Networking for your KVM including default NAT. NAT is only recommended for small setup or desktops. I strongly suggest you use bridged based networking for performance.

/etc/libvirt/qemu/networks/default.xml - The default NAT configuration used by NAT device virbr0.

/var/log/libvirt/ - The default log file directory. All VM specific logs files are stored here.

/etc/libvirt/libvirtd.conf - Master libvirtd configuration file.

/etc/libvirt/qemu.conf - Master configuration file for the QEMU driver.

2.2 使用libvirt的xml配置文件创建虚拟机

kvm支持的镜像很多,常用的是原始镜像(*.img),还有支持动态大小扩张的qocw2格式(首选)

更优的选择是系统盘如C盘用img格式,数据盘用qcow2格式以减少服务器磁盘闲置空间

2.2.1 生成centos.xml文件(可用以下方式生成该文件,也可去网上拷贝范例模板)

先用centos_6.5_x86_64-minimal.iso生成xml文件(使用vnc连接5905端口进行系统安装),xml文件存放位置:/etc/libvirt/qemu/

#!/bin/sh

read -p "please inter your message:" pw

virt-install --name centos_$pw --ram 512 --disk /home/centos_$pw,size=20 --network bridge=br0 \

--vcpus=1 --os-type=linux --cdrom=/data0/xcloud/iso/CentOS_6.5_x86_64-minimal.iso --graphics vnc,listen=0.0.0.0,port=5905

修改centos.xml

  centos_6.5                    <--- 虚拟机名称

  524288

  524288

  1

  

    hvm

                 <--- 光盘启动

  

  

    

    

    

  

  

  destroy

  restart

  restart

  

    /usr/libexec/qemu-kvm

    

      

          <--- 目的镜像位置

      

    

    

       <--- 光盘镜像位置

      

  

      

        

      

      

        

      

      

        

        

        

      

      

        

      

      

        

      

      

      

        

      

      

        

        

      

      

        

      

    

  

2.2.2 制作虚拟机镜像

创建qcow2镜像,但是其实际占有磁盘大小仅为193K左右,而虚拟机内部显示磁盘大小为10G,也就是磁盘空间使用时才分配,即所谓动态扩张。

qemu-img create -f qcow2 centos_6.5.qcow2 10G  

2.2.3 创建虚拟机

virsh define centos.xml

2.2.4 启动虚拟机

virsh start centos_6.5

2.2.5 使用vnc登陆虚拟机完成系统的安装

2.2.6 修改从硬盘启动

    hvm

                 <--- 硬盘启动

2.2.7 删除原虚拟机,使用制作好的镜像和centos.xml启动虚拟机

virsh destroy cenots_6.5

virsh undefine centos_6.5

virsh define centos.xml

virsh start centos_6.5

3、虚拟化之openvz

pass

4、虚拟化产品

openstack

cloudstack

proxmox

基于kvm和openVZ虚拟化技术的管理平台,是基于x86_64的版本,所以运行在i386上,如果使用kvm的话,那么系统的cpu就必须支持intel vt或amd-v的硬件虚拟化技术,如果使用openvz就不需要cpu的支持了

5、libvirt

Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等。Libvirt概括

起来包括一个API库、一个 daemon(libvirtd)和一个命令行工具(virsh)。

Libvirt的主要目标是:提供一种单一的方式管理多种不同的虚拟化提供方式和 hypervisor。

Libvirt的主要功能如下:

(1) 虚拟机管理

包括不同的领域生命周期操作,比如:启动、停止、暂停、保存、恢复和迁移。

支持多种设备类型的热插拔操作,包括:磁盘、网卡、内存和CPU。

(2) 远程机器支持

    只要机器上运行了libvirt daemon,包括远程机器,所有的libvirt功能就都可以访问和使用。

    支持多种网络远程传输,使用最简单的SSH,不需要额外配置工作。比如:example.com运行了libvirt,

    而且允许SSH访问,下面的命令行就可以在远程的主机上使用virsh命令行。

virsh --connect qemu+ssh://[email protected]/system

(3) 存储管理

任何运行了libvirt daemon的主机都可以用来管理不同类型的存储:创建不同格式的文件映像(qcow2、vmdk、raw等)、挂接NFS共享、列出现有的LVM卷组、创建新的LVM卷组和逻辑卷、对未处理过的磁盘设备分区、挂接iSCSI共享,等等等等。因为libvirt可以远程工作,所有这些都可以通过远程主机使用。(4) 网络接口管理

任何运行了libvirt daemon的主机都可以用来管理物理和逻辑的网络接口。可以列出现有的接口卡,配置、创建接口,以及桥接、vlan和关联设备等,通过netcf都可以支持。

(5) 虚拟NAT和基于路由的网络

任何运行了libvirt daemon的主机都可以用来管理和创建虚拟网络。Libvirt虚拟网络使用防火墙规则作为路由器,让虚拟机可以透明访问主机的网络

5.1 安装libvirt

yum -y install libvirt

之后virsh/virt-host-validate/virt-pki-validate/virt-xml-validate工具可用

5.2 安装libvirt tools

5.2.1 安装python-virtinst

yum -y install python-virtinst

or

yum -y install virt-install

安装该包时会自动安装libvirt-python依赖包,从而在python中可以导入libvirt,但貌似yum支持的是python2.6的版本,所以如果更新到python2.7,会导致无法导入libvirt。

之后virt-clone/virt-convert/virt-install/virt-p_w_picpath可用

5.2.2 安装virt-manager,基于libvirt的图像化虚拟机管理软件

yum -y install virt-manager

安装后virt-manager可用

5.2.3 安装virt-top

yum -y install virt-top

5.3 安装libvirt for python

yum -y install libvirt-python

遇到的问题:

python2.7版本无法导入libvirt