大话存储笔记

【大话存储II】学习笔记(15章),块级集群存储系统

2018-02-13  本文已影响7人  dy2903

存储系统演变

存储系统一直以来都是一个总的控制器加上几串磁盘扩展柜存在的,但是随着数据量的快速增加,性能受限于控制器,所以要提升整体的处理能力,主要有两种方法:

好了我们重新回到集群存储系统上来,如果存储系统要做集群,数据分布方式将有两种:

其实一个存储系统最大的问题在于在多主机并发访问时,如何能保证系统的性能,目前主要是通过隔离资源的方法来解决。

所以对于主机而言,只能看到自己的LUN,只是这些LUN是虚拟出来的,可以进行集中管理。

我们可以把集群存储系统分为如下三种:

下面我们将先介绍块存储系统,主要介绍市面上几种典型的产品。


image.png

IBM XIV集群存储系统

组成部分

XIV是一种网格集群化存储系统,每个节点都是一台PC Server,每个节点包含12块本地SATA盘,配置是两颗4核的CPU和8GB的内存。

XIV有共有两种类型的节点:Interface Node , Data Node

所以这两种节点都可以提供存储空间,只是说Interface Node还可以接前端的主机而已。

下图为集群连接拓扑。

image.png

下图为机柜示意图

image.png

LUN的分布式设计

集群系统中,LUN被平均分布在多个节点上,也就是说一块逻辑硬盘实际上会拆分成若干份,散落在不同的节点上面。那么我们怎么知道LUN分散到哪里去了呢?这就需要一个映射图来记录每个LUN的分布情况。

为了保证数据块不丢失,每个LUN对应的数据块会镜像一份,而且放到另一个节点上。这样纵然这个节点挂了,还可以根据映射图找到其镜像,然后重新复制一份到剩余空间里面。这种思想就叫多副本机制,我们把源分块称为Primary,镜像分块称为Secondary。

这种思想与NetApp的WAFL文件系统极为类似,实际上高度虚拟化的设备,一般来说,底层的LUN不是存在于固定的位置。比如XIV可以通过映射图来记录LUN在所有节点的存储地址,这就是文件系统的思想,我们知道文件系统是可以通过INode Tree来遍历整个文件的分布情况的。

WAFL和XIV正是对文件系统的基本思想的灵活运用,但是XIV的粒度和元数据复杂度没有WAFL那么细,所以没有沦为一个彻底的文件系统。

所以像XIV这样的块存储系统,对内使用文件系统的基本思想进行LUN的管理,但是对外屏蔽细节,对主机而言是透明的。

如何应对客户端的写IO

当某个Interface Node接收到一个写IO的以后,首先会通过映射表去判断这个写IO会落到哪个节点上以及其镜像又落在哪里。有两种可能,一种是留在Interface Node 上,也可能在Data Node 上。

image.png

总结一下,就是Interface Node会接收到主机的写IO请求,如果发现是写到自己的内部硬盘上,则复制两份到副本节点上。

如果Inteface Node发现数据是写到其他节点上,则会将写IO重定向到对应的节点上,由该节点复制两份数据到其他节点。当所有的写入都成功了以后,才会向最初的Interface Node返回成功,注意,此时仍由Inteface Node 向主机返回成功,也就意味着,主机其实不知道数据被重定向走了,它仍然以为自己在和此Inteface Node 交互数据呢。

XIV快照设计

我们知道XIV设计也使用了文件系统的思想,所以对于快照,XIV的做法与WAFL差不多,都使用Write Redirect。现在简单的讲一下。

XIV的卷管理模块其实是一个集群文件系统,每个LUN都对应一个分布式映射表(Distribute Map)

如要要生成快照,可以将这个点数据以及映射表先冻结,然后把映射表复制一份,做为新的活动映射表,之后的针对这个LUN的写IO都会被重定向到空闲数据块上,并把映射表更新。

所以再生成快照就简单了,只需要把活动的映射表复制一份即可,这就是Write Redirect模式。

故障恢复

XIV对数据分布的本质思想是分布式RAID 10,相当于将一个LUN复制一份,副本保存在其他位置,这样系统的可用容量相当于减半了,我们可以把这种设计称为上层分布式RAID 10

那么这种RAID 10的做法与传统的RAID 10有什么区别呢?

我们传统的RAID 10不管底层有没有数据占用,都会将所有数据块镜像起来,浪费了很多空间。这是因为判断有用或者是没有是上层的文件系统来做的,传统的RAID 10根本无法判断,所以只能一股脑的镜像。

XIV相当于一种粗粒度的文件系统,它可以在上层对数据块是否有用进行判断。

下面来具体看看XIV是怎么做:

image.png

如果D1故障,为了恢复数据的冗余,可以将镜像块M1~M3复制到D3和D4磁盘中。

D1故障

如果D3又故障了,那么数据还是没有丢失,依然继续复制。此时还有冗余性,存在一份副本。

D3故障

此时如果D2或者D4发生了故障,则没有冗余性了,但是数据仍然没有丢失。

此时如果手动添加了两块硬盘,XIV会重新平衡数据。如下图:

image.png

XIV的这种上层RAID 10设计可以随时迁移数据块,并且可以任意分布式摆放数据块,不受磁盘数量限制。只受系统内剩余空间限制。我们把这种模式叫上层分布式RAID 10

那么与传统的RAID 10有什么区别。传统的RAID 10在一块盘故障之后,只能将数据镜像到新盘里面。

目前发布的XIV系统,最大配置为6个Interface Node和9个Data Node,最大磁盘数为1512 = 180块。XIV这种架构设计可以很容易的扩充节点*

XIV优点

下面我们来看一下XIV相对于传统架构有什么优点:

image.png

3PAR公司Inserv-T800集群存储系统

Inserv-T800为一款x86集群式存储系统。

每个节点都是一台x86 Server,整个集群可以由2~8个节点组成。系统所有节点两两直通,每两个节点使用一条独立的100MHz 64b PCI-X总线相连。

比如一个8节点的系统,1个节点需要与另外7个节点互联,所以每个节点都需要7条PCI-X总线连接到背板,形成一个具有28条直通PCI-X的星形结构。

image.png

PCI-X是半双工的,所以内部互联带宽为28*800MB/s=21.875GB/s。

不过因为PCI-X并非一种包交换网络传输模式,所以背板不需要加电,是一块布满导线和接口的被动式背板。也正因为此,只用了两个控制器,则只用到一条PCI-X作为互联.

image.png

上图为单节点内部的架构,其中ASIC芯片是比较独特的。它将Thin Provision和LUN Shrink功能内嵌到芯片里面来执行。

image.png

3PAR扩展柜很有特色:在4U的空间放置40块3.5的大盘。因为磁盘可以竖着插而且紧密排列,所以散热和共振的问题也解决了。

特点:

瓶颈在于每个节点使用3条1GB/s的PCI-X总线来支持6个扩展卡共4Gb/s的FC接口,有些不够。所以系统吞吐量上不去。

image.png
上一篇 下一篇

猜你喜欢

热点阅读