10 2022 档案
摘要:MGR是一个高度模块化的组件,很多功能都可以通过启用或禁用模块来实现;其中Dashboard这个模块也被MGR所管理,默认情况下该模块并没有被启用;dashboard从字面意思就能知道该模块是提供一个面板;该面板能够显示ceph集群相关状态数据,比如有集群的健康状态、osd有多少个、存储池有多少个,mds、mgr等等相关组件的状态信息;
阅读全文
摘要:对象存储系统(Object Storage System,简称OSS);对象存储(Object Storage) 是无层次结构的数据存储方法,通常用于云计算环境中;不同于其他数据存储方法,基于对象的存储不使用目录树;数据作为单独的对象进行存储;数据并不放置在目录层次结构中,而是存在于平面地址空间内的同一级别;应用通过唯一地址来识别每个单独的数据对象;每个对象可包含有助于检索的元数据;专为使用API在应用级别(而非用户级别)进行访问而设计;
阅读全文
摘要:所谓动态子树分区就是根据文件系统的负载能力动态调整对应子树;cephfs就是使用这种方式实现多活mds;在ceph上多主MDS模式是指CephFS将整个文件系统的名称空间切分为多个子树并配置到多个MDS之上,不过,读写操作的负载均衡策略分别是子树切分和目录副本;将写操作负载较重的目录切分成多个子目录以分散负载;为读操作负载较重的目录创建多个副本以均衡负载;子树分区和迁移的决策是一个同步过程,各MDS每10秒钟做一次独立的迁移决策,每个MDS并不存在一个一致的名称空间视图,且MDS集群也不存在一个全局调度器负责统一的调度决策;各MDS彼此间通过交换心跳信息(HeartBeat,简称HB)及负载状态来确定是否要进行迁移、如何分区名称空间,以及是否需要目录切分为子树等;管理员也可以配置CephFS负载的计算方式从而影响MDS的负载决策,目前,CephFS支持基于CPU负载、文件系统负载及混合此两种的决策机制;
阅读全文
摘要:CephFS依赖于专用的MDS(MetaData Server)组件管理元数据信息并向客户端输出一个倒置的树状层级结构;将元数据缓存于MDS的内存中, 把元数据的更新日志于流式化后存储在RADOS集群上, 将层级结构中的的每个名称空间对应地实例化成一个目录且存储为一个专有的RADOS对象;
阅读全文
摘要:我们知道Linux主机是由内核空间和用户空间组成;对于Linux主机来说,要想访问底层的硬盘设备,通常都是基于内核的驱动将对应磁盘设备识别成一块存储空间,然后通过用户空间程序执行内核空间的函数来实现操作磁盘;即操作磁盘的操作,最终只有内核有权限;这也意味着,如果一台Linux主机想要使用ceph之上通过RBD抽象出来的磁盘,对应内核空间必须得有一个模块(rbd.ko)能够驱动RBD抽象的硬盘;即Linux内核里的这个模块就是扮演着RBD的客户端;
阅读全文
摘要:Ceph使用cephx协议对客户端进行身份认证,其过程大致是这样的;每个mon都可以对客户端进行身份验证并分发密钥;这意味着认证靠mon节点完成,不会存在单点和性能瓶颈;mon会返回用于身份验证的数据结构,其中包含获取Ceph服务时用到的session key;所谓session key就是客户端用来向mon请求所需服务的凭证;session key是通过客户端的密钥进行加密传输;当mon收到客户端认证请求后,首先生成session key,然后用客户端的密钥加密session key,然后发送给客户端,客户端用自己的密钥将其解密,拿到session key;客户端有了session key以后,它就可以用这个session key向mon请求服务,mon收到客户端的请求(携带session key),此时mon会向客户端提供一个ticket(入场卷,票据)然后用session key加密后发送给客户端;随后客户端用session key解密,拿着这个凭证到对应osd完成认证;
阅读全文
摘要:erasure-code-profile参数是用于指定纠删码池配置文件;未指定要使用的纠删编码配置文件时,创建命令会为其自动创建一个,并在创建相关的CRUSH规则集时使用到它;默认配置文件自动定义k=2和m=1,这意味着Ceph将通过三个OSD扩展对象数据,并且可以丢失其中一个OSD而不会丢失数据,因此,在冗余效果上,它相当于一个大小为2的副本池 ,不过,其存储空间有效利用率为2/3而非1/2。
阅读全文
摘要:什么是存储池呢?在ceph上,所谓存储池是ceph以“存储池(pool)”的方式,将RADOS存储集群提供的存储服务逻辑分割一个或多个存储区域;我们可以理解为数据对象的名称空间;实践中,管理员可以为特定应用程序存储不同类型数据的需求分别创建专用的存储池,例如rbd存储池、rgw存储池等,也可以为某个项目或某个用户创建专有的存储池;当然,如果我们在一个存储池里存储的数据过多,为了方便管理,存储池还可以进一步细分为一至多个名称空间(namespace);客户端(包括rbd和rgw等)存取数据时,需要事先指定存储池名称、用户名和密钥等信息完成认证,而后将一直维持与其指定的存储池的连接,于是也可以把存储池看作是客户端的IO接口;
阅读全文
摘要:ceph -s主要输出有三类信息,一类是集群相关信息,比如集群id,健康状态;第二类是服务类相关信息,比如集群运行了几个mon节点,几个mgr节点,几个mds,osd和rgw;这些服务都处于什么样的状态等等;我们把这些信息称为集群运行状况,它可以让我们一目了然的了解到集群现有运行状况;第三类信息是数据存储类的信息;比如有多少个存储池,和pg数量;usage用来展示集群使用容量和剩余容量以及总容量;这里需要注意一点,集群显示的总磁盘大小,它不等于可以存储这么多对象数据;因为每一个对象数据都多个副本,所以真正能够存储对象数据的量应该根据副本的数量来计算;默认情况下,我们创建的存储都是副本型存储池,副本数量是3个(其中一个主,两个从),即每一个对象数据都会存储三份,所以真正能够存储对象数据的空间只有总空间的三分之一;
阅读全文
摘要:我们知道RADOS集群是ceph底层存储集群,部署好RADOS集群以后,默认只有RBD(Rados Block Device)接口;但是该接口并不能使用;这是因为在使用rados存储集群存取对象数据时,都是通过存储池找到对应pg,然后pg找到对应的osd,由osd通过librados api接口将数据存储到对应的osd所对应的磁盘设备上;
阅读全文
摘要:ceph-deploy:该部署工具是ceph官方的部署工具,它只依赖SSH访问服务器,不需要额外的agent;它可以完全运行在自己的工作站上(比如admin host),不需要服务器,数据库类似的东西;该工具不是一个通用的部署工具,只针对ceph;相比ansible,puppet,功能相对单一;该工具可以推送配置文件,但它不处理客户端配置,以及客户端部署相关依赖等;
阅读全文
摘要:Ceph是一个对象式存储系统,所谓对象式存储是指它把每一个待管理的数据流(比如一个文件)切分成一到多个固定大小的对象数据,并以其为原子单元完成数据的存取;对象数据的底层存储服务由多个主机组成的存储集群;该集群被称之为RADOS(Reliable Automatic Distributed Object Store)集群;翻译成中文就是可靠的、自动化分布式对象存储系统;
阅读全文