先看一段来自redbook的Strowize V7000的定义:An IBM Storwize V7000 system is a clustered, scalable, and midrange storage system, and an external virtualization device.
V7000最大的卖点是Virtualization。所谓的存储虚拟化是将不同厂商的存储设备放到一个Pool里以便统一管理,例如下图Storwize V7000(SVC)后面可以接IBM的DS8000,XIV,NetApp,EMC等其他厂商的设备。将这些设备的所有存储空间放到一个大的Pool里,跨设备之间做copy service,Data Migration。对后端存储做操作时对前端主机是透明的,因为前端host只看到一个Storwize V7000(or SVC)。
说到虚拟化,IBM除了Storwize V7000,还有SVC(SAN Volume controller)。两者运行的code都是一样的,只不过一个是作为Server(SVC),一个是作为Storage(Storwize V7K)。下图是一套Storwize V7000系统的组成部分,类似于DS3K/4K/5K,它也分Control Enclosure和Expansion Enclosure。
再看看Storwize V7000的硬件,Front view和Font view,硬件外观上看上去和DS3512很像,只不过Storwize V7000中叫做Node Canisters,而DS3512叫做Controller。每个Storwize V7000有一个或两个(optional)control enclosures,每个control enclosure都包括两个node canisters,磁盘及两个PSU。
重要的术语:
Control enclosure |
A hardware unit that includes the chassis with a midplane for connection of node canisters, drives and power supplies with batteries. |
Node canister 【类似于DS5K的Controller】 |
A hardware unit that includes the node electronics, fabric and service interfaces, serial-attached SCSI (SAS) expansion ports and direct connections to internal drives in the enclosure. |
Expansion enclosure |
A hardware unit that includes the chassis with a midplane for connection of expansion canisters, drives, and power supplies without batteries. |
Expansion canister 【类似于DS5K扩展柜的ESM】 |
A hardware unit that includes the electronics to provide serial-attached SCSI (SAS) connections to the internal drives in the enclosure and SAS expansion ports for attachment of additional expansion enclosures. |
Cluster |
Two node canisters in a control enclosure. |
Managed Disk (MDisk) |
A SCSI logical unit (aka LUN) built from an internal or external RAID array. |
Storage pool |
A collection of MDisks providing real capacity for volumes. SVC: Managed Disk Group (MDG) |
Volume |
What the host operating system sees as a SCSI disk drive. SVC: Virtual Disk (VDisk) |
Cluster
Cluster由2~8个节点组成,所有的配置,监控和服务进程是在Cluster level执行,configuration 是copy在Cluster里的所有node 上。Cluster只分配一个IP而不是每个node一个IP。其中一个Node会被选出成为“configuration node canister”,它是唯一一个来activate Cluster IP的node。如果这个node fail了,会重新选出新的“configuration node”,新的“configuration node”会接管这个IP。
I/O Groups:两个节点构成的类似AB控制器的一对, VDisk在同一个IOgroup的两个节点之间fail over, fail back
正常情况下,某个Volume的IO都是由I/O group里的同一个Node处理的。和DS3K/4K/5K一样,一个Volume也只有一个Preferred Owner(A控orB控,Node1orNode2),两个Node是以failover mode模式工作,即一个Node down掉时,另一个Node可以继续工作,而对主机没有impact。
一个Node就是一个SVC(SAN Volume controller),是个运行Linux的X Series服务器,提供虚拟化,copy service。两个Node组成一个Cluster。一个Cluster可以有1-4个Node paris。每个pair都是一个IO Group。IO group在配置Cluster的时候定义。每个Node只能在一个IO group里。
Managed Disk (MDisk)
Host端不会看到Managed disk,相反,他们看到的是Logical disks,也被称为Virtual disks。Managed disks再组成managed disk groups。组成Virtual disks的Managed disk必须来自同一个Managed disk group。每个Managed disk被分成多个Extents(默认16MB,16MB~8192MB),从0开始,一直到Managed disk的结束。建议一个system里所有Storage Pool都使用一个Extent,这是在两个Storage Pool之间做volume Migration的前提,当然如果extent不一样,可以使用volume Mirroring。
关于Mdisk,Storage Pool,Vdisk之间的关系,下图阐释的非常清楚。
Storage Pool
多个Mdisks(最多为128个)组成一个Storage Pool。
Quorum disk,Configuration Information是存在QuorumDisk上的,system里的所有node都可访问,Quorumdisk可以是一个Mdisk或者是Internal Drive,也是仲裁盘。一个Cluster由3个quorum disk,但只有一个是Active的。在V7K,Internal drive可以被认为是Quorum candidates。如果一个环境里有多个存储,那为了避免单个Storage坏掉而丢失Quorum disk,应该把Quorum disk分散在多个存储上。
Quorum disk是来决定当Cluster中的一个node offline 时,哪个node继续工作。In this tie-break situation, the first group of nodes that access the quorum disk marks their ownership of the quorum disk and as a result continues to operate as the cluster. If the other group of nodes cannot access the quorum disk or finds it owned by another group of nodes it stops operating as the cluster and does not handle I/O requests.
看下一个write request是怎么在V7000中完成的:
创建Vdisk时就已经define了preferred node,在上图中即node1,正常情况下所有对V1这个Vdisk的读写操作都是由node1完成的。
通过Node1 对Vdisk V1进行写操作请求(1),write data会copy一份到node2里,然后才会给主机返回一个写完成操作(2)。之后,node1会将cache数据destage到disk
总结:写操作时,处理IO的Node会将数据copy一份到IO group里的另一个Node,然后才会给主机返回一个write completion。读数据时,和其他storage一样,preferred node会先检查cache中有没有data。如果没有就从磁盘中读。如果IO group里的一个node fail了,另一个node会立刻接管过来,由于write data是在两个node之间mirror的,所以这种node failure不会造成data loss。Surviving node会将cache里的数据destage到disk并进入write-through mode,即所有write data直接写到disk而不经过cache。