1 对象存储基本原理
对象存储系统(OSS)的对象存储架构包含有Client(客户端)、MDS(元数据服务器)和数据节点服务器,Client负责发送读写请求,并缓存对象元数据和文件实体数据。多台数据节点服务器构成OSD(对象存储设备)集群,OSD配置大容量硬盘,安装对象存储软件,负责存放文件实体数据,保证数据的可用性和完整性。多台MDS构成管理节点或控制节点集群,MDS安装对象存储管理软件,负责存储、管理对象元数据和处理Client读写访问请求,MDS可获取各OSD的基本配置和状态信息。
Client与MDS之间是信令交互,Client与OSD之间是媒体文件交互,MDS与OSD之间是元数据文件交互。对象存储架构通过将数据通路(数据读写)和控制通路(元数据)分离,采用分布式共享的文件实体数据和元数据,以简化管理。当Client访问对象(Object)时,会先访问MDS,MDS负责反馈对象是存储在哪些OSD,Client就会访问这些OSD并读写数据。多台OSD同时对外传输数据,可以提高读写速度。
2 对象存储架构
(1)对象
对象是数据和自描述信息的集合,是OSS中数据存储的基本单元,一个对象是文件实体数据和一组属性(元数据)信息的组合,属性分为预定义属性和自定义属性,可以定义基于文件的对象大小、修改时间、存储路径、访问权限、EC(纠删码)或RAID参数、数据分布和服务质量等属性。对象通过与存储系统通信以实现属性的智能自管理和自维护,每个对象都包含有对象ID(标识)、元数据、实体数据。对象存储采用无层次扁平化数据存储组织形式,采用一对象ID+偏移量来检索,以降低数据存储协议与接口的复杂度,提高系统扩展性并支持海量数据存储。相对于传统的块,对象支持在存储层进行智能的空间管理、内容相关的数据预取和缓存、可靠的多用户共享访问、对象级别的安全性等。OSS的对象存储架构示意图如图1所示。
(2)对象存储设备
OSD是基于对象存储技术的存储设备,通常采用刀片式结构构建对象存储设备。每个OSD都具有各自的CPU、内存、网络和磁盘存储介质,能够智能自动地管理其上的数据存储。对象存储软件具有专门的文件系统,OSD对外相当于提供文件共享服务的文件服务器。OSD可以自行决定对象的具体存储位置和数据的分布,并可对不同的对象提供不同的QoS(服务质量)。对象存储设备的上层通过对象ID来访问对象,无需了解对象的具体空间分布情况,支持文件等应用级逻辑结构,文件与对象的对应关系由上层直接控制。OSD负责管理对象数据,并将对象数据存储在标准的磁盘系统上,Client请求访问数据时采用对象ID和偏移量进行数据读写。OSD基于其自身的CPU和内存来优化数据分布,并智能地支持对象的预取,以优化磁盘的读写性能。
(3)元数据服务器
MDS是OSS的核心组件,负责控制Client与OSD对象的交互,为Client提供元数据,主要是文件的逻辑视图,包括文件与目录的组织关系、每个文件所对应的OSD等。MDS通过构造、管理、描述每个文件分布的视图,使Client能够直接访问到该文件所含的对象。MDS在OSS上构建一个文件结构,包括限额控制、目录和文件的创建和删除、访问控制等,进行文件和目录访问管理。MDS支持面向Client的文件Cache,以提高Client的读写性能,当Cache的文件发生改变时,会通知Client刷新Cache,以保持文件Cache的一致性。
(4)对象存储系统客户端
为使Client能够访问OSD上的对象,OSS通常在云计算应用平台的计算节点实现Client,OSS提供给用户应用程序访问的接口是标准的POSIX文件访问接口(可移植操作系统接口),具有与通用文件系统相同的访问方式。为了提高Client的读写性能,OSS支持对象数据的文件Cache和文件条带化功能。
3 对象存储系统关键技术
(1)分布式对象存储架构
对象存储一定是分布式存储,分布式对象存储架构采用面向web应用架构的restfulHTTP网络应用程序访问接口,屏蔽了存储底层的实现细节,采用平等的扁平结构,以提高扩展性、增强可靠性、实现平台无关性。该架构的性能和容量能够同时拓展,支持EB级规模扩展,通过对网络应用提供统一的命名空间,可构建EB级海量、统一、智能共享数据的存储资源池,以简化网络应用对数据的访问。
(2)分布式元数据
OSS采用分布式元数据管理,将存储数据的逻辑视图与物理视图分开,并将负载分散,避免因元数据服务器引起的瓶颈。MDS10%的负载在元数据的VFS(虚拟文件系统)层,90%的负载分布在每个OSD的元数据的inode(索引节点)层,即90%的元数据管理工作被分布到OSD,提高了系统元数据管理的性能,通过增加OSS的OSD,可以同时增加元数据性能和系统存储容量。
(3)并发数据访问
OSS的OSD是与网络连接的设备,OSD自身可以智能地管理其本地存储的数据,无需MDS介入。云计算应用平台的计算节点直接与OSD通信,访问OSD存储的数据。采用分布式算法和资源使用均衡算法,通过将文件系统的数据分布在多台OSD上,可线性地增加I/O聚合带宽和数据吞吐率。
(4)数据可靠性保障
①纠删码
纠删码(EC)是一种可以有效提升存储效率、安全性和便捷性的存储技术,针对n份原始数据,增加用来存储EC编码的m份数据,能通过n+m份中的任意n份数据,还原出原始数据。纠删码技术包含编码和解码两个过程,将原始的n份数据变为n+m份是编码,之后这n+m份数据可存放在不同的存储设备上,如果有任意≤m份的数据失效,仍能通过剩下的数据还原出原始数据,即n+m的EC编码,能容错m块数据故障,通常m
②数据多副本
支持存储池粒度的1~6副本存储策略,以获得不同等级的数据可靠性,支持在线修改副本数,但多副本机制的有效存储容量比EC机制要少。
③端到端校验
所有存取请求携带校验并连同数据一起存储到介质,以保证数据端到端的正确性和可用性。
④故障域隔离
支持自主规划集群物理设备拓扑,允许多级故障隔离,具备主机节点、机柜、数据中心三级故障隔离能力,以保障数据整体的安全性。
⑤不中断维护
支持不中断维护,在存储系统硬件维护、软件升级、容量扩充、介质热更换及故障窗口时间内,可保证集群存取性能不受影响。
⑥数据恢复QoS控制
在出现节点丢失、副本丢失或数据较长时间处于不一致状态时,存储系统会自动触发数据重建恢复。用户可设定数据恢复的带宽规则,以减少对业务的影响。
⑦硬盘重建
硬盘或SSD出现故障时,可一键完成新盘在线替换,无需重新创建OSD,原OSD数据会自动重建到新盘中。
⑧硬盘漫游
支持将故障服务器中的硬盘或SSD更换到新设备上,并重新恢复至原存储池,避免数据的多次重平衡。
⑨全冗余架构
OSS支持系统全冗余架构,控制器之间采用高可用性架构,支持元数据和数据分离部署(需要元数据节点,二者独立扩展),也支持元数据和数据融合部署(不需要独立的元数据节点),任何一个控制器出现故障,不影响数据的正常访问。
(5)数据安全性保障
措施主要有:基于角色访问控制:通过权限角色划分,保护系统访问安全。全面审计记录:审计所有系统操作、维护记录。存储控制台SSL(安全套接字协议层)访问加密:在客户端和服务器端之间建立加密通道,保证数据传输及整体访问的安全性。访问令牌:设置访问系统API所需的认证密钥。身份认证:支持第三方平台无需使用本存储管理平台的认证信息,而是直接使用第三方平台已有的认证信息,即可登录使用本平台的功能。密码安全策略设置:可以安全地保证控制台中的密码规则及账户登录。
4 对象存储系统选型评价
(1)软硬件兼容性
应支持多存储介质,兼容SAS、NL-SAS、SATAHDD、SATASSD、m.2SSD、u.2NVME等接口;服务器兼容工业标准的X86通用硬件,硬件无需限定品牌型号;硬盘及服务器异构,支持同一存储资源池混插硬盘和异构服务器;在不剔除节点配置的前提下,可完成操作系统的在线升级;OSS的分布式存储系统软件应可以安装在非定制通用发行版Linux操作系统上。
(2)基础架构易用性
操作界面应可显示license、服务更新、产品功能、版本号等更新信息;支持一键安装和自动化配置,可图形化快速完成资源的基础部署,缩短新增节点的上线时间;支持可视化操作引导,一键配置所需资源,快速完成相应资源的使用,减少产品学习成本和配置时间。
(3)对象存储特性
协议支持。支持AmazonS3标准接口,兼容S3生态体系,支持HadoopHDFS高性能客户端。支持NFS、HDFS、S3等协议互通,可实现文件协议和对象协议的互操作。
①桶(Bucket)的权限控制
存储桶(简称桶)是用于存储对象的容器,桶的名称应该全局唯一,每个对象都存储在一个桶中。采用Bucketpolicy(桶策略或存储空间策略)控制存储系统中的桶、对象等底层资源的访问权限,包括桶的访问权限控制、桶内对象访问权限控制,从访问来源、访问目标、操作类型、过滤条件等方面提供丰富的控制策略,是比BucketACL(桶存储访问控制列表)粒度更细的资源权限控制。
②桶策略管理
对不同类型的对象数据可以自定义存储策略,设定元数据、数据存放的资源池,不同数据存放到不同的资源池,如大文件存EC池、小文件存副本池。桶的配额管理支持自定义存储桶配额,包括容量、对象数。支持对象存储的负载均衡,在保证对象存储高可用的同时,实现负载均衡。支持多版本对象存储桶,开启多版本之后,桶中的对象都以多版本形式存储。
③对象压缩和加密
支持对象数据在网关层进行压缩,以减少端到端数据传输带宽占用。支持对象加密,即支持对象数据网关加密,避免数据通过其他非法途径获取,保证数据安全。支持对象存储SSL访问加密,在客户端和服务器端之间建立加密通道,保证数据在传输过程中不被窃取或篡改。支持对象写保护,对象存储桶支持一次写入、多次读取模式,可对关键数据实行写保护,杜绝病毒破坏和非法篡改。
④数据存储分级
可根据数据性质选择存储级别,重要的数据采用高安全级别的存储类型,对性能要求高的数据存放在高性能存储池,非重要的数据采用低安全级别的存储类型。
⑤数据生命周期管理
支持存储桶数据生命周期管理,可对存储桶内的数据通过数据前缀或整桶进行删除和延时删除。
(4)高级功能特性
①内存数据读缓存
通过流预测算法在内存中提前获取目标数据,提高读性能,支持添加介质时配置读缓存的大小。
②对象属性查询
内置通过并行计算方式构建的数据查询引擎,以对象的元数据、标签等信息为基础建立查询检索条件,通过查询引擎并行遍历系统内数据信息,查找出符合指定条件的对象集合,查询引擎的计算能力可按需扩展,实现每秒百万甚至千万个文件的查询效率。
③多站点全局统一命名空间
支持通过跨集群建立统一的用户和桶管理视图,桶中对象数据在多个站点间可异步复制,实现数据异地容灾、就近访问和负载跨站点分布。可通过延展集群方式支持同城双活,自定义集群主副本位置,实现本地读优先。
④海量小文件智能归并
自动识别文件大小,将小文件存储在归并池中,大文件存储在数据池中,当小文件达到一定大小后,存储系统可自动将小文件合并成大文件后归并到数据池中,以提升小文件初期写入效率,并提高存储系统整体空间利用率。
(5)运行管理特性
①多管理接口
支持RESTfulAPI接口,以便于上层应用无缝整合存储系统;支持CLI命令行工具,以实现管理效率的最大化;支持可视化GUI管理接口,支持SNMPV2/V3协议和TRAP、GET、SET操作。
②用户权限管理
可灵活定义用户权限和配额限制,让不同的用户拥有不同的权限,可限制不同用户的总容量、总存储桶、总对象数配额。
③全局即刻搜索
支持对OSS内所有资源的全部信息搜索,支持列表信息排序及相应字段的过滤,允许快速访问关键资源;可实现全方位性能指标监控,支持物理服务器CPU、内存、网络、负载监控,支持桶读写IOPS、带宽和延迟监控,支持自定义设置各类性能指标统计保留的天数。
④实时健康管理
支持物理服务器、存储介质、存储池数据冗余状态的监控及管理,支持存储介质根据SMART信息预测设备寿命,提醒坏盘预警。可自定义告警通知,在存储系统的软硬件出现故障时,由管理控制台向管理员提示告警,支持邮件和短信告警。
⑤容量预警
可根据智能算法预测未来容量使用的增长趋势,可预测剩余容量将在几天后被写满,并在容量使用天数剩余30天内给出提示和告警。支持根据业务需求自定义和调整集群中硬盘容量的安全阈值,达到阈值后该硬盘将不可再写入数据。
⑥可视化拓扑
支持可视化硬盘定位及网络拓扑,可直观展现集群网络、数据中心、机架、服务器、网卡信息和集群网络中各个模块的异常情况,可展示硬盘的基本信息及从属关系,从属关系包括从属服务器视图和从属存储池视图。
⑦日志功能
系统日志应记录重要的系统事件,桶访问日志应记录每次桶资源访问请求及处理结果的详细信息,操作日志应记录操作员的行为,以便于排错、审计和跟踪。
(6)可扩展能力
支持存储桶按整池无感知扩容,不改变用户调用数据方式,避免因数据重平衡和木桶效应对业务可用性的影响;支持设定可读写的活动池与只读非活动池,减少扩容带来的数据重分布消耗;可突破存储规模及地域限制,提供全局统一的命名空间,将不同地理位置的存储系统按需融合,实现数据就近读取;可实现软硬件解耦,支持物理设备异构部署,满足硬件设备的升级需求。
5 对象存储系统典型应用场景(图2)
(1)对象存储适合的应用
随着移动互联网、云计算、大数据的飞速发展,全球的信息化数据量到2020年已达到几十ZB,这些数据多半属于非结构化数据。恰为海量非结构化数据而生的对象存储系统,可为IT企业信息化建设提供综合全面的数据存储解决方案,使IT企业可以安全、轻松地管理海量非结构化数据。OSS采用扁平的数据结构而非目录树结构,其简洁的数据读写接口和数据存储管理功能,可提高用户访问、数据读写和数据管理的效率。对象存储具备高性价比、灵活可扩展、自愈合、多租户等优势,适合于互联网、流媒体、CDN等应用场景的海量非结构化数据的存储与管理。
(2)海量数据高并发应用
OSS采用扁平的全局统一命名空间,无目录树瓶颈,可有效提升海量小文件共享访问的效率,轻松支持千亿级小文件和大数据负载快速存储及检索的应用场景。
(3)备份归档应用
OSS可无缝对接Veeam、Veritas、CommVault等备份平台,为网站、移动应用程序、企业应用程序等应用场景提供备份、还原、归档应用和FTP、网盘、云存储等文件同步共享应用解决方案。
(4)大数据应用
OSS兼容传统应用和云计算及数据挖掘应用,OSS的生命周期管理可赋予数据的价值属性,满足海量非结构化数据的管理需求。可利用元数据、自定义标签等信息管理手段实现数据属性的反查和分类,满足大数据、IoT(物联网)、人工智能、机器学习等应用场景的数据查询和自定义数据属性等应用需求。
(5)广电云媒资应用
OSS可提供按需扩展的弹性存储资源池,为视频直播、视频点播、新闻资讯等提供高可扩展、高吞吐量和高可用的CDN流媒体等非结构化数据存储解决方案。通过建立私有云平台的对象存储系统,并对接打通公有云平台的对象存储系统,可高效地存储和管理海量的图片、视频、文档等非结构化富媒体数据,以支持面向云计算环境的广电云媒资应用。
6 结束语
本文以广电数据中心建设与运维人员的视角,从对象存储基本原理、对象存储架构、对象存储系统关键技术、对象存储系统选型评价、对象存储系统典型应用场景等方面,讨论了分布式对象存储系统选型与应用方面所考虑的诸多要点问题,希望能够给业内同行带来启发或帮助。
作者简介
徐俭,男,计算机专业硕士,国家广电总局广电信息系统运维服务认证技术专家、ITSS(国家信息技术服务标准)评估师、ITSS应用经理、扬州大学广播电视专业学位硕士生导师,现任扬州广电传媒集团(总台)首席工程师兼制播网络事业部主任,在基层一线已连续从事广电工程专业技术工作33年,是扬州广电传媒集团(总台)在非编、制作、播总控、台内网主干、媒资、融媒体平台等系统设计与应用方面的技术带头人。
编辑:Harris