Ceph是统一存储解决方案
从存储供应商的角度来看,统一存储被定义为从单一平台访问基于文件的网络连接存储(NAS)和基于块的存储区域网络(SAN)。 NAS和SAN技术在20世纪90年代末和2000年初开始流行,但是当我们展望未来时,我们确信传统的专有NAS和SAN技术可以在50年后管理存储需求吗?他们是否拥有处理数十亿数据所需的资源?
使用Ceph,统一存储这个术语不仅仅意味着传统存储供应商声称提供的功能。 Ceph是从头开始设计的,是未来的;它的构建块可扩展以处理大量数据,开源模型确保我们不受任何单一供应商的突发奇想或命运的束缚。 Ceph是一种真正的统一存储解决方案,可从单个统一软件定义的后端提供块,文件和对象服务。与块和文件相比,对象存储更适合当今的非结构化数据策略组合。
通过定义良好的RESTful网络接口进行访问,使应用程序架构师和软件工程师摆脱操作系统内核和文件系统的细微差别和变幻莫测。此外,对象支持的应用程序可以通过释放用户管理离散大小的块卷的限制来轻松扩展。块卷有时可以就地扩展,但这很少是简单,快速或无中断的操作。可以编写应用程序来访问多个卷,无论是本机还是通过诸如Linux LVM(逻辑卷管理器)之类的层,但这些也可能很难管理和扩展仍然很痛苦。从客户端角度来看,对象存储不需要管理固定大小的卷或设备。
Ceph不是管理幕后的复杂性块和文件,而是管理低级RADOS对象,并在它们之上定义基于块和文件的存储。如果考虑传统的基于文件的存储系统,则通过目录和文件路径寻址文件,并且以类似的方式,Ceph中的对象由唯一标识符寻址并存储在平面命名空间中。
区分Ceph内部管理的RADOS对象和通过Ceph的S3 / Swift RGW服务可用的用户可见对象非常重要。在大多数情况下,对象指的是后者。
下一代架构传统存储系统缺乏管理元数据的有效方法。元数据是关于实际用户有效载荷数据的信息(数据),包括将数据写入和读取的位置。传统存储系统维护一个中央查找表来跟踪其元数据。每次客户端发送读取或写入操作的请求时,存储系统首先执行对巨大元数据表的查找。
收到结果后,它执行客户端操作。对于较小的存储系统,您可能不会注意到此集中式瓶颈对性能的影响,但随着存储域的大量增长,此方法的性能和可伸缩性限制变得越来越成问题。
Ceph不遵循传统的存储架构;它已经完全彻底改造为下一代。 Ceph不是集中存储,操作和访问元数据,而是引入了一种新方法,即可扩展哈希控制复制(CRUSH)算法。
有关Ceph相关主题的大量白皮书和其他文档,请访问http://ceph.com/resources/publications而不是在每个客户端请求的元数据表中执行查找,CRUSH算法使客户端能够独立计算数据应写入或读取。通过动态获取此元数据,无需管理集中式表。现代计算机可以非常快速地执行CRUSH查找;此外,可以跨群集节点分布较小的计算负载,从而利用分布式存储的强大功能。
CRUSH通过基础设施意识来实现这一目标。它了解逻辑和物理基础架构的各个组件的层次结构和容量:驱动器,节点,机箱,数据中心机架,池,网络交换机域,数据中心行,甚至是本地要求所规定的数据中心机房和建筑物。这些是任何基础架构的故障域。 CRUSH可以安全地复制数据,以便即使多个组件在故障域内或跨故障域发生故障,也可以保护数据(持久性)和可访问性(可用性)。 Ceph Manager在Ceph的CRUSH地图拓扑中为其基础设施定义了这些故障域。
Ceph后端和客户端共享CRUSH映射的副本,因此客户端可以导出所需数据的位置,驱动器,服务器,数据中心等,并直接访问它,而不会出现集中查找瓶颈。
CRUSH使Ceph的自我管理和自我修复成为可能。如果组件发生故障,CRUSH映射将更新以反映向下组件。后端根据定义的放置和复制规则透明地确定故障对群集的影响。如果没有行政干预,Ceph后端将执行幕后恢复,以确保数据的持久性和可用性。后端在其他未受影响的组件上创建幸存副本的数据副本,以恢复所需的安全程度。正确设计的CRUSH映射和CRUSH规则集可确保群集在不同组件上维护跨群集分布的多个数据副本,从而避免单个或多个组件故障导致的数据丢失。
RAID:时代的终结
冗余独立磁盘阵列(RAID)在过去30年中一直是基础存储技术。但是,随着数据量和组件容量的急剧扩大,基于RAID的存储系统越来越多地显示出其局限性,并且无法满足当前和未来的存储需求。
磁盘技术随着时间的推移已经成熟。制造商现在正以更低的价格生产具有巨大容量的企业级磁盘。随着驱动器容量和性能的提高,我们不再谈论450 GB,600 GB甚至1 TB磁盘。正如我们所写,现代企业级硬盘提供高达12 TB的存储空间;当您阅读这些词语时,可能会有14个或更多TB的容量。固态硬盘(SSD)以前是一种昂贵的解决方案,适用于需要抗冲击或最小功率和冷却的大型系统或小型系统的小容量高性能部分。近年来,随着价格暴跌,SSD容量急剧增加。自第一版Learning Ceph发布以来,SSD对于大容量存储也变得越来越可行。
考虑一个基于企业RAID的存储系统,该系统由许多4或8 TB磁盘驱动器构成;如果磁盘发生故障,RAID将需要数小时甚至数天才能从单个故障驱动器中恢复。如果在恢复过程中另一个驱动器出现故障,则会出现混乱,数据可能会丢失。使用RAID从多个大型磁盘驱动器的故障或更换中恢复是一个繁琐的过程,可能会显着降低客户端性能。
传统的RAID技术包括RAID 1(镜像),RAID 10(镜像加条带化)和RAID 5(奇偶校验)。
有效的RAID实施要求将整个专用驱动器配置为热备用。这会影响TCO,而备用驱动器耗尽可能会致命。大多数RAID策略都假设有一组相同大小的磁盘,因此如果混合使用不同速度和大小的驱动器,您将面临效率和速度损失甚至无法恢复。通常,RAID系统将无法使用比原始驱动器略小的备用驱动器或替换驱动器,如果更换驱动器较大,则通常会浪费额外的容量。
传统的基于RAID的存储系统的另一个缺点是它们很少提供潜在或位翻转错误的任何检测或纠正,即bit-rot。现代存储介质上数据的微观足迹意味着您从存储设备中读取的内容迟早会与您编写的内容不匹配,您可能无法知道何时发生这种情况。
Ceph运行定期清理,比较校验和并从服务中删除更改的数据副本。通过Luminous发布,Ceph还可以在每次读取时获得类似ZFS的校验和数据能力,从而提高关键数据的可靠性。
基于企业RAID的系统通常需要昂贵,复杂且繁琐的RAID可用HBA卡,这会增加管理开销,使监控变得复杂并增加总体成本。达到大小限制时,RAID可能会碰壁。本作者多次遇到无法将存储池扩展到64TB以上的系统。包括RAID 5和RAID 6在内的奇偶校验RAID实施也会受到写入吞吐量损失的影响,并且需要复杂且挑剔的缓存策略才能为大多数应用程序提供可容忍的性能。传统RAID的最大限制缺点通常是它只能防止磁盘故障;它无法防止交换机和网络故障,服务器硬件和操作系统故障,甚至是区域性灾难。根据策略,您可以从RAID中实现的最大保护是通过一个或最多两个驱动器故障幸存。
诸如RAID 60之类的策略可以在一定程度上缓解这种风险,尽管它们不是普遍可用的,效率低下,可能需要额外的许可,并且仍然提供针对某些故障模式的不完全保护。
对于现代存储容量,性能和耐用性需求,我们需要一种能够以性能和成本效益的方式克服所有这些限制的系统。
在当天,组件故障的常见解决方案是备份系统,它本身可能很慢,成本高,容量有限,并且受制于供应商锁定。现代数据量使得传统的备份策略由于规模和波动性而通常是不可行的。
Ceph存储系统是解决这些问题的最佳解决方案。
为了数据可靠性,Ceph使用数据复制(包括擦除编码)。它不使用传统的RAID,因此,它没有传统的基于RAID的企业存储系统的限制和漏洞。由于Ceph是软件定义的并且利用商品组件,因此我们不需要专门的硬件来进行数据复制。此外,Ceph管理员可以高度配置复制级别,他们可以根据本地需求和底层基础架构轻松管理数据保护策略。 Ceph的灵活性甚至允许管理人员定义多种类型和级别的保护,以满足同一后端内不同类型和数据群的需求。
通过复制,我们的意思是Ceph在多个不相交的驱动器和服务器上存储所有数据的完整,独立副本。默认情况下,Ceph将存储三个副本,产生的可用容量是总原始驱动器空间的1/3,但是其他配置也是可能的,并且单个群集可以容纳多种策略以满足不同的需求。
当组件发生故障时,Ceph的复制优于传统RAID。与RAID不同,当驱动器(或服务器!)发生故障时,该驱动器保存的数据将从大量幸存的驱动器中恢复。由于Ceph是由CRUSH映射驱动的分布式系统,因此复制的数据副本分散在许多驱动器中。按设计,主副本和复制副本不驻留在同一驱动器或服务器上;它们被放置在不同的故障域中。大量群集驱动器参与数据恢复,分配工作负载并最大限度地减少对正在进行的客户端操作的争用和影响。这使得恢复操作非常快,没有性能瓶颈。
此外,恢复不需要备用驱动器;数据将复制到群集中其他驱动器上的未分配空间。 Ceph实现了驱动器的加权机制,并以小于任何单个驱动器容量的粒度独立分类数据。这避免了RAID因非均匀驱动器大小而受到的限制和低效率。 Ceph根据每个驱动器和每个服务器的权重存储数据,通过CRUSH映射自适应地管理。使用较小的驱动器替换故障驱动器会导致集群总容量略有减少,但与传统RAID不同,它仍然有效。如果替换驱动器大于原始驱动器,甚至大很多倍,则群集的总容量也会相应增加。无论你投掷什么,Ceph做对了。