行业资讯

帮助中心 >  产品文档 >  运维 >  运维篇-存储基本知识梳理

传统统一存储阵列主要有3模式:

  • DAS:

早期的直连存储,犹如我们现在用的台式机,笔记本,就是终端连一块硬盘,这个比较好理解。

  • FC-SAN/IP-SAN:

基于FC协议的专有数据存储网络,一般应用级企业级应用,后面因为使用光纤信号通道成本昂贵,又出现了基于iSCSI协议的IP-SAN,可以直接利用现有的现有的TCP/IP网络,无非额外采购光纤交换机。

  • NAS:

字面意思理解就是网络存储器,NAS本身能够支持多种协议如NFS、CIFS、FTP、HTTP等,一般应用于网盘、FTP服务器等,用于文件存储。

传统存储最核心的是raid技术原理,比较有典型的是RAID0 、RAID1、RAID5、RAID10。

  • RAID0:

      raid 0是一种Data Stripping数据分条技术,RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。


1.jpg

  • RAID1:

称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件。至少需要2块磁盘,常见与我们的X86服务器第一次安装操作系统时一般会选择两块硬盘做个RAID1。可靠性可以保障,但是空间利用率只有50%。

2.jpg

  • RAID5:

 属于分布式奇偶校验的独立磁盘结构,如下图它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其他的意思相同。RAID5的读出效率很高,写入效率一般,raid属于一种比较折中的方案,因为奇偶校验码存在于不同的磁盘上,所以可靠性可以保障。空间利用率一般为N-1/N ,(N代表磁盘块数)。

3.jpg

  • RAID10

  高可靠性与高效磁盘结构,这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速的目的。企业级高端存储阵列一般对数据库应用一般会采用RAID10.

当然了,传统统一存储阵列还有数据分层,SS缓存读写配置,快照技术、容灾远程复制技术等等,还有全闪存阵列,超融合技术等等不再细化展开,有兴趣可以自行网络脑补。

随着这几年的云计算的兴起,加上棱镜门事件的推波助澜,确实这几年传统统一存储阵列持续进入衰退期,从外资存储巨头EMC、IBM、HP、Netapp、HDS等败退中国,市场份额持续被国产品牌吞噬,以及各家出货量的报告中可以体现。

云化时代,那么我们就积极拥抱云存储吧。


分布式存储(SDS):


     得益于大数据的繁盛发展,分布式存储架构在近几年中得到了前所未有的关注,分布式简单的理解就是用一推廉价的服务器,完成单个计算机无法完成的任务。

  • 其最大的特点,就是支持横向扩展,不像传统统一存储阵列,扩展到一定规模,计算、带宽就会存在瓶颈。

  • 所谓人多力量大,分布式可以利用更多的机器,处理更多的数据,所以高性能也是分布式存储另外一个特点。

  • 另外分布式存储也有易运维的特点:块存储、对象存储、文件存储都可以统一管理。

  • 另外以分布式存储软硬件解耦,只是要标准服务器,不同厂家的服务器都可以接入,所以上线扩容很方便。

  • 同等存储容量下,一般分布式存储的成本相对也更加便宜(ROI),所有往往分布式存储更受老板们的欢迎。

   当下分布式存储实际应用中最大的问题是性能不是很稳定,尤其是磁盘损坏的,数据的同步往往需要大量的时候,而且有时会影响整体存储的性能,毕竟传统统一集中存储技术沉淀了十几年,内部做了大量的优化,不过后续笔者持续看到SDS。

   为了方便大家理解传统存储与分布式存储的区别,网上摘了一个图片,个人觉得这个比喻很形象生动,把传统存储比喻成汽车,数据比如成货物,分布式存储比如动车。


个人觉得区分分布式存储与传统存储最恰当的比喻,传统存储犹如绿皮火车,扩容犹如加车厢,但是动力就是头尾两个车头,存在瓶颈;分布式犹如现在的动车,扩容加车厢的同时,每个车厢其实都有动力(当年跟一个产品经理去跟客户交流时听来的,内心还是比较佩服这帮做产品的)。


分布式存储支持块存储、对象存储、文件存储。 块存储和文件存储是我们比较熟悉的两种主流的存储类型,通常来讲,所有磁盘阵列都是基于Block块的模式,块存储接口通常以QEMU Driver或者Kernel Module的方式存在。AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD。NAS产品基本都是文件级存储,通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS,但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。




对象存储(Object-basedStorage)则是一种新的网络存储架构,对象是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(Meta Data)的组合,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD,AWS S3是对象存储的一种通用标准协议。对象象存储采用扁平数据组织形式并通过基于http协议的RESTful接口来访问的分布式存储系统对象存储不支持随机读写操作,只能全读全写,其面向的是一次写入,多次读取的非结构化数据存储的需求场景。对象存储支持海量用户并发访问,并对外提供高扩展(Scalability)、高持久(Durability)和高可用(Availability)的分布式海量数据存储服务。


分布式存储的关键技术原理(一般统称为raid2.0技术):


  • 副本:

  多副本是指数据在系统中切片,而每一个数据的切片都有多个副本,分布在不同节点中。这种机制不仅提供数据的可靠性,还能改善性能。同时多副本能够支持更多并发访问,无论是多个应用并发访问还是单个访问,数据可以从最快响应的节点获得,因此系统会提供更好的性能响应。

  • 纠删码(EC):

  纠删码通过对数据分块后计算校验产生校验块,并与原始数据块共同存储,在部分数据块或校验块丢失的情况下,可以通过计算恢复原始数据,纠删码的特别之处在于容错率可设定。纠删码同样可以磁盘为单位或以节点为单位组建,实现全局冗余,这意味着数据分片是跨节点,并不限于一台节点(存储设备)以内。EC 相对 RAID 技术更加灵活,条带由 N个数据块和 M 个校验数据块组成,而且 M 和 N 是可以调整的。


副本与纠删码的优缺点:

  副本和纠删码之间并不存在谁占据绝对优势,而是两者在不同的场景有各自的优缺点。多数据副本在保障可靠性与性能的前提下,明显的弊端在于容量的损失;3副本实际可用的空间使用率只有1/3,而纠删码(Erasure Code)容错率可设定,空间利用率一般为N/M+N,明显优于副本,但是其代价是牺牲了性能,尤其是随机写入,特别是改写和重构(Rebuild)时产生的I/O惩罚较大,对应的集群网络流量比副本保护模式要大。


写惩罚可以这么理解:

2副本下,某个节点的 1 次数据写入,实际需要 2 个节点参与(写入 2 次),写惩罚为 2;EC设置 4/1 情况下,1 次数据写入,实际需要至少 2 个节点参与,其中读取 2 次(读取数据,读取校验),写入 2 次(写入数据,写入校验),写惩罚为 4 ;

重构对性能的影响可以这么理解:

2 副本下,1 个节点或者数据块故障,数据恢复需要从一个副本读取一次,然后写入一次进行恢复副本,影响 1 个节点的读取性能。EC设置 4/1 情况下,1 个节点或者数据块故障,数据恢复需要读取 3 个数据块和 1 个校验,通过运算后写入一次进行数据恢复,影响 4 个节点的读取性能。


另外从存储性能CPU资源开销看:

副本是基于数据完整复制,没有涉及额外的运算,对 CPU 开销较低。EC 由于读写都需要计算校验值,需要额外的 CPU 资源开销。 


多数据副本是分布式系统中成熟的冗余机制,已大量应用于生产业务,基本上行业主流的云厂家底层的云存储配置的是副本模式,而纠删码技术但实际产品中还缺乏大量应用,一般常应用于视频行业。



 CEPH 基础知识:

Ceph的核心组件包括Ceph OSD、CephMonitor和CephMDS。

  • Ceph OSD:

    它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。Ceph OSD的架构实现由物理磁盘驱动器、Linux文件系统和Ceph OSD服务组成,一般比较推荐使用XFS。伴随OSD的还有一个概念叫做Journal盘,一般写数据到Ceph集群时,都是先将数据写入到Journal盘中,然后每隔一段时间比如5秒再将Journal盘中的数据刷新到文件系统中。一般为了使读写时延更小,Journal盘都是采用SSD,引入Journal盘的概念是因为Journal允许Ceph OSD功能很快做小的写操作;一个随机写入首先写入在上一个连续类型的journal,然后刷新到文件系统,这给了文件系统足够的时间来合并写入磁盘,一般情况下使用SSD作为OSD的journal可以有效缓冲突发负载。

  • Ceph Monitor:

    是一个监视器,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和objectid等计算出数据最终存储的位置。

  • Ceph MDS:

    全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。

ceph基础架构:


 

1.jpg

CEPH正常的 IO流图:


2.jpg

至于CEPH的crush算法和主流分布式存储的一直性hash算法等等不在细化展开讨论,网上一推的资料,有兴趣的话自行脑补。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: