Openstack是一个IaaS的开源实现。IaaS的核心是虚拟化,而虚拟化功能是由各种各样的虚拟化软件实现。常用的虚拟化软件有:Linux平台的Xen,qemu; Windows平台上的Oracle VirtualBox, VMWare Player(免费非商业用途产品,还有其他的付V费商用版,Workstation等)。本文就来比较一下Openstack和这些虚拟化软件有什么不同。不了解虚拟化软件的同学,可以尝试VirtualBox,因为它免费,易用。不同的解虚拟化软件其提供的功能基本相似。
从本质上说,Openstack就是在这些虚拟化软件上做了两件事:一是自动化某些功能,二是功能扩展。从以下几方面描述:
虚拟机管理
包括创建、删除、启动、关闭等。openstack nova项目实现虚拟机管理功能。Openstack和虚拟化软件差别不大,Openstack功能都是通过调用虚拟化软件接口来实现。
libvirt:
libvirt是由Redhat定义开发的一套虚拟机管理标准接口,支持Xen,qeum,vmware esxi等产品(hypervisor)。
操作界面
每个虚拟化软件都提供的自己操作界面,基本是命令行(Command Line Interface, CLI,多在Linux上提供)或是图形界面(GUI,多在Windows上提供)。
Openstack提供了两种界面CLI和GUI。CLI由各个pythonclient(python-cinderclient,python-novaclient,python-neutronclient等)项目实现;GUI采用基于网页的方式,由Horizon项目实现。
Openstack还提供了基于Rest的对外接口,上述的两种界面实现就是用了这个Rest接口。Openstack有详细的官方文档描述这些Rest API。
Openstack的优势是提供了统一的操作界面,即使底层采用的是不同的虚拟化产品,但对外的操作界面还是一直的。
镜像管理
镜像一般指虚拟磁盘镜像(Virtual disk image)。虚拟磁盘是被虚拟机使用的磁盘设备,对虚拟机来说这个磁盘s和物理机使用的物理磁盘没有区别。都是一个提供基于块(block)存储模型的存储设备。虚拟机软件一般以操作系统文件来实现一个虚拟磁盘。虚拟磁盘的实现技术和虚拟软件相关,各不相同。这就产生了不同的虚拟磁盘格式(virtual disk format,即虚拟机如何在操作系统文件上保存虚拟磁盘的内容),主流的虚拟磁盘格式有qcow2(qemu的格式),VDI(virtualbox的格式),VMDK(vmware虚拟产品的格式),VHD(微软虚拟产品格式)。每种格式可能在支持的功能,性能,使用场景上有所不同。当前的虚拟化软件一般会支持多种虚拟磁盘格式,如virtualbox支持VDI,VMDK及VHD。还有一种raw格式,及将磁盘中的内容逐位拷贝到文件上,这种格式最简单,缺点就是不能提供某些高级功能。
磁盘镜像常用高级功能:
容量按需动态扩展:比如创建1个20G的虚拟磁盘,实现文件的大小可以只有几M。当后面写入虚拟磁盘的数据逐渐增加时,实现文件可以自动调整尺寸。
创建磁盘快照(snapshot):制作一个当前虚拟磁盘的拷贝(包含了磁盘上的所有数据),后面可以随时恢复到某个特定的快照。这个功能类似于还原点(check