UDS(UnitedStack Distributed Storage)存储产品是UnitedStack(北京)科技有限公司推出的一款基于Ceph、可大规模扩展的开放式、软件定义存储系统,可以为企业以及云环境提供统一存储。通过将块、对象、文件存储整合至统一的平台,UDS存储不仅可以高效工作,还可以自动管理企业运营所需的 PB 级数据,让企业彻底从这些繁琐任务中摆脱出来。
UDS遵循软件定义存储的设计哲学,可部署在任意工业标准的x86服务器上,利用传统的SATA、SAS、SSD存储设备实现数据存取。UDS可实现PB级的海量存储规模、动态的容量及性能扩展、卓越的高可用性
-
UDS存储产品采用100%开源软件,企业完全可控。
-
构建于普通的服务器和普通的存储设备,显著降低每GB存储的成本。
-
精简配置,允许超量配置(仅限于块存储)。
-
提供统一的存储服务,降低企业对于存储的运维成本
-
提供主流存储服务接口,轻松与企业现有存储架构集成以及方便企业进行存储替换
-
为海量企业数据提供可靠的存储基础
-
提供稳定性测试工具以及故障模拟工具,方便用户构建故障环境,进行运维训练。理想的云存储解决方案
当今企业正在面临管理大量数据的问题,为了高效管理并且降低成本,企业的IT架构云化是一个势在必行的趋势。而数据表明,OpenStack正在被越来越多的企业采用, Ceph对于OpenStack的支持也已经经过大量生产实践的验证。通过提供一个无单点故障的单个自我修复、管理平台,UDS可有效进行数据管理,以帮助部署OpenStack的企业专注于发掘业务数据的可用性。
除了OpenStack这个解决方案之外,还有诸如CloudStack等解决方案,UDS也能无缝的和这些系统进行对接。同时,UDS存储产品支持多种架构方案,结合用户的实际需求,致力于为用户提供高性价比的存储方案。
UDS本身是一个分布式存储,数据跨多架构、多设备冗余存储,提供跨机架级的容灾和用户资源隔离的功能,为数据提供 99.999999% 的持久性。
UDS提供的存储产品,享有存储研发人员提供的技术支持和专业的培训。
-
命名规则 UDS的版本命名规则参考采用(主版本号.次版本号.修订号),版本号递增规则如下:
-
主版本号:架构变化或者重大功能的引入
-
次版本号:影响范围较小的新功能引入、性能、稳定性方面的提升和优化
-
修订号:比较严重的bug修复。
-
UDS每个大的release版本都有一个名称代号,其采用魔兽里的人名、地名、国家名来命名,第一个发布版本的名称定为 Azeroth
- 发布周期 UDS是基于Ceph构建的存储,所以UDS的发布周期和Ceph LTS的Release Cycle有很大关系,目前Ceph社区一般一年会有三到四个Stable 的release版本推出,每隔一个版本是一个LTS的版本。UDS以稳定为主要要求,所以一般大版本保持在一年一个的发布周期。Ceph的某个Release版本在我们充分评估之后可能会作为UDS的次版本出现。
UDS逻辑上分为物理硬件、UDS存储核心、存储服务接口、监控管理报警平台以及故障模拟系统组成,能够为基于OpenStack、KVM/Qemu的云计算平台以及数据系统提供块存储服务,也能够为视频、小文件、图片等非结构化应用系统提供支持S3和Swift协议的对象存储服务。另外,在Azeroth版本中也提供了供试用的支持NFS/CIFS的文件服务,可以为VDI系统、大数据以及容器系统提供存储。
UDS采用软件定义存储的设计,有效的实现软硬件解耦,逻辑抽象、资源池化,可灵活支持各类标准的x86硬件。UDS也是一个分布式存储系统,采用可扩展的系统结构,利用多台存储服务器的存储、计算资源来存储数据。
UDS的核心存储系统包括三部分:Monitor、OSD和MDS:
-
Monitor维护了整个集群所有的状态信息,并且以map的形式将这些信息发布到整个集群内,保证在一个时刻内这些信息的一致性,集群也根据状态信息决定数据的存取以及数据平衡工作。
-
OSD是Object Storage Daemon的缩写,具体负责数据存取的组件,一般情况下,它包括一个OSD进程、一块格式化成XFS/Ext4的磁盘。当OSD进程收到具体的数据读写请求时,会通过文件系统的读写接口将数据从磁盘中读出或者将数据写入磁盘。
-
MDS是Meta Data Server的缩写,用于管理文件服务对应的元数据信息。
-
存储池:Ceph以存储池(Pools)为逻辑单元管理数据的存储并对资源进行隔离,通过创建不同的存储池提供不同的存储服务(块存储、对象存储、文件存储),每个存储池都提供一个命名空间。
-
对象(Object):数据在存储池中以对象的形式存在。任何存入存储池中的数据都会先转化为一个或者若干个对象,对象最终会以文件的形式存储在OSD上。
-
PG: PG是Placement Group的缩写,以文件夹的形式存储在OSD上。对于一个分布式的存储系统,存储容量通常会被扩容到PB级别,这时候一个资源池(Pool)中,可能会存储百万,千万,甚至上亿个Object。然而UDS需要维护数据的持久性,scrubbing,复制,数据平衡,数据恢复。如果以Object为粒度进行管理,那么随着Object数量的增多,Ceph集群对于数据的管理压力会越来越大,这将极大的影响Ceph的可扩展性以及性能。所以Ceph通过将一个资源池Pool的数据分片成一定数量的PG进行管理。
UDS存储系统采用去中心化的对等设计,整个存储系统中不存在中心节点管理数据的存取。客户端在进行数据读写时,从Monitor拿到集群当前的OSD map,通过一种伪随机的分布式Hash算法CRUSH计算出数据的存放位置,一个OSD的列表。然后直接通过TCP/IP协议和OSD建立连接,进行数据读写。
CRUSH包括两部分:CRUSH Map和CRUSH Rule
- CRUSH map维护了集群内OSD的组织方式(通常代表集群的物理拓扑结构),这种组织方式以树型结构存在,所有OSD都位于树的叶子节点,而树的非叶子节点被称为桶(Bucket),一般是机房、机架、机器等信息。CRUSH map的变化会导致集群中数据的重分布。
- CRUSH Rule定义了一系列操作。
CRUSH map好比是一张寻找OSD的地图,并且通过这张地图能够有很多种方法找到OSD,而CRUSH rule就是定义好的寻找OSD的一种方法。
UDS通过副本机制以及纠删码方式保证存储在系统中的数据。
- 副本机制:如果设置了副本机制,任何存入系统中的数据会自动复制生成副本数个数据,一般是3副本。并且通过合理配置CRUSH map实现每一份数据都存储在一个机架里,实现机架级的容灾。
- 纠删码方式:纠删码通过将对象(Object)进一步分片,计算出分片后数据的校验值,在具体出现故障时通过校验值进行数据恢复。
副本机制和纠删码两个方案各有优劣,是在性能和成本之间的博弈。
-
故障检测。UDS的故障检测主要通过心跳机制来完成。OSD和OSD之间、OSD和Monitor之间、Monitor和Monitor之间都有心跳检查。心跳的时间间隔可以通过参数配置。一个OSD当通过心跳检测到其他OSD异常之后,会向Monitor报告这个异常情况,当Monitor收到若干个OSD报告了同一个OSD异常时,Monitor会将该OSD置为down,并更新集群的Map。
-
故障处理。当集群中OSD被置为Down状态之后,存在这个OSD上的数据会相应的进入降级状态。当出问题的OSD在一段时间(时间可设置)没有得到恢复之后,Monitor会自动将其标记为OUT状态,集群会将降级的数据重新恢复至副本数。
-
故障恢复。默认情况下,OSD进程和Monitor进程会被systemd管理起来,如果是临时进程出现故障,systemd会尝试将对应进程起起来。如果OSD进程在被OUT之前起来了,集群会进行数据一致性比对,并将所有数据同步到一致状态。如果是在被OUT之后起来的,那么OSD进程会以新加入的方式重新进入集群并触发相应的数据平衡过程。
UDS 1.0存储服务
- 提供对象、块存储和文件服务
- 通过 Amazon S3 或本地 API 协议进行对象存储
- 与 OpenStack以及其他开源 Hypervisor 集成的块存储
- 提供支持NFS协议的NAS服务功能
- 集群规模支持TB级到PB级,支持在线扩容
- 灵活的存储策略、支持多种存储方案
- 通过复制或纠删码实现数据持久性
- 用于热\/冷数据管理的缓存分层
UDS Installer
- 支持离线或者在线的存储服务部署
UDS管理平台
- 图形界面管理配置存储资源
- 存储使用情况统计
- 可控粒度的存储服务监控和报警体系
其他服务
- SLA级别技术支持
- 热修复补丁
- 不同级别的技术培训
- 故障模拟演练系统搭建
- 可控粒度的存储服务监控和报警体系
UDS是一套的存储系统,结合标准的x86硬件服务器、SATA/SAS/SSD等存储设备以及网络设备可以迅速构建一套高性能、高可靠性、弹性化的统一存储系统。UDS以软件的形态交付,用户可以根据自己的业务需求和采购习惯选择硬件平台包括机架、服务器、交换机和磁盘等。
具体详细的硬件配置推荐,详见硬件规划文档。
- 完全分布式去中心化存储架构,提升系统扩展能力
- Scale-out动态扩展,快速在线完成扩容和缩容,支持最大1024个OSD的集群。
- 支持海量数据应用环境,支持PB级容量规模和上亿级别小文件处理。
- 支持虚拟化和精简配置,允许超量配置。
- 全活冗余节点,节点故障后系统自动接管故障处理与恢复。
- 多种数据保护机制实现多级别的容错
- 自动数据一致性检查以及智能数据修复
- 系统经过千节点规模故障模拟以及压力测试
- 数据平衡过程中,数据迁移速度控制,尽量减少对上层业务系统的影响。
- 专用的Installer,实现UDS存储集群的快速部署。
- 故障引入工具,能够模拟常见的故障,创建实验环境帮助运维人员进行故障处理演练。
- Benchmark工具,方便用户针对存储系统进行benchmark。
- 基于Web的存储管理平台,提供集群的常见配置和管理操作。
- 按每个磁盘或每个资源池的使用率统计数据,及时掌握存储的使用情况。
- 可控粒度的Ceph监控。纪录存储全方位的性能变化数据,便于分析性能瓶颈,追溯存储问题。
- 不同等级的报警策略,针对问题划分等级,支持邮件、短信、语音等报警方式。
- “Copy-on-write (写入时复制)”克隆,快速配置虚拟机 (VM) 镜像(仅限于块存储)。
- 内存中的客户端缓存。缓存内核和 Hypervisor(仅限于块存储)。
- 块设备的预读功能,提高存储对特定I/O类型的服务性能。
- 改进的数据 I/O 并行度。采用客户端-群集模型,而不是客户端-服务器模型。
- 缓存分层。使用过期策略将“热”数据存放于 SSD 缓存中。
- Flash日志。增强数据写入性能。
- 可自定义的条带大小设置。无论是存储大小为几 GB 的视频文件还是存储小图片,均可按需配置最佳系统性能。
- 完备的文档体系。
- 提供适应不同级别的Ceph知识培训,从原理知识到代码分析。
OpenStack正有趋势成为越来越来企业构建云平台基础服务的选择。而存储方案在OpenStack中的构建中起着至关重要的作用,OpenStack也支持多种存储后端。
UnitedStack是最早通过Ceph为OpenStack中的Nova、Cinder和Glance提供统一存储的企业之一,并且这种实现方式已经经过了大多数生产环境的检验和验证。UDS的核心组件是基于Ceph的,所以UDS和OpenStack也能实现无缝的对接。
通过UDS存储能够为OpenStack提供以下功能:
-
采用融合架构,无需专用的存储设备和网络设备,极大减少了硬件成本的投入。
-
存储虚拟化,允许存储超售。
-
性能盘和容量盘
-
性能云硬盘基于全SSD来构建,极大提供存储的IOPS和吞吐量,单块1T的云硬盘能够提供6000+的IOPS和170MB/s的吞吐量,并且创建过程也是秒级的,适用于对性能要求比较高的业务场景。
-
容量型云硬盘基于SATA或者SAS来构建,适用于对性能要求不高,但有容量需求的业务场景。
-
-
云主机快照和云硬盘快照
某国内领先的云监控运营商,为零售和连锁企业、物流行业、教育、建筑、石油行业提供可视化管理、远程监控运营等服务,包括了软硬件生产研发、销售、安装、平台运营、售后服务、安保服务等整体解决方案。旨在打造全球最大的视频监控云计算平台。
随着业务发展的要求,需要在多区域多中心部署、弹性扩充大容量存储集群、内容分级存储利用、数据高可用、高持久、大数据分析以及一些增值服务等问题传统存储提供厂家不能或者只能满足部分。出于业务安全可控、降低成本、提高效率的角度出发,搭建一套存储系统。
-
架构需求:
-
协议、容量、容灾需求:
-
存储资源池通过对象存储/Amazon S3协议对外提供支持
-
支持基本的数据访问操作和权限控制
-
容量初期规模在5~10PB,中后期可达到50PB
-
需要具备单块磁盘/单个节点两个级别的容灾能力
-
尽可能的降低容灾所需要的容量成本
-
-
性能需求:
-
存储系统的访问模式是上传(顺序写)为主,少量下载(随机读)。
-
采用的视频采集设备/摄像头使用512Kbps的编码率。
-
单个数据中心支持所覆盖区域的10000家客户/门店,需要大约5GB/s的写入带宽。
-
-
解决方案:
流服务器负责视频流的处理,通过共网IP将数据发送给Nginx,Nginx会将请求转发给RGW服务。RGW服务通过存储内容与UDS存储集群进行数据交互。