Ceph万字总结|如何改善存储性能以及提升存储稳定性

本文深入探讨了Ceph分布式存储系统,解释了其背景、核心组件和使用场景。文章讨论了Ceph部署的常见失败方案,如Monitor数目不正确、OSD配置不当等问题,并提供了故障排查和性能优化策略,如硬件配置、守护进程套接字检查和Crush Map调整。此外,还介绍了OSD抖动的调试和恢复方法,以及性能增强措施,如配置优化和缓存层的使用。最后,强调了Ceph性能与稳定性的提升对降低企业存储成本的重要性。
摘要由CSDN通过智能技术生成


「Ceph – 简介」

Ceph是一个即让人印象深刻又让人畏惧的开源存储产品。通过本文,用户能确定Ceph是否满足自身的应用需求。在本文中,我们将深入研究Ceph的起源,研究其功能和基础技术,并讨论一些通用的部署方案和优化与性能增强方案。同时本文也提供了一些故障场景以及对应的解决思路。

背景

Ceph是一个开源的分布式存储解决方案,具有极大的灵活性和适应性。Ceph项目最早起源于Sage就读博士期间的论文(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHatOpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

Ceph在2014年被RedHat收购后,一直由RedHat负责维护。Ceph的命名和UCSCCeph 的诞生地)的吉祥物有关,这个吉祥物是 “Sammy”,一个香蕉色的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的形象比喻。自从2012年7月3日发布第一个版本的Argonaut以来,随着新技术的整合,Ceph经历了几次开发迭代。借助适用于OpenstackProxmox的虚拟化平台,Ceph可支持直接将iSCSI存储呈现给虚拟化平台。同时Ceph也拥有功能强大的API。在世界上的各大公司都能发现Ceph的身影——提供块存储,文件存储,对象存储。

由于Ceph是目前唯一提供以下所有功能的存储解决方案,因此Ceph越来越受欢迎,并吸引了许多大型企业的极大兴趣:

  • 「软件定义」:软件定义存储 (SDS) 是一种能将存储软件与硬件分隔开的存储架构。不同于传统的网络附加存储 (NAS) 或存储区域网络 (SAN) 系统,SDS 一般都在行业标准系统或 x86 系统上运行,从而消除了软件对于专有硬件的依赖性。借助Ceph,还可以为诸如纠错码,副本,精简配置,快照和备份之类的功能提供策略管理。

  • 「企业级」Ceph旨在满足大型组织在可用性,兼容性,可靠性,可伸缩性,性能和安全性等方面的需求。它同时支持按比例伸缩,从而使其具有很高的灵活性,并且其可扩展性潜力几乎无限。

  • 「统一存储」Ceph提供了块+对象+文件存储,从而提供了更大的灵活性(大多数其他存储产品都是仅块,仅文件,仅对象或文件+块;ceph提供的三种混合存储是非常罕见)。

  • 「开源」:开源实现技术的敏捷性,通常提供多种解决问题的方法。开源通常也更具成本效益,并且可以更轻松地使组织开始规模更小,规模更大。开源解决方案背后的许多意识形态孕育了一个相互协作且参与度高的专业社区,这些社区反应灵敏且相互支持。更不用说开源是未来的方向。Web,移动和云解决方案越来越多地建立在开源基础架构上。

「为什么选择Ceph?」

「Ceph 分布式核心组件」

集群文件系统最初始于1990年代末和2000年代初。Lustre是最早利用可伸缩文件系统实现产品化的产品之一。多年来,出现了其他一些Lustre衍生产品,包括GlusterFSGPFSXtreemFSOrangeFS等。这些文件系统都集中于为文件系统实现符合POSIX的挂载,并且缺乏通用的集成API

Ceph的架构并不需要考虑到需要与POSIX兼容的文件系统——这完全得益于云的时代。利用RADOSCeph可以扩展不受元数据约束限制的块设备。这极大地提高了存储性能,但是却使那些寻求基于Ceph的大型文件系统挂载方法的人们望而却步。直到Ceph Jewel10.2.0)版本发布为止,CephFS已经是稳定且可靠的文件系统——允许部署POSIX挂载的文件系统。

Ceph支持块,对象和文件存储,并且具有横向扩展能力,这意味着多个Ceph存储节点(服务器)共同提供了一个可快速处理上PB数据(1PB = 1,000 TB = 1,000,000 GB)的存储系统。利用作为基础的硬件组件,它还可以同时提高性能和容量。

Ceph具有许多基本的企业存储功能,包括副本,纠错码,快照,自动精简配置,分层(在闪存和普通硬盘之间缓存数据的能力——即缓存)以及自我修复功能。为了做到这一点,Ceph利用了下面将要探讨的几个组件。

Ceph Nautilusv14.2.0)开始,现在有五个主要的守护程序或服务,它们集成在一起以提供Ceph服务的正常运行。这些是:

  1. 「ceph-mon」Monitor确实提供了其名称所暗示的功能——监视群集的运行状况。该监视器还告诉OSDreplication期间将数据放置在何处,并保留主CRUSH Map

  2. 「ceph-osd」OSDCeph的基础数据存储单元,它利用XFS文件系统和物理磁盘来存储从客户端提供给它的块数据。

  3. 「ceph-mds」MDS守护程序提供了将Ceph块数据转换为存储文件的POSIX兼容挂载点的功能,就像您使用传统文件系统一样。

  4. 「ceph-mgr」MGR守护程序显示有关群集状态的监视和管理信息。

  5. 「ceph-rgw」RGW守护程序是一个HTTP API守护程序,对象存储网关实际上是调用libradosAPI来实现数据的存储和读取。而该网关同时提供了兼容AWS S3OpenStack Swift的对象存储访问接口(API)。

从术语的角度来看,Ceph需要了解一些重要的知识。

Ceph基于CRUSH算法构建, 并支持多种访问方法(文件,块,对象)。CRUSH算法确定对象在OSD上的位置,并且可以将这些相同的块拉出以进行访问请求。

Ceph利用了可靠,自治,分布式的对象存储(或RADOS),该对象存储由自我修复,自我管理的存储节点组成。前面讨论的OSD守护程序是RADOS群集的一部分。

放置组(PG)的全称是placement group,是用于放置object的一个载体,所以群集中PG的数量决定了它的大小。pg的创建是在创建ceph存储池的时候指定的,同时跟指定的副本数也有关系,比如是3副本的则会有3个相同的pg存在于3个不同的osd上,pg其实在osd的存在形式就是一个目录。PG可以由管理员设置,新版本中也可以根据集群使用情况自动缩放。

RBDRADOS Block Device的简称,RBD块存储是最稳定且最常用的存储类型。RBD块设备类似磁盘可以被挂载。RBD块设备具有快照、多副本、克隆和一致性等特性,数据以条带化的方式存储在Ceph集群的多个OSD中。可以在Ceph中用于创建用于虚拟化的镜像块设备,例如KVMXen。通过利用与RADOS兼容的API libradosVM的访问不是通过iSCSINFS,而是通过存储API来实现的。

使用场景

正如我们已经描述的那样,Ceph是一个非常灵活和一致的存储解决方案。对Ceph存储对象的访问可以通过多种方式来完成,因此Ceph具有其他类似产品所缺乏的大量生产用例。

可以将Ceph部署为S3/Swift对象存储的替代品。通过它的RADOS网关,可以使用http GET请求以及大量可用的Amazon S3 API工具箱访问存储在Ceph中的对象。

也可以通过librados APIiSCSI/NFS在包括VMWare和其他专有虚拟化平台在内的虚拟化环境中直接使用Ceph

可以部署CephFS为需要访问大型文件系统的操作系统提供POSIX兼容的挂载点。

根据以上的这些场景,我们可以利用单个存储平台来满足各种计算和存储需求。

「潜在的部署方案」

常用的Ceph部署工具主要有:ceph-deployceph-ansible,基于kubernetnsRook以及新版本基于容器的kubeadm等。当然工具不仅仅是这些。每一种部署方案都有大量的生产实践。以下简单介绍以下这几种常用的部署方式:

「Ceph-deply」:该工具可用于简单、快速地部署 Ceph 集群,而无需涉及繁杂的手动配置。它在管理节点上通过 ssh 获取其它 Ceph 节点的访问权、通过 sudo 获取其上的管理权限、通过底层 Python 脚本自动化各节点上的 Ceph 安装进程。它简单到可以运行在工作站上,不需要服务器、数据库或任何其它的自动化工具。使用ceph-deploy安装和拆除集群非常简单。然而它不是通用部署工具,是专为想快速安装、运行 Ceph 的人们设计的专用工具,这样的集群只包含必要的的初始配置选项,就没必要安装像 ChefPuppetJuju 这样的部署工具。

「Ceph-ansible」:用于部署Ceph分布式系统的ansible playbookceph-ansible是安装和管理完整ceph集群的最灵活的方法,当前大量的生产环境都会使用该安装方式。

「Rook」Rook 是一个编排器,能够支持包括 Ceph 在内的多种存储方案。Rook 简化了 CephKubernetes 集群中的部署过程。Rook 是一个可以提供 Ceph 集群管理能力的 OperatorRook 使用 CRD 一个控制器来对 Ceph 之类的资源进行部署和管理。

「Cephadm」:较新的集群自动化部署工具,支持通过图形界面或者命令行界面添加节点,目前不建议用于生产环境。cephadm的目标是提供一个功能齐全、健壮且维护良好的安装和管理层,可供不在Kubernetes中运行Ceph的任何环境使用。Cephadm通过SSHmanager守护进程连接到主机来部署和管理Ceph集群,以添加、删除或更新Ceph守护进程容器。它不依赖于外部配置或编排工具,如Ansible

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值