Ceph
Ceph是一个开源的、统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。其中“统一”是说Ceph可以一套存储系统同时提供块设备存储、文件系统存储和对象存储三种存储功能。
Ceph项目最早起源于加州大学Santa Cruz分校的Sage Weil的博士论文所设计开发的新一代自由软件分布式文件系统,其设计目标是良好的可扩展性(PB级别以上)、高性能及高可靠性,并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。
Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。
官网:http://docs.ceph.org.cn/start/intro/
ceph支持的3种存储方式
1、块存储
首先,什么是块设备?块设备是i/o设备中的一类,是将信息存储在固定大小的块中,每个块都有自己的地址,还可以在块设备的任意位置读取一定长度的数据。例如,硬盘就是块设备。
当给计算机连接块设备(硬盘)后,系统检测的有新的块设备,该类型块设备的驱动程序就在/dev/下创建个对应的块设备设备文件,用户就可以通过设备文件使用该块设备了。
它们怎么有的叫 sda?有的叫 sdb?有的叫 hda?
以sd开头的块设备文件对应的是scsi接口的硬盘,而以hd开头的块设备文件对应的是IDE接口的硬盘。而sda和sdb的区别呢?当系统检测到多个scsi硬盘时,会根据检测到的顺序对硬盘设备进行字母顺序的命名。注:系统按检测顺序命名硬盘会导致了盘符漂移的问题。
怎么还有的叫 rbd1 和 rbd2 呢?
rbd就是由Ceph集群提供出来的块设备。可以这样理解,sda和hda都是通过数据线连接到了真实的硬盘,而rbd是通过网络连接到了Ceph集群中的一块存储区域,往rbd设备文件写入数据,最终会被存储到Ceph集群的这块区域中。
总结一下,块设备可理解成一块硬盘,用户可以直接使用不含文件系统的块设备(裸设备),也可以将其格式化成特定的文件系统,由文件系统来组织管理存储空间,从而为用户提供丰富而友好的数据操作支持。
综上所述,块存储,即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的后端存储。
2、文件系统存储
Ceph文件系统(CEPH FS)是一个POSIX兼容的文件系统,可以将ceph集群看做一个共享文件系统挂载到本地,使用Ceph的存储集群来存储其数据,同时支持用户空间文件系统FUSE。它可以像 NFS 或者 SAMBA 那样,提供共享文件夹,客户端通过挂载目录的方式使用 Ceph 提供的存储。
在CEPH FS中,与对象存储与块存储最大的不同就是在集群中增加了文件系统元数据服务节点MDS(Ceph Metadata Server)。MDS也支持多台机器分布式的部署,以实现系统的高可用性。文件系统客户端需要安装对应的Linux内核模块Ceph FS Kernel Object或者Ceph FS FUSE组件。
还记得上面说的块设备上的文件系统吗,用户可以在块设备上创建xfs文件系统,也可以创建ext4等其他文件系统。如下图所示,Ceph集群实现了自己的文件系统来组织管理集群的存储空间,用户可以直接将Ceph集群的文件系统挂载到用户机上使用。