blob.png blob.png

 上面左边是我的个人微信,如需进一步沟通,请加微信。  右边是我的公众号“Openstack私有云”,如有兴趣,请关注。

  

 上一篇文章“Openstack 干掉 VMWare(1)”总体说了一下使用开源版本openstack与vmware的一些比较,注意我说的是开源版本的openstack,至于各个商业版本的openstack,比如华为的FunsionCloud,什么×××QingCloud不在我的讨论范围,他们也没有付给我工资替他们做广告,哈哈,得出的初步结论就是通过openstack开源社区的努力,现在开源版的openstack已经具备了实际落地各中小企业,干掉vmware的条件,让广大人民群众用上自己的开源openstack私有云,下面继续聊一聊。

    现在openstack很多实际生产案例都使用分布式存储ceph用于各个组件使用,今天主要从存储这个角度分析一下openstack与vmware的对比。首先简单说一下openstack和ceph的关系,ceph是OpenStack的主流后端存储,和OpenStack亲如兄弟,为OpenStack提供统一共享存储服务。接下来简单介绍ceph分布式存储,ceph是近来迅速崛起的开源分布式存储系统,它主要有以下几个特性:

    1.多副本特性,即类似Raid1的冗余特性确保数据安全,可以是1个副本2个副本3个副本多个副本;

    2.写时复制COW特性,即当有数据写入的时候才占用存储空间;有了这个特性,空间的使用效率比传统存储大大提高;

    3.数据条带化特性,即有IO并发读写特性,这样可以解决一个读取效率的问题,即磁盘越多,读写IO效率越高;

    4.thin provisioning特性,即按需分配空间,类似Linux文件系统的sparse稀疏文件;

    我尽量以最简要的语言进行描述,其他很多专业的概念和描述有兴趣的话,可以自行参考网上相关资料。以上几个特性对于传统存储可以说是具有革命性的东西,现在从自己的认识加以描述。

    当我第一次接触ceph的时候,有一些疑虑,比如:对于小规模的应用场景ceph是不是显得大材小用,如果使用多副本,比如一般使用3个副本,那实际容量只有三分之一,那空间浪费很严重,怎么达到冗余和效率的平衡;再比如,如何确保在拥有多个磁盘的单台物理机故障的情况下保证数据的安全;再比如,ceph的使用和维护会不会很麻烦,硬盘故障更换是不是很麻烦等等。现在经过一定的使用实践,我的这些疑虑都消失了。

    首先,最实际的问题,冗余和空间的使用效率问题,我自己做过测试,在确保数据安全,ceph集群数据池pool采用3副本的情况下,openstack孵化10个20G大小raw格式的虚拟机,实际占用的ceph存储空间是30多G,按照传统存储,如果使用raw格式的镜像,占用空间是实打实的,10个20G大小的虚拟机,那么占用的空间就是200G,所以,对于ceph的多副本确保数据安全而“浪费”掉的空间,很容易就被“节约”回来了,所以,ceph的空间使用效率是非常高的。其中它是怎么实现的,太专业我不想多描述我也有些力不从心,可以参考我的另一篇博客“OpenStack使用Ceph存储,Ceph到底做了什么?”。

    再次,数据冗余方面的实践问题。由于ceph是将一个存储目标打散分布在多个pg中,多个pg又分布在osd中,一个osd对应一个磁盘,如果拥有多个磁盘的服务器发生故障,导致这台服务器上所有磁盘及osd都不可用,那么数据是不是会丢失,经过实际验证,并不会丢失,ceph通过Crush(Controlled Replication Under Scalable Hashing)算法的多层级的结构,用数据“桶”的概念,在分配pg的时候会避免将2个副本放在同一“桶”内,比如,第一级的桶是osd(磁盘),第二级是host(主机),第三级是chassis(机框),第4级是rack(机架),等等,甚至你可以自己再定义新的“桶”层级,但是一般来说,用这些通用的层级就够了。

    再再次,使用维护是不是会很复杂的问题。通过openstack的kolla进行部署的ceph,是通过docker容器实现的,如果需要新增磁盘osd,剔除故障磁盘osd,都可以非常容易实现,可以参考这两篇文章:“Openstack 之 kolla 部署ceph”、“Openstack 之 ceph更换故障磁盘” 。

    说了这么些,好像还没提到vmware什么事情,现在来说说vmware和使用ceph的openstack在存储方面的比较。

    1.虚拟机冗余功能方面的比较。openstack在生产落地的时候相对于vmware一直有一个软肋就是虚拟机的冗余特性不能得到很好的解决,自从和ceph结合以后,这个问题得到了解决,而且解决成本几乎为0。为什么这么说,vmware使用虚拟机的storage vmotion特性,需要购买它的企业版以上才有这个特性,另外,要实现所有虚拟机冗余的相关功能,不管是HA也好,vMostion也好,还是FT也好,都有一个前提条件,就是必须要有共享存储,而配置磁盘阵列作为共享存储大家都知道是一个不小的投入(自己搭建一个服务器作为共享存储随便玩玩的除外)。而openstack使用ceph则不一样,不需要复杂的配置,不需要集中式的磁盘阵列,因为ceph本身天然就是分布式存储,天然的就是有冗余的特性,因此openstack使用ceph存储,可以很容易就能实现虚拟机的热迁移,即虚拟机不关机的状态下从一台物理服务器迁移到另一台物理服务器,也很容易就能实现虚拟机的遣散(evacuate)功能,即将一台物理服务器上所有的虚拟机迁移到另一台服务器。

    2.磁盘IO性价比的比较。vmware虚拟机的磁盘IO效率依靠物理硬件本身,比如使用raid0,数据条带化,可以提高并行读写速度,再比如可以通过使用SSD固态硬盘,依靠集中的磁盘阵列的高速存储等等。而使用分布式存储ceph的openstack的虚拟机磁盘IO效率凭借分布式存储固有的分布式特性,磁盘越多,并行IO读写效率越高,同样也可以通过使用SSD固态硬盘实现高速存储池,满足不同等级的存储需求,比如使用一般的磁盘组成的存储池供对象存储使用,使用SSD固态硬盘组成的存储池供nova的image使用。两者当中的差别是什么,对,成本,就是成本,ceph可以不需要磁盘阵列,全部使用服务器自己,完成分布式存储的构建,灵活而且廉价。

    3.扩展性的比较。这个方面就更不用说了,vmware直接举白旗。vmware扩容到后期主要瓶颈就在存储上面,必须提高集中式的磁盘阵列的容量和性能,扩容到它所用磁盘阵列的极限的时候,只有再增加新的磁盘阵列进行扩容,而大家都懂的,IT基础设施里面什么最贵,对了,磁盘阵列,就是磁盘阵列。而使用了ceph的openstack就不同了,存储容量需要扩展的时候,直接在物理服务器上加磁盘osd,直接在openstack集群里面增加存储节点host,而且越加越high,因为分布式存储的特性就是越多的osd(对象存储设备),IO性能越high ,对于ceph来说,可扩展性是它最擅长的事情。

    以上都是想到哪儿就写到哪儿,今天就写到这里,后面想到新的东西的时候再写。