现在的位置: 首页 > 综合 > 正文

虚拟化环境下的存储

2013年01月12日 ⁄ 综合 ⁄ 共 1535字 ⁄ 字号 评论关闭

对虚拟化环境的存储并非专家,只是最近的技术交流恰好遇到这方面的技术,而且以前一直比较感兴趣,就目前了解到的知识简单做下总结。

虚拟化环境下的存储,典型的应用场景就是openstack中的cinder。cinder只是定义了EBS(elastic block storage)的框架,并没给出EBS的实现方案。

抛开openstack不说,目前比价流行的VDI(virtual desktop infrastructure)中的存储,就是典型的虚拟化环境的存储。

目前商用上线的VDI方案中一般采用传统的盘阵,几个server共享一个磁阵。如果hypervisor是vmware,那么可以用vmware的clusterfs VMFS来管理这个san。此外,vmware为了更好的利用san阵列,还推出了VAAI规范(vStorage APIs for Array Integration)。VAAI针对传统的scsi命令集做了扩充,例如block copy,block 锁等。原始的scsi命令集并没这些东西。VAAI针对虚拟化环境的特殊需求设计了这些新的scsi命令。例如我想copy一个虚拟机镜像文件,传统的做法是hypervisor读到内存,然后在写到新的磁盘分区。有了copy的scsi命令后,这个从磁盘你读取数据然后copy的动作就交给了san的控制器去做,这样做肯定效率比原来的做法要高。

nas方面做的比较好的netapp也在推广用nfs接口为虚拟机提供存储。netapp的人说nfs用在虚拟机上不会比san效果差,虽说也没实际验证过,但是nas的成本肯定更低一些,扩展性也高一些。

开源的解决方案方面,ceph社区有人用它的块接口为cinder提供存储。没有实际了解过ceph的块接口,个人猜测也是基于开源的linux iscsi target/initiator实现的iscsi的适配。

此外redhat在kvm中集成了libglusterfs,这样qemu/kmv中的vm可以直接访问gluster,不过不清楚vm跟glusterfs具体是怎么定位,是否vm的一个硬盘就是gluster的一个文件,还是gluster只是mount到了vm的文件系统中。

淘宝在做的sheepdog是专门为ebs设计的一中分布式存储,不清楚目前发展如何。

最后回到主题是刚接触到的这家nutanix的公司,用自己的nDFS专为VDI提供后台存储。他们的解决方案如果从computer architecture的角度看,的确是下一代的VDI存储架构。他们的架构很想hadoop,计算节点和存储节点为一体,每个节点之间share nothing,很好的scale out能力。每个物理机上有ssd和sata盘,ssd和sata为分布式文件系统提供存储能力。传统的san或者nas的解决方案,显然扩展性不会太好,而且成本很高,san或者nas的控制器本身就是瓶颈,很难解决启动风暴问题。而上面提到的分布式文件系统方法,扩展性很好,但是性能恐怕不过,因为传统的分布式文件系统设计都比较通用,一般都是大文件效果比较好,而存储虚拟机镜像有很多小文件,要求延迟非常低。nutanix方案技术上也有些小的缺陷,他们为了兼容性,自己的nDFS的client并没有直接跟hypervisor融为一体,而是相互独立的。vm中看到的nDFS的存储其实是通用nfs接口。这点上应该有一些性能损失。理想上的情景最好是nDFS的客户端作为hypersor的一部分。

nutanix是硅谷的一个startup,官网上可以下到他们的技术白皮书。另外还发现一个国内的startup zelin.io也在类似的事情,不过zelin.io的网站还看不到文档描述。

抱歉!评论已关闭.