首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》12.2 共享文件系统服务(Manila)

关灯直达底部

12.2.1 概述

根据IDC 2012数据,65%的数据都是以文件的形态进行存储的。随着云计算的发展,大量企业应用向云平台迁移,这意味着云计算对于NAS服务有强烈的需求。然而共享文件系统的管理和配置技术难度很大,大部分客户试图通过脚本、自动化工具改善。

Manila为OpenStack提供对共享文件系统的支持,作为对OpenStack现有存储特性非常必要的补充,扩展和改进了OpenStack访问外界共享存储的能力。

Manila项目将共享文件系统引入OpenStack中。到目前为止,OpenStack有两个主要存储项目:Cinder和Swift。对于支持光纤通信和iSCSI协议的块存储设备,Cinder提供块存储服务接口。

Cinder块存储服务允许将单个卷挂载到虚拟机上,在块设备层提供高性能访问能力。但是由于在块级别协议层没有内置锁和数据同步机制,所以一个卷/LUN只能由一个虚拟机(Nova guest)读写,而不支持并发访问。另一方面,块设备的容量往往也存在限制,使得它们很难实现在线扩容和减容。

Swift针对大量二进制大对象提供对象存储。因为对象一般是不可变的,所以Swift并不适用于存储事务数据或者虚拟机。由于纠删码等数据保护手段的开销,对象存储也不适用于小对象,并且由于对象存储采用多副本等数据保护方法,也使得它非常低效。

Manila的主要功能是为Nova Compute实例提供共享文件存储访问,外部存储资源可以是NetApp、EMC等提供的商用硬件,也可以是Ceph、GlusterFS等纯软件系统。Manila将基于文件通信协议的外部存储系统映射给Nova主机和虚拟机,弥补了OpenStack块存储和对象存储能力的不足。由于NAS协议管理锁和保证并发访问需要的数据完整性,Manila文件系统可以被多个主机和虚拟机并发访问。

Manila有效管理文件系统实例的创建及与Nova Compute实例的映射关系,而不涉及数据路径。Manila通过API接口、命令行和OpenStack Horizon显示界面集成对外提供特性。

Manila项目于2012年启动,因为文件和卷之间的很多概念和API调用都是相似的,所以起初Manila只是Cinder项目的一个分支。随着项目的发展,2014年8月,Manila进入OpenStack孵化器。Manila在Kilo版本已经发布,虽然目前还没有成为核心项目,但在2016年有望最终孵化成为核心项目。

Manila为硬件提供商将其产品部署到OpenStack提供了机会,因此,我们看到NetApp(Clustered ONTAP)、EMC(VNX)、IBM(Spectrum Scale)和OpenStack社区会员Mirantis都投入了大量相关研发工作。事实上,Manila是由NetApp员工牵头的。同时,NetApp和Mirantis分别提供了25%和33%的源码,如图12-4所示。

图12-4 Manila项目社区贡献情况