存储设备发展史
企业中使用存储按照其功能,使用场景,一直在持续发展和迭代,大体上可以分为四个阶段:
DAS:Direct Attached Storage,即直连存储,第一代存储系统,通过SCSI总线扩展至一个外部的存储,磁带整列,作为服务器扩展的一部分;
NAS:Network Attached Storage,即网络附加存储,通过网络协议如NFS远程获取后端文件服务器共享的存储空间,将文件存储单独分离出来;
SAN:Storage Area Network,即存储区域网络,分为IP-SAN和FC-SAN,即通过TCP/IP协议和FC(Fiber Channel)光纤协议连接到存储服务器;
Object Storage:即对象存储,随着大数据的发展,越来越多的图片,视频,音频静态文件存储需求,动仄PB以上的存储空间,需无限扩展。
存储的发展,根据不同的阶段诞生了不同的存储解决方案,每一种存储都有它当时的历史诞生的环境以及应用场景,解决的问题和优缺点。
存储的区别
DAS 直连存储服务器使用 SCSI 或 FC 协议连接到存储阵列、通过 SCSI 总线和 FC 光纤协议类型进行数据传输;例如一块有空间大小的裸磁盘:/dev/sdb。DAS存储虽然组网简单、成本低廉但是可扩展性有限、无法多主机实现共享、目前已经很少使用了。
NAS网络存储服务器使用TCP网络协议连接至文件共享存储、常见的有NFS、CIFS协议等;通过网络的方式映射存储中的一个目录到目标主机,如/data。NAS网络存储使用简单,通过IP协议实现互相访问,多台主机可以同时共享同一个存储。但是NAS网络存储的性能有限,可靠性不是很高。
SAN存储区域网络服务器使用一个存储区域网络IP或FC连接到存储阵列、常见的SAN协议类型有IP-SAN和FC-SAN。SAN存储区域网络的性能非常好、可扩展性强;但是成本特别高、尤其是FC存储网络:因为需要用到HBA卡、FC交换机和支持FC接口的存储。
Object Storage对象存储通过网络使用API访问一个无限扩展的分布式存储系统、兼容于S3风格、原生PUT/GET等协议类型。表现形式就是可以无限使用存储空间,通过PUT/GET无限上传和下载。可扩展性极强、使用简单,但是只使用于静态不可编辑文件,无法为服务器提供块级别存储。
综上、企业中不同场景使用的存储,使用表现形式无非是这三种:磁盘(块存储设备),挂载至目录像本地文件一样使用(文件共享存储),通过API向存储系统中上传PUT和下载GET文件(对象存储)
专业的传统设备:EMC,NetAPP,IBM
Ceph的介绍
1、Ceph是一个对象式存储系统,它把每一个待管理的数量流(例如一个文件切分为一到多个固定大小的对象数据)
,并以其为原子单元完成数据存取
2、对象数据的底层存储服务是由多个主机(host)组成的存储集群,该集群也被称之为RADOS存储集群,即可靠、自动化
分布式对象存储系统
3、librados是RADOS存储集群的API,它支持C、C++、Java、Python,Ruby和PHP等编程语言
RadosGW、RBD和CephFS都是RADOS存储服务的客户端,它们把RADOS的存储服务接口(librados)分别从不同的角度做了进一步抽象,因而各自适用于不同的应用场景
Ceph核心组件介绍
Ceph核心组件介绍
1、mon:监视器,维护整个集群的元数据
2、OSD:也就是负责响应客户端请求返回具体数据的进程,一个Ceph集群一般都有很多个OSD,每个osd代表一个磁盘
3、mds:是CephFS服务依赖的元数据服务
4、Object:Ceph 最底层的存储单元是 Object 对象,每个 Object 包含元数据和原始数据。
5、PG:是一个逻辑的概念,一个 PG 包含多个 OSD。引入 PG 这一层其实是为了更好的分配数据和定位数据。
6、CephFS :是 Ceph 对外提供的文件系统服务。
7、RGW:是 Ceph 对外提供的对象存储服务,接口与 S3 和 Swift 兼容
8、RBD :是 Ceph 对外提供的块设备服务。
9、CRUSH 是 Ceph 使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方
10、RADOS :是 Ceph 集群的精华,用户实现数据分配、Failover 等集群操作
Ceph的特点
高性能
- 摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,并行度高。
- 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
- 能够支持上千个存储节点的规模,支持 TB 到 PB 级的数据。
高可用性
- 副本数可以灵活控制。
- 支持故障域分隔,数据强一致性。
- 多种故障场景自动进行修复自愈。
- 没有单点故障,自动管理。
高可扩展性
- 去中心化。
- 扩展灵活。
- 随着节点增加而线性增长
特性丰富
- 支持三种存储接口:块存储、文件存储、对象存储。
- 支持自定义接口,支持多种语言驱动