存储基本知识梳理
基础概念
-
什么是分布式存储?
首先了解一下存储的发展历史。
- DAS:Direct Access Storage,直接连接存储,将存储设备通过SCSI接口或光纤通道连接到一台计算机上。特点:直接和存储器连接,扩展性,灵活性比较差。
- SAN、NAS等。NAS:network attached storage,SAN:storage area network。特点:设备类型丰富,可以通过外部IP/FC网络互连,具备一定的可扩展性;但是受控制器能力限制,扩展能力有限,PB级;设备到生命周期更换,需要进行数据迁移,耗时耗力。
- 分布式存储。结构为:分布式软件+标准服务器。特点:高扩展性,基于标准硬件和分布式架构,千节点/EB级扩展;易运维,块、对象、文件等多种类型存储统一管理。
分布式指明了一种独特的系统架构类型,这种系统架构是由一组通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成。
所谓分布式存储,就是存储设备分布在不同的地理位置,数据就近存储,将数据分散在多个存储节点上,各个节点通过网络相连,对这些节点的资源进行统一的管理,从而大大缓解带宽压力,同时也解决了传统的本地文件系统在文件大小、文件数量等方面的限制。
几个问题:
- 客户端(用户侧)是直接和某一个节点交互操作(操作包括增删改查),还是和某些节点交互操作?如果是某些,则如何保证数据的准确可靠:数据多重写入更改等是否会影响到数据的稳定可靠性?
- 客户端读取数据的时候,是从哪个节点上读取数据的?
- 数据存储备份是放到哪个节点上的?
-
Ceph是什么?
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs)。对于三种基本存储服务的介绍:
- 对象存储(Object Storage),既可以通过使用Ceph的库,利用C, C++, Java, Python, PHP代码,也可以通过Restful网关以对象的形式访问或存储数据,兼容亚马逊的S3和OpenStack的Swift。
- 块存储(Block Storage),作为块设备像硬盘一样直接挂载。
- 文件系统(File System) ,如同网络文件系统一样挂载,兼容POSIX接口。
Ceph的结构,对象存储由LIBRADOS和RADOSGW提供,块存储由RBD提供,文件系统由CEPH FS提供,而RADOSGW, RBD, CEPH FS均需要调用LIBRADOS的接口,而最终都是以对象的形式存储于RADOS里。
Ceph集群的节点有三种角色:
- Monitor,监控集群的健康状况,向客户端发送最新的CRUSH map(含有当前网络的拓扑结构)。
- OSD,OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。维护节点上的对象,响应客户端请求,与其他OSD节点同步。
- MDS,MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。提供文件的Metadata,如果不使用CephFS可以不安装。
Ceph是分布式的存储,它将文件分割后均匀随机地分散在各个节点上,Ceph采用了CRUSH算法来确定对象的存储位置,只要有当前集群的拓扑结构,Ceph客户端就能直接计算出文件的存储位置,直接跟OSD节点通信获取文件而不需要询问中心节点获得文件位置,这样就避免了单点风险。
-
RGW是什么?RGW在Ceph架构中处于什么位置,其作用是什么?
RGW是Ceph中提供对象存储的接口,兼容了S3和swift接口。全程为RadosGateWay,向下可以调用底层librados库文件,操作底层的存储数据;向上提供了与 OpenStack Swift 和 Amazon S3 兼容的接口。
名词解释
- RADOS(Reliable Autonomic Distributed Object Store, RADOS)RADOS是Ceph 存储集群的基础。Ceph 中的一切都以对象的形式存储,而RADOS 就负责存储这些对象,而不考虑它们的数据类型。RADOS 层确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和恢复。还包括数据在集群节点间的recovery。
- PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
- s3:Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。S3介绍
- OSD,OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。
- RESTful:REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。REST介绍