您好,我是码农飞哥,本篇文章是Ceph实战专栏的第一篇文章,本文主要是对Ceph做一个简单的介绍。让大家知道它是什么?能做什么?有啥不同点。
Ceph是什么&能做什么
Ceph是一个分布式文件存储系统,其统一了三种存储方式:块设备存储,CephFS 文件系统,对象存储。其分布式体现在其可以动态的扩展,其性能优秀,可扩展性好。说完了Ceph的概念,接下来我们来说说Ceph能做什么?我们可以把文件想象成粮食,那么Ceph就是一个粮仓,这个粮仓可以通过三种不同的方式来存储粮食。这个粮仓可以容纳很多很多的仓库,存放很多很多的粮食。
Ceph有哪些特点
Ceph的特点很多,主要有如下几个方面的特点:
- 其摒弃传统的集中式存储元数据寻址的方式,采用CRUSH算法,数据分布均衡,没有单点故障。举个栗子:就像上面的粮仓和粮食的说明,现在张三来存100斤粮食,管理员将其存放在A仓库的B区,然后在小本本记下这个地址,这里的小本本就是元数据。当张三来取粮食的时候,管理员拿出小本本查看粮食的存放位置,然后找到粮食。是不是挺好。但是大家想想,如果这个小本本丢了,会怎么样? 是不是张三的粮食就找不到了。这样就存在一个重大的隐患。这个隐患的学名叫做单点故障,单点故障的意思是,某一个节点出现故障将会导致集群整个不可用。当然,我们也可以通过用多个小本本同时记录,规避一台元数据服务宕机导致的单点故障。但是,这种方式无疑增加了元数据的维护成本。而Ceph则完全摒弃了元数据寻址的方式,直接通过CRUSH算法的方式来计算文件的位置,是数据可以均衡分布同时也避免了单点故障的问题。
- 考虑了容灾域的隔离,能够实现各类负载副本放置规则。同样的还是以粮仓为例子。当一个仓库着火了,我们可以通过隔断门将其与其他正常的仓库隔离。避免影响到其他正常的仓库。
- 能够支持上千个存储节点的规模,支持TB和PB级别的数据。这句话的意思就更好理解了,一句话,就是Ceph的能存储的数据特别多,规模也很大。
- 扩展灵活,就是说支持动态的增加存储节点。换言之就是可以客户端无感知的情况下增加存储节点。不影响现有的业务。
- 副本数可以灵活控制,默认情况下Ceph的副本数是3个,我们可以在配置文件中更改副本的数量。
Ceph有何不同点
前面简单的介绍了Ceph的概念和特点,下面我们接着来看看Ceph与其他的分布式文件存储系统的区别,这里比较的fastDFS。
上图展示了Ceph与FastDFS的一些区别,概括来说主要是如下几个方面的区别:
1. 数据存储方式不同:FastDFS只能以文件的方式存储到文件服务器中。而Ceph可以通过块设备,文件系统或者对象存储三种方式来存储文件,存储的类型大有不同。
2. 存储逻辑不同:FastDFS是按照组来存储文件,同一个组内所有的storage server可以相互通信,同一个组内各个storage server地位相等,存储的文件相同,不同组的storage server不能相互通信。Ceph则没有组的概念,同一个集群内所有的OSDs均可以相互通信,源OSDs与副本OSD的数据完全一样。
3. 文件名(FID)生成方式不同,当我们上传一个文件到FastDFS上时,FastDFS会生成FID,生成的规则是:
由源头storage server ip、创建时的时间戳、大小、文件的校验码和一个随机数进行hash计算后生成;
最后基于base64进行文本编码,转换为可打印字符;
groupID/MID/H1ID/H2ID/file_name
groupID:组编号
MID:存储路径(存储设备)编号
H1ID/H2ID:目录分层
file_name:文件名,不同于用户上传时使用文件名,而是由服务器生成hash文件名;
服务器IP、文件创建时的时间戳、文件大小、文件名和扩展名;
而Ceph不会帮我们生成唯一的文件名。
总结
本文首先介绍了Ceph的基本概念以及特点,最后将FastDFS和Ceph做了一个比较。希望读者朋友们通过本文可以对Ceph做一个基本的了解。