文章目录
ceph分布式存储
存储分类
本地存储本地的文件系统,不能再网络上用
ext3 ext4 xfs ntfs
网络存储–网络文件系统,共享的都是文件系统
nfs 网络文件系统
hdfs 分布式网络文件系统
glusterfs 分布式网络文件系统
共享的是裸设备
块数据cinder ceph(快存储 对象存储 网络文件系统-分布式)
SAN(存储区域网)
分布式集群
client
|
namenode
__________|________
| | |
datanode datanode datanode
分布式存储分类
Hadoop HDFS(大数据分布式文件系统)
HDFS是一个分布式文件系统,是hadoop生态系统的一个重要组成部分,是hadoop中的存储组件,HDFS是一个高度容错性的系统,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
优点:
- 高容错性
数据自动保存多个副本
副本丢失后自动恢复 - 良好的数据访问机制
一次写入,多次读取,保证数据一致性 - 适合大数据文件的存储
TB、甚至PB级数据
扩展能力很强
缺点:
- 低延迟数据访问 难以应付毫秒级一下应用
- 海量小文件存取 占用NameNode大量内存
- 一个文件只能有一个写入者 仅支持append
OpenStack的对象存储Swift
OpenStack是Openstack开源云计算项目的子项目之一,Swift的目的是使用普通硬件来构建冗余、可扩展的分布式对象存储集群
主要特点:
- 各个存储的节点完全对等,是对称的系统架构
- 开发者通过一个RESTful HTTP API与对象存储系统相互作用
- 无单电故障:Swift的元数据存储是完全均匀随机分布的,并且与对象文件存储一样,元数据也会存储多分
- 在不影响性能的情况下,集群通过增加外部节点进行扩展
- 无限的可扩展性:这里的扩展性氛围两方面,一是数据存储容量无限可扩展,二是Swift性能科先行提升,扩容只需简单地新增机器,系统会自动完成数据迁移等工作
- 极高的数据持久性
Swift可以用一下用途:
图片、文档存储
长期保存的日志文件
存储媒体库
视频监控文件存档
Swift适合用来存储大量的、长期的、需要备份的对象
公有云对象存储
公有云大都只有对象存储
OSS提供标准、低频访问、归档三种存储类型,其中比奥春存储类型提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据,存储弹夹低于标准类型;归档存储类型适合需要长期保持的归档数据,在三种存储类型中弹夹最低
应用场景:
- 图片和影视片等应用的海量存储
- 云端数据处理
- 网页活移动应用的静态和动态资源分离
GlusterFS
GlusterFS是一种全对称的开源分布式文件系统,全对称是指采用弹性哈希算法,没有中心节点,所有节点全部平等
glusgerfs存储卷的类型
- 基本类型:条带,复制,哈希
- 复合卷,复合卷就是分布式复制,分布式条带,分布式条带复制卷,像分布式复制,分布式条带这两种是比较常用的
各种卷的整理
分布式卷: 存储时将文件随机存储到各台glusgerfs机器上。
- 优点:存储数据时读取速度快
- 缺点:一个birck坏掉,文件就会丢失
复制卷:存储数据时,所有文件分别存储到每台glusgerfs机器上
- 优点:对文件进行的多次备份,一个brick坏掉,文件不会丢失
- 缺点:占用资源
条带卷:存数据时,一个文件分开存到每台glusgerfs机器上
- 优点:对大文件,读写速度快
- 缺点:同分布式卷
GPFS和HDFS的区别
GPFS和Hadoop的HDFS系统对比,他设计用于商用硬件上存储类似或更大的数据
HDFS将文件分割成快,并将它们存储在不同的文件系统节点内
HDFS对磁盘可靠性的依赖不高,他可以在不同的节点内存储块的副本。相较而言,GPFS支持故障节点恢复,但他是一个更严重的时间,可能包括数据丢失的高风险
GPFS支持完整的Posix文件系统语义,而HFPS并不支持完整的
GPFS跨文件系统分布他的目录索引和其他元数据,Hadoop将它们保留在主要和次要Namenode中,大型服务器必须在RAM内存储所有的索引信息
GPFS将文件分割成小块,Hadoop HDFS喜欢64MB甚至更多块,因为这降低了Namenode的存储需求。小块文件会快速填充文件系统的索引,因此限制了文件系统的大小
Ceph
cephg的优势
- 搞扩展性:使用普通x86服务器,支持10~1000台服务器
- 高可靠性:没有单电故障,多数据副本,自动管理,自动修复
- 高性能:数据分布均衡
- 可用于对象存储,块设备存储和文件存储
ceph架构
基础存储系统
rados:基础的存储系统RADOS,即可靠的、自动化的。分布式的对象存储。所有存储在ceph系统中的用户数据事实上最终都是由这一层来存储的。
librados:这一层的功能是对RADOS进行抽象和封装,并向上层提供API,一遍直接基于RADOS进行应用开发
高层应用接口
radosgw:对象网关接口
rdb:块存储
cephfs:文件系统存储
其左右实在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口
ceph基本组件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOCqPgnT-1630498760903)(./1630493574165.png)]
Osd
用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他osd守护进程发送心跳,向Mon提供一些监控信息
当ceph存储集群设定数据有两个副本时,则至少需要两个OSD守护进程即两个OSD节点,集群才能达到active+clean状态
MSD
为ceph文件系统提供元数据计算、缓存与同步。在ceph中,元数据也是存储在osd节点中的,mds类似于元数据的代理缓存服务器。MDS进程并不是必须的进程,只有需要使用CEPHFS,才需要配置MDS节点。
Monitor
监控整个集群的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性。ClusterMAP描述了对象块存储的物理位置,以及一个将设备距和到物理位置的桶列表
Manager
用于手机ceph集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。对外提供ceph dashboard和restful api。Manager组件开启高可用时,至少2个
ceph结构包含两个部分
ceph client:访问ceph底层服务或组件,对外提供各种接口。比如L对象存储接口、块存储接口、文件及存储接口
ceph node:ceph底层服务提供短。也就是ceph存储集群
ceph存储种类及应用场景
块存储
典型设备:磁盘阵列,硬盘
优点:
用过Raid与LVM等手段,对数据提供了保护
多块链家的硬盘组合起来,提高容量
多块磁盘组合出来的逻辑盘,提升读写效率
缺点:
采用SAN架构组网时,光钎交换机,造价成本高
主机之间无法共享数据
使用场景:
Docker容器、虚拟机磁盘存储分配。
日志存储
文件存储
文件存储
典型设备:FTP/NFS服务器
为了克服块存储文件无法共享的问题,所以有了文件存储
在服务器上架设FTP与NFS服务,就是文件存储
优点:
造价低
方便文件共享
缺点:
读写速率低
传输速率慢
使用场景:
日志存储
有目录结构的文件存储
对象存储
对象存储是将元数据独立了出来,控制节点叫元数据服务器,里面主要负责存储对象的属性,而其他负责存储的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪些OSD,假设反馈文件A存储在B/C/D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。
优点:
具备块存储的读写高速
具备文件存储的共享等特性
使用场景:
图片存储
视频存储
ceph工作原理
无论使用哪种存储方式,存储的数据都会被切分成对象。对象大小可以由管理员调整。每个对象都会有一个唯一的OID,由ino与ono生成,ino为文件的file id,ono是分片的编号。oid的好处是可以唯一标识没一个不同的对象,并且存储了对象与文件的从属关系。
但是对象并不会直接存储进OSD中,因为对象的size很小,在一个大规模的集群中可能有几百到几千万个对象,这么多对象光是遍历寻址速度都是很满的。并且如果将对象直接通过哈希算法映射到osd上,当这个osd损坏时,对象无法自动迁移到其他osd上面。为了解决这个问题,ceph映入了归置组的概念,即PG
PG是一个逻辑概念。他在数据寻址时类似于数据库中的索引;每个对象都会固定映射进一个PG中,当我们寻找一个对象时,只需要先找到对象所属的PG,然后遍历这个PG就可以了。在数据迁移时,也是以PG作为基本单位进行迁移。
对象如何映射进PG?首先使用静态hash函数对OID做hash取出特征码,用特征码与PG数量取模,得到的序号则是PGID。
最后PG会根据管理员设置的副本数量进行复制,通过crush算法存储到不同的OSD节点上,第一个osd节点即为主节点,其余均为从节点
ceph名词介绍
- Monitor 监控整个集群的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性
- OSD 负责响应客户端请求返回具体数据的进程。一个ceph集群一般都有很多歌OSD
- MDS 是cephFS服务依赖的元数据服务
- Object ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据
- PG 一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据
- RADOS 是集群的精华,用户实现数据分配Failover等集群操作
- libradio 是rados提供库
- CRUSH 是ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方
- RBD 是ceph对外提供块设备服务
- RGW 是ceph对外提供的对象存储服务
- cpehFS 是ceph对外提供的文件系统服务
ceph的集群部署
ceph的存储方式
radosgw:ceph对象网关
ceph对象存储使用ceph对象网关守护进程,他是用于与ceph存储集群进行交互的HTTP服务器。由于他提供的OpenStack Swift和Amazon S3兼容的接口,因此ceph对象网关具有其自己的用户管理。ceph对象网关可以将数据存储在用于存储来自ceph文件系统客户端或ceph块设备客户端的数据的同一ceph存储群集中。S3和Swift API共享一个公共的名称空间,因此可以使用一个API编写数据,使用另一个API检索数据
ceph文件系统
ceph文件系统是个POSIX兼容的文件系统,使用ceph存储集群来存储数据。ceph文件系统与ceph块设备、同事提供S3和Swift API的ceph对象存储、或者librados一样,都使用相同的ceph存储集群系统
ceph块存储
块是一个字节序列。基于块的存储接口是最常见的存储数据方法,他们基于旋转介质,如硬盘。无处不在的块设备接口使虚拟块设备成为与ceph这样的海量存储系统交互的理想之选。