虚拟化技术比较
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
<domain type='kvm'>
<name>centos_6.5</name> <--- 虚拟机名称
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='rhel6.5.0'>hvm</type>
<boot dev='cdrom'/> <--- 光盘启动
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/centos_6.5.qcow2'/> <--- 目的镜像位置
<target dev='hda' bus='ide'/>
</disk>
<disk type='file' device='cdrom'>
<source file='/data0/xcloud/iso/CentOS_6.5_x86_64-minimal.iso'/> <--- 光盘镜像位置
<target dev='hdc' bus='ide'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:a7:40:f7'/>
<source bridge='br0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5905' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
</domain>
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 修改从硬盘启动
<os>
<type arch='x86_64' machine='rhel6.5.0'>hvm</type>
<boot dev='hd'/> <--- 硬盘启动
</os>
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-image可用
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