加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

分布式存储的架构、隐患及解决方法

发布时间:2021-01-09 22:44:03 所属栏目:安全 来源:网络整理
导读:《分布式存储的架构、隐患及解决方法》要点: 本文介绍了分布式存储的架构、隐患及解决方法,希望对您有用。如果有疑问,可以联系我们。 作者简介: 顾炯 中国电信浙江公司中国电信云计算实验室、SDx联合技术开放实验室专家委员.作为第一完成人,多个项目获得
副标题[/!--empirenews.page--]

《分布式存储的架构、隐患及解决方法》要点:
本文介绍了分布式存储的架构、隐患及解决方法,希望对您有用。如果有疑问,可以联系我们。

作者简介:

顾炯

中国电信浙江公司中国电信云计算实验室、SDx联合技术开放实验室专家委员.作为第一完成人,多个项目获得省部级和集团级科技进步奖.

上篇中我们讲了关于分布式存储的知识结构的前三部分内容,存储类型、文件系统、存储介质等,可点击下面的链接查看:

关于分布式存储,这是你应该知道的(图文详解)

今天我们继续来讲讲关于Raid和副本、分布式存储的架构以及存在的问题和解决办法,即下面四至七部分的内容:

一、存储类型

二、文件系统

三、存储介质

四、Raid和副本

五、分布式存储的架构

六、分布式存储存在的问题

七、解决的方法

四、Raid和副本

把磁盘们相同偏移量的一块空间横向进行分割,组成一条逻辑上存储空间.

数据是先写满一条条带,再写下一条条带.一个卷可以有很多条条带组成.条带的划分应该的磁盘配置初级就完成.条带包含扇区(或块)的个数叫条带长度;每个磁盘内包含属于这个条带的扇区(或块)的个数叫条带深度.

为什么要引入条带的概念呢,是因为要解决单个磁盘一次只能同时并发一个IO和保证数据完整性.

图14

我们知道磁盘的IO实际上是磁盘寻找对应扇区地址的过程,是在磁片旋转和磁头在机械臂的控制下横向寻道的结果,而且一个磁盘一次只能完成一个IO申请,而通过条带的方式可以让多个磁盘一起协同完成任务,这种方法叫做raid0.

从理论上看磁盘越多,条带深度越小,速度就越快.

但是也不是条带深度越小速度就越快,因为深度太小,并发的概率就降低了.没有了并发,就不会提高速度了.所以一般来说当随机的小块IO多,就适当加大条带深度,当顺序的大块多,就减小条带的深度.Raid0体现的是人多力量大的哲理.

但是如果raid0的方式下有一块磁盘出现故障了,那数据的完整性被破坏了,数据不可用了.为了确保数据完整性,所以就有了raid1.

raid1就是将一份数据写到2个物理磁盘上,即数据有镜像,二数据副本.就算坏了一块盘也不会导致数据不可用.和单块盘比Raid1方式写的慢,读快,道理很明显.

将raid0和raid1组合起来,就可以吸取各自的优点,但是要注意组合的顺序,raid10比raid01冗余度高、数据更安全,如图:

图15

当左边的raid10系统有一块故障,底层数据是做raid1镜像的,数据的完整性没有被破坏,还可以再坏一块另外raid1组的一个磁盘.

而raid01,当底层的raid0组的磁盘坏掉一块,整个raid0组数据就无效了,所有的IO都会到剩下的raid0组,并且如果再坏一块盘,整个数据就无效了.

Raid5和raid6也是常用的raid方法.

  • Raid5最少需要3块盘,有1个数据副本和1个数据校验;即最多可以坏1块盘;
  • Raid6最少需要4块盘,有1个数据副本和2个数据校验,即最多可以坏2块盘.

这些数据副本和数据校验都均匀的打散在磁盘中.Raid5和raid6的磁盘利用率最低为66.7%和50%,是兼顾利用率和性能的方案.Raid6的安全性比raid5更好,性能差别不大.

Raid都有一定的计算量,来决定这些数据块存放的磁盘、计算出校验数据,或根据校验数据计算出数据.这些都需要CPU和内存资源.为了减少对主机CPU和内存的压力.现在一般在主机的PCI总线上配置raid卡,硬盘都连接在raid卡下.

Raid 卡其实就是一台小型的计算机,有CPU、内存和缓存,减轻了主机的负担.但是raid卡不能跨越主机,所以在分布式存储中,网络raid就不能利用本地的raid卡,只能用主机的CPU和内存.

综合各种因素,分布式存储一般都采用副本的方法.

五、分布式存储的架构

一般来说,分布式存储不管是文件存储、对象存储还是块存储的基本架构都是大同小异的.即客户端或应用端、元数据(MDS)服务器和数据节点服务器.

图16

客户端和元数据服务器之间交互是“信令交互”,而客户端到数据节点是“媒体交互”.元数据服务器或通过数据节点服务器获取各节点服务器的基本配置情况和状态信息.

比如,客户端需要读取某一个文件的信息,客户端会将相应的要求发给元数据服务器:“喂!我需要XXX,存在哪里了”,元数据服务器查询后回答“你到xxx服务器的xxx地址+xxx服务器的xxx地址取”.

客户端拿到这个指示后,向这2台服务器发出指令,数据节点获得指令后,将相应的数据返回给客户端.

大家可能都会奇怪,为什么块存储、对象和文件的架构都是一样的.有什么区别呢?

我们在前面基础知识讲述中,块存储是一种裸设备,它是将存储设备以“块”的方式直接提供给客户,由客户自己的操作系统里的文件系统进行管理.

  • 分布式块存储里是没有文件系统的,是通过客户端直接将最简单明了的命令传递给存储的“块”来执行.
  • 对象存储和文件存储虽然结构类似,但并不将存储底层的“块”直接提供出来,而是通过隐藏着一个文件系统,包装成为“文件”或“对象”提供出来.

这些存储“不挑”操作系统或终端,最终执行命令的是存储里面的文件系统操控存储执行的,所以共享性很好.

文件存储通过“目录+文件名+偏移量”来检索,文件间有目录层次的;

而对象存储采用“唯一对象ID+偏移量”来检索,对象扁平存储的,是没有层次的.而且块、对象、文件存储是可以相互转换的,这个问题以后单独讲.

华为的FusionStorage是一个典型的“块”存储,我们来了解一下结构.

图17

FusionStorage也分成了MDC、OSD和Client三部分.和其他分布式存储重大的差别是:

MDC是记录、更新OSD服务器、磁盘等的状态,并把这些状态数据实时同步给Vbs,由Vbs计算出来数据所落的位置.MDC可以单独部署,也可以集中部署,也可以分布部署.

如果MDC全出现故障,并不会影响存储的正常运行.

但是如果在MDC故障期间OSD的状态发生了改变,比如某块磁盘故障,就会导致部分IO访问不正常.所以一般MDC部署在3台OSD上,确保安全.

一般分布式存储的MDC采用的是数据库或内存储数据库来记录数据块和物理位置关系.客户端向MDC发出询问位置的请求,MDC查询数据库后返回请求数据的存储位置.

这种方法存储访问的速度较慢,而且MDC作为交通的“枢纽”,绝对是整个存储的核心,当MDC发生故障,会导致整个存储都不能使用.但是采取这个方式,也有好处,比如可以根据不同需求设置不同的副本策略等.

VBS是计算数据块存储位置的重要网元.一个VBS就是一个“机头”.VBS部署很灵活,有很多种部署方法,可以根据不同的需求进行选择.

比如,在VMWARE虚拟机中,可以在物理机上开设一台虚拟机部署VBS,在XEN/KVM部署在domain0上;或者部署在每台OSD服务器上,或专门设置VBS服务器群.

图18

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读