StorageOS 致力于改进有状态的容器存储

  • Hrishikesh Barua
  • 汪欣

2017 年 2 月 6 日

话题:DevOps

通过提供底层存储的单一视图和暴露自动化 API,StorageOS 致力于提供灵活的容器存储

StorageOS 是一个虚拟层,提供统一的可用存储层视图。该视图可作为卷(volume)来访问。StorageOS 以容器的形式运行,并用一个 Docker 卷插件来访问卷。也可以在容器外部直接访问卷。底层存储可以跨越许多运行 StorageOS 的底层容器。为了解该方案背后更多的技术信息,InfoQ 联系了 StorageOS 的创始人兼 CTO Alex Chircop。据 Chircop 介绍,StorageOS"可以通过单一层来访问后端的不同存储类型。虚拟化引擎目前支持物理和虚拟磁盘。我们正计划支持对象存储(如 S3)。"

分布式存储系统必须处理容错和延迟。为了实现容错,Chircop 说,"存储池使用纠删码(erasure coding)和副本来做保护。节点内使用纠删码以应对磁盘故障,跨节点使用副本以应对节点故障。"

StorageOS 卷可以跨多主机,因此它们被创建在有实例化容器的节点上,以减少延迟。Chircop 说,通过使用固态硬盘感知的布局(layout)并减少算法中的写入放大(write amplification),该软件针对固态硬盘进行了优化。写入放大是写入固态硬盘时遇到的问题。写入放大发生的原因包括重读已经写入的数据,更新已经写入的数据和作为重写过程的一部分写入新的位置。固态硬盘在这里还包括NVMe设备,NVMe 是一种基于 PCI Express 总线的规范,用于访问诸如固态硬盘的非易失性存储介质。

无状态应用比有状态应用更适合容器,因为后者需要持久性存储。现有的存储架构不适合自动化。StorageOS 的既定目标之一是在操作方面与容器环境实现相同的灵活性。例如,StorageOS Docker 插件即时提供存储,并直接与 API 和控制面板集成。"docker run"命令可以在启动指定容器的过程中调配和加载存储。StorageOS 还计划与 Kubernetes 集成。

标签功能可以更好地与编排流水线集成。标签可以指示位置、特定应用以及像 QA 环境或模拟(staging)环境。使用标签标记一个卷就将激活该功能。

Docker 最近收购了 Infinit,这是一家拥有可移植的分布式文件系统和存储层的初创公司。StorageOS 与他们的产品有什么不同? 听听 Chircop 怎么说:

企业中的一个问题是缺乏持久性的容器存储。对用户来说,Docker 所倡导的有状态分布式存储是一个容易的起点,很快客户就会面对企业级的持久性容器存储需求。Infinit 具有分布式文件系统,而数据库和消息队列需要快速的和确定的性能以及一致性保证,这些都是 StorageOS 体系结构的关键特性。

StorageOS 还可以与公有云(如 AWS)集成。由于被部署为容器,它可以安装在任何能够运行容器的平台上。还可以启用加密以满足数据隐私的要求。

查看英文原文StorageOS Aims to Improve Stateful Container Storage


感谢王纯超对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

DevOps