Ceph是一个统一的分布式存储系统,最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),随后贡献给开源社区。其设计初衷是提供较好的性能、可靠性和可扩展性。在经过多年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
1.fastDFS的角色
trackerserver:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的storageserver和group,每个storage在启动后会连接Tracker,告知自己所属group等信息,并保持周期性心跳,storageserver:存储服务器,主要提供容量和备份服务;以group为单位,每个group内可以包含多台storageserver,数据互为备份,存储容量空间以group内容量最小的storage为准;建议group内的storageserver配置相同;以group为单位组织存储能够方便的进行应用隔离、负载均衡和副本数定制;缺点是group的容量受单机存储容量的限制,同时group内机器坏掉,数据恢复只能依赖group内其他机器重新同步。client:客户端
2.fastDFS多个group之间的存储方式
Roundrobin,所有group轮询使用Specifiedgroup,指定某个确定的groupLoadbalance,剩余存储空间较多的group优先
3.fastDFS的同步机制
由于storageserver上配置了所有的trackerserver,storageserver和trackerserver之间的通信是由storageserver主动发起的,storageserver为每个trackerserver启动一个线程进行通信;在通信过程中,若发现该trackerserver返回的本组storageserver列表比本机记录少,就会将该trackerserver上没有的storageserver同步给该tracker,这样的机制使得tracker之间是对等关系,数据保持一致。
4.fastDFS新增storage服务器数据同步
若新增storageserver或者其状态发生变化,trackerserver都会将storageserver列表同步给该组内所有storageserver;以新增storageserver为例,因为新加入的storageserver会主动连接trackerserver,trackerserver发现有新的storageserver加入,就会将该组内所有的storageserver返回给新加入的storageserver,并重新将该组的storageserver列表返回给该组内的其他storageserver。
5.ceph有哪几种接口
Object:有原生的API,而且也兼容Swift和S3的API。Block:支持精简配置、快照、克隆。File:Posix接口,支持快照。
6.ceph特性
集群可靠性
尽可能的保障数据不会丢失。数据写入过程中不会因为意外情况出现而造成数据丢失。降低不可控物理因素造成的数据丢失。例如死机、断电等不可控物理因素。
集群可扩展性
系统规模可扩展。存储容量可扩展。随着系统节点数增加的聚合数据访问带宽的线性扩展。
数据安全性
保障不可控物理因素(死机、断电等)自然因素的生产、数据不会丢失,并且支持数据自动回复,自动平衡等。保证系统规模扩大以后,运维难度保持在一个相对较低的水平。接口统一性同时支持三种存储:块存储、对象存储和文件存储。支持市面上所有流行的存储类型。
去除所有的中心节点,防止单点故障
7.ceph系统组件
RADOS(ReliableAutonomicObjectStore,可靠、自动、分布式对象存储)
OSD(对象存储设备)MON(Cephmonitor)
RBD(RADOS块设备、Ceph块设备)
RGW(RADOS网关、Ceph对象网关)
MDS(Ceph元数据服务器)
CephFS(Ceph文件系统)
8.CRUSH算法
CRUSH算法通过每个设备的权重来计算数据对象的分布。对象分布是由clustermap和datadistributionpolicy决定的。clustermap描述了可用存储资源和层级结构(比如有多少个机架,每个机架上有多少个服务器,每个服务器上有多少个磁盘)。datadistributionpolicy由placementrules组成。rule决定了每个数据对象有多少个副本,这些副本存储的限制条件(比如3个副本放在不同的机架中)。
9.CRUSH算法优点
任何组件都可以独立计算出每个object所在的位置(去中心化)。
只需要很少的元数据(clustermap),只要当删除添加设备时,这些元数据才需要改变。