1.   SVC结构
当今实施块级聚合和虚拟化主要有2个方法:
Ø 对称:带内设备
SAN设备位于数据路径中,所有I/O数据流通过设备。SVC使用的就是对称虚拟化。
Ø 非对称:带外设备或者基于控制器
 
SAN由一对或者多对SVC硬件节点管理,称为cluster。对SAN网络进行zone划分,使得SVC能看见存储子系统,host能够看见SVC。存储控制器能在SVC和直接主机访问之间共享,只要同一个LUN不共享。SVC能连接至多4个SAN fabric。
SVC集群节点连接到SAN网络,将logical disk(virtual disk)或者卷呈现给主机。这些卷从存储子系统的LUNs(Mdisk)创建。上图中有2个zone:
-     Host zone,host能够看见SVC节点
-     存储zone,SVC节点能够看见存储子系统的LUNs
Host不允许直接操作LUNs,所有数据传送都是通过SVC节点。
 
1.1.SVC组件
节点
每个SVC硬件单元称为节点,节点为卷,缓存,copy服务等功能提供虚拟化。SVC节点成对部署,多对组成一个cluster。一个cluster可以由1到4个SVC节点对组成。Cluster中其中一个节点称为配置节点,配置节点为cluster管理配置,如果这个节点失效,cluster将选择一个新的节点成为配置节点。因为节点是成对安装,形成一个冗余配置。
 
I/O Groups
每对SVC节点也称为I/O Group。一个SVC cluster能有1到4个I/O组。呈现给主机的卷是由cluster的一个I/O组提供。当服务器对自己的某个卷进行I/O操作,该卷的所有I/O定向到一个指定的I/O组,且由I/O组的相同节点处理,这个节点被称为该卷的优先节点。
I/O组的2个节点都作为各自卷的优先节点。每个I/O组至多2048个卷,2个节点都是作为互备节点,如果需要的话,一个节点可以接管搭档节点的I/O负载。因此,在SVC环境中,对一个卷的I/O处理能在I/O组的2个节点之间切换,在host中使用多路径软件来处理failover。
SVC I/O组连接到SAN网络,因此所有应用服务器能从I/O组访问卷。每个I/O组能定义至多256个服务器。如果需要的话,在一个SVC cluster中服务器能映射到多个I/O组,因此能够访问各个I/O组的卷。在I/O组之间可以移动卷来重新分布负载,移动过程中不能同时进行主机I/O,将需要一个简短的中断来重新映射主机。
 
Cluster
 Cluster由1到4个I/O组组成。每个cluster能支持的卷至多8192个,或者每个cluster支持的最多Mdisk为32PB。
所有配置,监控和服务管理都是在cluster级别进行,配置设置值被复制到cluster中的所有节点。为了完成以上任务需要为cluster设置一个管理IP地址。
 
MDisks
SVC cluster和I/O组看到底层存储子系统提供的LUNs称为Mdisks,Host看不见MDisk,看到的是逻辑盘,称为virtual disk或者卷。MDisk存放在存储池中,在池中划分成extent,extent大小从16M到8192M,由SVC管理员定义。一个MDisk最大为1PB,一个cluster支持多达4096个MDisk,MDisk在任何时候都是下面3模式中之一:
Ø Unmanaged MDisk
Unmanaged  MDisk不是任何存储池的成员,SVC不会写数据到unmanaged MDisk。
Ø Managed MDisk
Managed模式MDisk是存储池的成员,划分成extent,卷是由extent组成。
Ø Image mode MDisk
Image模式提供从MDisk到卷的直接块对块的转换。Image模式的使用场景:
-     Image模式可以虚拟化已经包含数据的Mdisk,数据是由直连存储的host写入而不是通过SVC。使用p_w_picpath模式可以进行数据迁移。
-     Image模式可以允许SVC卷使用由底层存储提供的本地copy服务功能。为了避免数据丢失,禁用卷的SVC缓存
-     通过p_w_picpath模式可以从SVC中迁移数据到非SVC环境,即host直接连接存储。
每个MDisk有一个在线路径数,表示访问MDisk的节点数量。Maximum count是cluster检测到最大路径数,current count为当时cluster检测到的数量。
 
Quorum disk
Quorum disk是一个含有cluster专用保留区域的MDisk。当发生SAN故障后cluster中仍然有一半节点可用,此时Cluster使用quorum disk to break a tie。
 
Disk tier
由于SVC cluster的Mdisk所在的disk或RAID类型不同, MDISK可能有各种属性。因此每个Mdisk有个存储层属性,默认为generic_hdd。从SVC V6.1对于SSD有个新的层属性generic_ssd。
 
Storage pool
 一个存储池可以至多128个MDisk组成,一个cluster能管理128个存储池。池大小可以动态改变,一个MDisk只能是一个存储池的成员,p_w_picpath mode卷除外。
存储池的每个Mdisk划分成一定数量的extent,extent大小在存储池创建时由管理员决定,以后不能修改。Extent大小在16MB到8GB之间。
一个cluster中的所有存储池最好使用相同的extent大小,这是在2个存储池之间进行卷迁移的首要条件。如果存储池的extent大小不同,必须使用卷镜像来copy卷。一个cluster中的extent数量最多为2^22=4百万,因此SVC集群的总容量是基于extent的大小,如下表所示:
 
1.2.Volume
卷是SVC提供给host的逻辑盘。有3中类型的卷:striped,sequential,p_w_picpath,这些类型是由存储池中extent的分配方式决定。
Ø Striped卷的extent是存储池中以round_robin方式从每个Mdisk中分配
Ø Sequential卷的extent是连续的从Mdisk中分配
Ø Image模式是一对一的extent映射
一个卷最大尺寸为256TB,一个SVC集群支持高达8192个卷。卷有以下属性:
Ø 卷可以创建和删除
Ø 卷可以resize(扩展或收缩)
Ø 卷的extent可以在运行时迁移到另外的MDisk或者存储池
Ø 卷可以以全分配或者 thin-provisioned方式创建,这2个模式在运行时可以互相转换
Ø 卷可以存放在多个存储池(mirror)
Ø 卷可以进行长距离的同步或者异步镜像
Ø 卷可以使用flash copy
卷有2个模式:p_w_picpath mode和managed mode,对于managed模式卷使用striped和sequential方式。
 
1.2.1.    Managed mode volume
每个卷的extent映射到一个Mdisk的extent。
Figure2-6显示一个卷由V0到V7的extent组成,每个extent映射到Mdisk A,B,C的extent,由Mapping table来存储映射关系。
存储池中extent分配算法:如果存储池由不止一个MDisk组成,那么在进行extent分配时候采用round-robin算法;如果其中有一个MDisk没有剩余extent时,在轮到这个MDisk的时候round-robin算法会跳到下一个有空余extent的MDisk。
当创建一个新卷时,分配给卷的extent的第一个Mdisk采用伪随机方式,而不是简单的采用 round_robin来选择下一个Mdisk。由于round_robin算法的“striping effect”,可能导致大量卷的第一个extent位于同一个Mdisk,进而降低性能。
1.2.2.    Cache mode volume
在正常条件下,卷的读写数据是存放在优点节点的缓存中,同时将写数据镜像copy到同一I/O组的搭档节点。创建卷时也可以指定不使用缓存,这样I/O操作直接传送到存储子系统。
Having cache-disabled volumes makes it possible to use the native copy services in the underlying RAID array controller for MDisks (LUNs) that are used as SVC p_w_picpath mode volumes. Using SVC copy services rather than the underlying disk controller copy services gives better results.
1.2.3.    Mirrored volume
镜像卷提供了一个简单的RAID1功能,也就是一个卷能有2份物理数据,因此其中一份数据的MDisk失效而不可访问时,卷仍然在线,可以访问。
镜像卷的2个copies可以分布在不同的存储池或使用p_w_picpath模式copy。镜像卷可以加入Flash Copy,Remote Copy。
对已有一个copy的卷,可以再加第二个copy,或者从已经有2个copy的卷中移除一个。
一个新创建的,没有格式化的2-copy卷起始位于非同步状态,主COPY定义为fresh,次copy为stale。同步过程将更新次copy直到全同步,这个过程使用默认的synchronization rate或者创建/修改卷时指定的一个rate。镜像卷的同步状态记录在quorum disk中。
如果2-copy镜像卷创建时指定format参数,2个copies并行方式格式化,当2个copies的同步操作完成卷就处于在线状态。
如果镜像卷扩展或收缩,所有的copies也同样扩展或收缩。
如果用户不要求读稳定性,可以选择“no synchronization”选项。
对于不处于同步状态的copies,为了最小化重新同步的时间要求,只有256KB grains that have been written to since the synchronization was lost are copied。这个方式称为增量同步,只有修改过的grains需要copy来恢复同步。

重要:一个非镜像卷可以从一个地方迁移到另外一个地方,只需简在目的地增加一个copy,等2个copy同步完成,移除原来的copy0,这个操作可以随时停止。2个copy能放在不同extent大小的存储池。
对于2-copy卷,一个称为primary copy。如果主copy可用且同步的,对卷的读是定位在主copy上,用户在创建卷时可以选择主copy,或者以后修改。将主copy放在高性能控制器上将提高卷的读性能。如果一个copy位于低性能控制器上,写性能是受限的,因为只有2个copy的写数据都完成才认为写成功。
镜像卷需要检查是否所有copy是一致的,如果当从一个copy进行读数据遇到介质错误,它将会使用其他copy上数据进行修复,这个一致性检查是与主机I/O异步执行的。
镜像卷以每256KB 1bit的速率消耗位图空间,也就是1MB位图空间支持2TB镜像卷。位图空间默认分配为20MB,支持40TB镜像卷。如果所有512MB可变位图空间全部分配给镜像卷,可以支持1PB镜像卷。

重要:如果没有quorum disk可用,镜像卷会离线,因为镜像卷的同步状态是记录在quorum disk中的。
 
1.2.4.    Image mode volumes
Image mode volumes用于将直接映射给服务器的LUNs迁移到SVC中。Image模式使卷和MDisk间有个一对一的映射。Image模式卷有一个最小尺寸,为一个数据块(512bytes),且总是占据至少一个extent。
一个p_w_picpath模式MDisk只能映射到一个p_w_picpath模式卷,卷的大小必须等于p_w_picpath模式MDisk的大小。当创建p_w_picpath模式卷时,指定的MDisk必须是“unmanaged”模式且不是存储池的成员。在创建完p_w_picpath模式卷后MDisk成为存储池(Storage pool_IMG_xxx)的成员。
SVC支持managed模式卷转化为p_w_picpath模式卷,反之亦然。
一个p_w_picpath模式MDisk总是与一个卷相关联,如果p_w_picpath模式MDisk不是MDisk Group的extent大小的整数倍,那么最后一个extent将是部分的。Image模式卷不能作为quorum disk,不会有任何SVC元数据extent分配给它。
将p_w_picpath模式MDisk放在一个专用存储池,使用一个专用的名称(例如Storage pool_IMG_xxx)。 所有 SVC 的 copy 服务功能可以应用于 p_w_picpath 模式卷。
 
卷可以配置为thin-provisioned或全分配。thin-provisioned卷的读写与全分配方式相同。当创建thin-provisioned卷时,需要制定2个参数:从存储池分配给卷的实际物理能力和主机的可用虚拟能力。全分配卷的这2个值是相同的。
实际能力决定了初次分配给卷的MDisk extent的数量;虚拟能力是主机服务器和SVC组件(例如Flash Copy,Cache,Remote Copy)看到的大小。实际能力用于存储用户数据和元数据,可以指定为一个绝对值或者虚拟能力的百分比。
当创建thin-provisioned卷时,实际能力的一小部分用来存放初始元数据。卷的颗粒度为grain,grain大小为32k,64k,128k,256k。grain用来存放卷的元数据和用户数据。写I/O到thin-provisioned卷的grain, 且grain之前没有被写过数据,那么grain将会存储元数据和用户数据;写I/O到thin-provisioned卷的grain,且grain之前写过数据,则更新grain中数据。
每个grain需要存放元数据,意味着I/O效率将比全分配方式的卷低。元数据不会超过用户数据的0.1%。

Thin-provisioned volume format:Thin-provisioned卷不需要格式化。当一个写I/O需要进行空间分配时,grain在使用前先清零。
如果卷不是p_w_picpath模式,thin-provisioned卷的实际能力可以修改。增加实际能力使卷存放更多的数据和元数据。如果初始分配太多的实际能力,实际能力可以通过减少来释放空余存储。
Thin-provisioned卷可以配置为autoextend,使SVC能够随着卷的空间需求,自动给卷增加一定量的额外实际能力。自动扩展会维护一定量的没有使用的实际能力,这个量称为contingency capacity。在卷创建时contingency capacity设置为实际能力大小,如果用户修改实际能力,contingency capacity重置为已使用能力与实际能力之间。对于没有使用自动扩展特性的卷,contingency capacity为0。
自动扩展不会使实际能力扩展超过虚拟能力。实际能力可以手工扩展到more than the maximum that is required by the current virtual capacity,contingency capacity会重新计算。
为了支持thin-provisioned卷的自动扩展,存储池可配置能力预警值。当存储池的已使用能力超过warning capacity,产生一个告警事件。例如指定预警值为80%,当空余能力为20%时将产生告警事件。
Thin-provisioned卷能转换为全分配卷,反之亦然。

Thin-provisioned卷性能:Thin-provisioned卷需要额外的I/O操作来读写元数据,使得SVC节点产生额外的负载。因此,对高性能应用或高I/O写的负载避免使用thin-provisioned卷。
 
1.3.SVC Cluster
集群是一组共同提供资源给用户的服务器集合,客户不会感知集群的底层物理硬件。如果集群中的一个节点失效或者太忙而不能响应请求时,请求会透明的传送给其他可用节点。
SVC集群是一组可以高达8个节点的集合,管理员可以单点控制这些节点来进行配置和服务管理。
所有活动节点知道它们是集群的成员,这是很重要的一点。特别是在split-brain场景中,当个别节点失去与其他节点的联系时,有一个可靠的机制来决定哪些节点组成活动的集群。最差的场景就是一个集群分裂为2个单独的集群。
在SVC集群内,voting set和quorum disk负责保持集群的完整性。如果有节点加入集群,它们加入到voting set;如果有节点移除,从voting set中移除。SVC集群实施一个动态quorum,在丢失一些节点后,如果集群能继续运行,集群将调整quorum需求,使得以后可以容忍节点失效。
在一个集群中的lowest Node Unique ID成为boss节点,由它决定是否节点能组成集群操作。这个节点最多2个集群IP地址来进行集群的管理。
 
1.3.1.    Quorum disk
集群使用quorum disk有2个目的:
ü 当集群遇到SAN错误,还有一半节点可用时,用作tie breaker
ü 保存集群配置数据的copy
Quorum disk需要256M以上保留空间。在一个集群中只有一个活动quorum disk,然而有3个MDisk作为quorum disk的候选者。集群从quorum disk候选者池中自动选择活动quorum disk。
当MDisk加入到SVC集群中,SVC检查MDisk是否能用作quorum disk,如果满足要求,SVC将加入集群的前3个MDisk用作quorum disk候选者,其中一个作为活动的 quorum disk

备注:成为quorum disk的LUN必须满足以下条件:
Ø 存储子系统提供的LUN必须支持quorum disk
Ø 使用svctask chcontroller -allow_quorum yes命令来手工允许成为quorum disk
Ø 必须是managed模式
Ø 必须有足够的空余extent来存放集群信息
Ø 集群内节点必须都能看见
 
如果可能的话,SVC将把quorum disk候选者放在不同的存储子系统上。在quorum disk初始分配完成后通过svcinfo lsquorum命令查看。
当quorum disk选定以后就固定了,其他MDisk要成为quorum disk需要满足以下条件之一:
ü 当管理员使用命令svctask setquorum来指定一个MDisk成为quorum disk
ü 当quorum disk从存储池删除
ü 当quorum disk变更为p_w_picpath mode
 

备注:没有quorum disk的SVC集群严重影响操作,缺少可用的quorum disk来存储元数据会导致无法迁移。另外没有可用的quorum disk导致镜像卷离线,因为镜像卷的同步状态记录在quorum disk上。
 
在集群的正常运行期间,节点能够互相通信。如果一个节点空闲,那就会发送一个心跳信号来确保与集群的连通性。如果一个节点失效,那么这个节点上的负载全部被其他节点托管,直到这个节点重启来重新加入集群。
当节点分布在不同sites,集群节点配置如下:
Ø Site1 包含一半SVC集群节点和一个quorum disk候选者
Ø Site2 包含一半SVC集群节点和一个quorum disk候选者
Ø Site3 包含一个激活的quorum disk
 
尽量将Quorum disk分布在不同的存储子系统中。即使只有一个存储子系统,也尽量将Quorum disk分布于不同的存储池,利用不同存储池来自不同阵列的分配方式,使Quorum disk位于不同的阵列,防止因为阵列失效导致所有3个Quorum disk都失效。
Quorum disk查看:svcinfo lsquorum
Quorum disk移动:svctask chquorum
如图所示quorum index2对应的quorum disk从ITSO-4700的MDisk2移动到了ITSO-XIV的MDisk9。
 
1.3.2.    Cache
存储缓存的主要目的就是提高I/O响应时间。2145-CF8节点配合SVC6.1提供每个节点24GB内存,每个I/O组48GB。节点内存能用于读或写缓存,写缓存的大小限制为12GB,根据节点的I/O情况,24GB内存能够全部用于读缓存。
缓存分配是以4KB segment为单位。
当服务器进行写数据时,优先节点先保存数据在自己的缓存中,然后copy到备用节点,copy完成之后才通知服务器写操作完成。
如果卷在最近2分钟内没有接受到写更新,则自动将所有修改的数据destaged to disk。
如果I/O组的一个节点失效,备用节点将清空它的写缓存,运行在操作模式,也就是write-through模式。运行在write-through模式的节点直接写数据到磁盘,然后发送一个I/O完成状态信息到服务器。运行在这个模式下I/O组的性能降低。
写缓存是以存储池进行划分的,这个特性限制了集群内一个存储池能够分配的最大写缓存量。下表显示了集群中单个存储池使用的写缓存上限:
当外部电源中断时,物理内存被copy到节点内置盘上的文件中,这样在电源恢复供应时能恢复数据。不间断电源确保足够的电力来完成这样的dump操作,在dump内存数据到盘上后,SVC节点关闭。
2.   SVC计划和配置
2.1.逻辑设计
2.1.1.    SAN Zoning
SAN fabric可以配置2个或至多8个SVC节点,组成SVC集群。SVC节点,存储子系统,服务器连接到SAN fabric,在SAN fabric中进行zone划分,使得SVC能看见各自节点和存储子系统,服务器能看见SVC。服务器是不能直接看见或操作存储子系统的LUNs。在一个集群内的SVC节点必须能够互相通信,且能够看见集群内所有存储。
SVC6.1支持2Gbps,4Gbps,8Gbps的FC fabric。在一个存在多种速度交换机的fabric中,最好是将SVC和存储子系统连接到最高速度的交换机。
SVC集群中的所有SVC节点连接到同一个SAN,由SVC将卷呈现给主机,这些卷从存储池创建,存储池是由存储子系统提供的MDisk组成。在SAN网络中必须有3个zone:
Ø SVC集群zone
Ø 主机zone:host访问SVC集群中的存储
Ø 存储zone:SVC访问存储子系统
zone配置遵循以下指南:
Ø LUNs(MDisk)必须是单个集群独占访问,不能与其他SVC集群共享
Ø 在一个集群内的所有节点port必须以相同的速度运行
Ø ISLs不能用于SVC集群内节点之间通信或者节点对存储控制器的访问
Ø 相似主机的HBA卡或者同一主机的相似HBA卡应该划分在各自的zone中。例如,如果有AIX和microsoft主机,那需要划分在各自zone。这是一个SAN操作性问题,不是专门针对SVC的。
Ø Host zone只能包含一个initiator(host端的HBA卡),SVC节点口则根据需要进行配置。
可以使用svcinfo lsfabric命令生成报告,显示节点和存储控制器,主机的连接。

Attention:
Ø 在集群内的节点间采用ISL通信对集群有负面影响,由于SVC集群需要依赖这些链路维护心跳和集群管理服务
Ø 在SVC节点访问存储之间使用ISL会导致 port congestion,影响SAN的性能和可靠性
Ø 集群间通信使用不同的port speed导致port congestion,因此不支持混合的port speed
 
2.1.2.    SVC集群配置
为了确保SVC的高可用性,在设计SVC的SAN网络时考虑以下事项:
Ø 集群中所有节点必须位于相同的LAN网段。如果计划用每个节点的第二个网口,则可以配置与网口1不同的LAN网段。也就是所有节点的网口1在一个网段,网口2在另外网段
Ø 为了保证应用的连续性,SVC节点总是成对部署,如果一个节点失效,剩下节点运行在降级模式,但是仍然是有效配置。剩下节点运行在write-through模式,意味着数据直接写到存储子系统(写缓存不可用)。
Ø 在SVC节点与交换机之间采用光纤连接,运行在2/4/8Gbps,根据SVC和交换机硬件决定。SVC节点是auto-negotiate
Ø SVC节点port必须连接到FC fabric,SVC与host或存储子系统的直连是不支持的
Ø 2个SVC集群不能访问存储子系统中相同的LUN
Ø SVC使用3个MDisk用作quorum disk,最好是每个quorum disk位于不同的存储子系统。
 
分离集群配置
Ø 分离集群配置的I/O组的2个节点之间的最大距离为10KM
Ø 使用分离集群配置结合卷镜像可以实现高可用性。在镜像卷配置后使用svcinfo lscontrollerdependentvdisks验证位于不同存储子系统的镜像卷
Ø 当实施分离集群配置时,quorum disk的分配可以采用如下配置:
-     Site1 包含一半SVC集群节点和一个quorum disk候选者
-     Site2 包含一半SVC集群节点和一个quorum disk候选者
-     Site3 包含一个激活的quorum disk

备注:在同一I/O组内节点间的ISL是不支持的,不管是否采用分离集群配置。
 
2.1.3.    存储池配置
SVC中的MDisk来自于存储子系统的LUNs,可以是managed或unmanaged模式,managed MDisk表示已经分配给存储池:
Ø 存储池是MDisk的集合,一个MDisk只能属于一个存储池
Ø SVC支持128个存储池
Ø 存储池没有对卷的限制,然而一个I/O组支持的卷为2048,集群为8192
Ø 卷只属于一个存储池,除非卷在存储池之间进行镜像
 
SVC支持的extent大小为16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192 MB,在SVC6.1才支持4096和8192,当创建存储池是需指定extent大小,不能进行修改。如果需要修改extent大小,只能删除存储池,重新创建。在存储池中的所有MDisk都有相同的extent大小。
 
存储池配置考虑:
Ø 集群最大存储能力是与extent size有关:
-     16MB extent=64TB,强烈建议使用128/256MB。IBM Storage Performance Council (SPC)基准值为256MB
-     选择extent大小,所有的存储池使用相同的extent
-     对于不同extent大小的存储池是不能进行卷迁移的,除非使用卷镜像来创建卷的copy
Ø 存储池可靠性,可用性,服务性(RAS)考虑
-     如果确定一个host的卷只位于一个存储池的话,可以创建多个存储池,使得不同的host访问不同的存储池。如果存储池离线,则只影响部分host。
-     如果不需隔离主机与存储池,可以创建一个大存储池。创建一个大存储池前提是物理盘有相同的大小,速度和RAID级别
-     如果有一个MDisk不可用,存储池就会离线,哪怕MDisk上没有数据。不要把所有MDisk放入一个存储池
-     至少创建一个单独的存储池,用于p_w_picpath模式卷
-     确保提供给SVC的LUNs没有任何主机PR属性
Ø 存储池性能考虑
如果需要隔离不同的工作负载,则可以创建多个存储池。
Ø 存储池和SVC缓存关系
 
2.1.4.    Virtual disk配置
一个vdisk(卷)是存储池的一员。当创建卷时,首先确定想要达到的性能,可用性和成本要求,然后选择存储池。
Ø 存储池中定义卷是由存储子系统的哪个MDisk提供
Ø I/O组定义哪个SVC节点提供对卷的I/O访问
 
卷的分配是基于以下考虑:
Ø 将卷均匀的分布在I/O组和节点之间来优化性能
Ø 选择存储池来满足对卷的性能要求
Ø I/O组考虑
-     创建卷时,卷与I/O组的一个节点关联。默认情况下,每次创建新卷时,采用round-robin算法来关联节点,也可以指定一个优先访问节点。
-     即使每个卷有8个路径,所有的I/O流量只流向优先节点,也就是只有4个路径是被SDD真正使用的,其他4个路径只是作为优先节点失效后才使用或者concurrent code upgrade is running
Ø 创建p_w_picpath模式卷
-     当Mdisk上已经有数据时可以使用p_w_picpath模式卷。当创建p_w_picpath模式卷时,它直接与所在的MDisk关联,因此卷的logical block address(LBA)=MDisk LBA。Image模式卷的大小默认等于MDisk大小
-     当创建p_w_picpath模式disk时,MDisk必须是unmanaged模式,不属于任何存储池,且大小不能为0。Image mode volumes can be created in sizes with a minimum granularity of 512 bytes,and they must be at least one block (512 bytes) in size。
Ø 创建连续或条带策略的managed模式卷
当创建连续或条带策略的managed模式卷时,必须确保卷所在的MDisk的extent是没有数据的,且这些MDisk集大小是大于等于卷的大小。在MDisk上可能有足够的extents,但是没有足够大的连续块来满足要求。
-     当创建Thin-provisioned卷,需要理解应用程序对卷的利用率
-     对Thin-provisioned卷有2种操作模式
u 自动扩展卷,应用程序可能导致卷自动扩展直到消耗完存储池的所有空间。
u 非自动扩展卷有固定量的存储,用户必须监控卷来分配额外的能力。应用程序至多只是将卷使用完全。
-     根据实际能力的初始大小,设置grain大小和告警线。如果卷离线,可能是缺少可用的物理存储来进行自动扩展,也可能是非自动扩展卷没有及时进行卷扩展,这样数据保留在缓存中,产生一定的危险。
-     Grain分配单元大小可以为32KB,64KB,128KB,256KB,一个小的grain size能够充分利用空间,但是会产生一个大的directory map,导致性能下降
-     Thin-provisioned卷由于需要directory访问故需要更多的I/O。对于随机70%读30%写的负载,一个Thin-provisioned卷将需要为每个用户I/O产生大约一个directory I/O,性能比普通卷的写数据降低一半
-     Directory是two-way write-back-cached (just like the SVC fastwrite cache),因此个别应用程序可以提高性能
-     Thin-provisioned卷需要更多的CPU处理
-     Thin-provisioned卷有个特性称为“zero detect”,当使用卷镜像来转换一个全分配卷为Thin-provisioned卷时能够回收没有使用的已分配空间
Ø 卷镜像指南
-     创建2个单独的存储池来为镜像卷分配空间
-     镜像卷的存储池最好来自不同的存储子系统
-     如果可能,使用具有相同属性的MDisk组成的存储池,否则卷性能会受到性能差的MDisk的影响
 
2.1.5.    Host mapping(LUN masking)
对于主机和应用服务器,按照以下指南:
Ø 对于使用2个HBA的主机对于同一个LUN能看见多个路径,使用zone配置来限制路径数在2-8个之间,最好是4个路径。SVC支持的多路径软件为SDD,MPIO等,参见http://www-03.ibm.com/systems/storage/software/virtualization/svc/interop.html
Ø 从主机到I/O组节点之间路径不能超过8个,即使8个路径并不是多路径软件的最大值(SDD支持32个路径)。为了限制路径数, the fabrics must be zoned so that each host FC port is zoned to no more than two ports from each SVC node in the I/O Group that owns the volume。

Notes:
Following is a list of the suggested number of paths per volume: (n+1 redundancy)
-     With 2 HBA ports: zone HBA ports to SVC ports 1 to 2 for a total of 4 paths
-     With 4 HBA ports: zone HBA ports to SVC ports 1 to 1 for a total of 4 paths
Optional: (n+2 redundancy)
-     With 4 HBA ports: zone HBA ports to SVC ports 1 to 2 for a total of 8 paths
Ø 如果主机有多个HBA口,每个口必须zoned to a separate set of SVC ports to maximize high availability and performance
Ø 配置超过256个主机时,需要在SVC中配置主机到I/O组的映射关系。每个I/O组支持最多256个主机,因此在一个8节点SVC集群中最多支持1024个主机。
Ø Port masking,使用prot mask来控制host能访问的节点port。
 
3.   初始化集群配置
在SVC硬件安装完成后进行SVC集群的初始化配置:
1.   选择一个节点为集群中成员,进行初始化配置
2.   在硬件面板上使用up和down按钮,直到显示Action
3.   按下select按钮
4.   使用up和down按钮,直到显示New Cluster IPv4?
5.   按下select按钮来创建新集群
6.   再次按下select按钮来修改IP
7.   使用up和down按钮来修改IP地址的第一段

备注:对于IPv4,按住up和down按钮是以10为单位来增加和减少。
8.   使用right按钮移动到下一段,同样使用up和down按钮来设置
9.   重复步骤7来完成IP地址设置
10.当IP地址设置完成,按下select
11.按下right按钮,显示为IPv4 Subnet:
12.按下select
13.设置掩码,与IP地址设置同样操作
14.当掩码设置完成,按下select
15.按下right按钮,显示为IPv4 Gateway:
16.按下select
17.设置网关,与IP地址设置同样操作
18.当网关设置完成,按下select
19.使用right和left按钮来查看IP设置。在设置完成后,按下right和left按钮直到显示Confirm Created?,按下select
20.在完成以上配置后,在显示面板上显示
-     Cluster:显示在第一行
-     一个临时的系统分配的集群名称显示在第二行
在完成集群初始化配置后,可以使用管理界面GUI来加节点到集群中。
 
集群配置向导:
1.   在浏览器输入初始化配置中IP地址 http://svcclusteripddress/
2.   出现欢迎界面,输入默认superuser密码:passw0ord
3.   选择接受协议,NEXT
4.   在Name,Date,and Time窗口设置
-     集群名称:大小写敏感,不能以数字开头
-     时区设置
-     日期设置,如果使用NTP服务器,选择“Set NTP Server IP Address”来输入NTP服务器的IP地址
5.   出现“Change Date and Time Settings”窗口
6.   出现“System License”窗口,输入授予权限的能力,NEXT
7.   出现“Configure Email Event Notification”,如果不配置,直接NEXT
8.   此时可以加节点到集群中。
点击一个空节点位置,设置节点名称,点击Add Node:
弹出窗口如下:OK
在所有节点都加入集群中后点击Finish
9.   集群更新操作窗口
10.至此集群创建完成,可以进行集群的管理。
 
配置服务IP地址:
配置这个IP地址可以在节点上使用Service Assistant Tool,如果节点有问题,可以通过服务IP地址来查看详细状态和错误报告,管理节点服务。
1.   选择Configuration→Network
2.   选择Service IP addresses
3.   选择节点,点击服务IP地址设置端口
4.   输入IP地址,网关和掩码,点击OK来完成设置。
4.   Host configuration
4.1.SVC设置
4.1.1.    FC和SAN设置
Host使用Fibre Channel (FC)来连接SAN交换机而不是直接连接到SVC节点。为了保证高可用性,使用2个冗余的SAN fabric,因此每个host至少2个HBA卡,每个HBA卡连接到其中一个fabric的SAN交换机(假定每个HBA卡为单口)。
在SAN fabric中SVC支持3个interswitch link(ISL),意味着服务器到SVC能跨越5个FC链路,采用长波SFPs的话每个链路可以达到10KM。SVC节点必须采用短波SFPs,因此与SAN交换机距离最大为300m,如下图:
如图所示,SVC节点1与host2距离超过40KM。
对于高性能服务器,原则上避免ISL hops,也就是将服务器与SVC连接到相同的SAN交换机。当连接服务器到SVC按照以下规则:
Ø 每个I/O组至多256个host,每个集群为1024个
Ø 每个I/O组至多512个唯一的主机WWPN号
 
Host zone配置规则:
Ø 同质HBA port zones
主机zone配置中,在一个zone中必须包含相似的HBA卡和相似的主机类型。例如AIX和NT服务器必须在各自单独的zone,Qlogic和Emulex HBA卡在单独的zone。
Ø HBA to SVC port zones
Host的每个HBA port与2个SVC port放在一个zone,这2个SVC port分别来自2个SVC节点。不要将2个以上的SVC port与HBA在一个zone中,因为这样导致超过推荐路径数。
Ø 每个LUN的最大路径数
从SVC节点到主机的路径数不能超过8个,对大多数配置,host到I/O组提供的卷为4个路径就足够了。
Ø Balanced Host Load across HBA ports
为了获得最佳性能,确保每个主机口与单独的一组SVC口在一个zone中。
Ø Balanced Host Load across SVC ports
每个SVC口有相同数量的主机口。
 
图中每个服务器包含2个单口的HBA,为4路径方案。
Ø 每个I/O组均匀的分布主机,每个主机集的主机连接到相同的一组SVC口。
Ø 主机集1总是与I/O组2个节点的P1和P4口在一个zone中,主机集2则是与P2和P3口在一个zone中。Port group为每个SVC节点的一个port。
Ø 为每个I/O组的port group创建别名
ü Fabric A:IOGRP0_PG1→NI_P1;N2_P1,IOGRP0_PG2→N1_P3;N2_P3
ü Fabric B:IOGRP0_PG1→N1_P4;N2_P4,IOGRP0_PG2→N1_P2;N2_P2
Ø 用主机WWPN与PG别名来创建主机zone
 
尽可能用最小数量的路径来满足足够的冗余级别。所有的路径必须使用主机的多路径驱动来管理,假设一个主机连接4个口到SVC,每个卷是8个路径,125个卷映射到这个服务器的话,多路径驱动不得不支持处理1000个活动路径。
8个路径方案:
4.1.2.    Port mask
4.2.AIX配置
AIX主机识别SVC卷的主要配置步骤:
1.   安装HBA卡
2.   检查OS版本
-     AIX V4.3.3
-     AIX 5L™ V5.1
-     AIX 5L V5.2
-     AIX 5L V5.3
-     AIX V6.1.3
3.   连接AIX主机到SAN交换机
4.   配置SAN交换机zone
5.   安装2145主机附属支持包
6.   安装配置SDDPCM
7.   SVC完成逻辑配置,包括定义主机,卷和mapping
8.   运行cfgmgr来发现卷

备注:单个主机或者LPAR内的FC port最多为4个,因为连接到SVC的最多port个数不能超过4个。
4.2.1.    配置fast fail和dynamic tracking
执行以下步骤:
1.   对每个adapter设置FC SCSI I/O Controller Protocol Device
2.   启用动态跟踪
以上可以一步完成
chdev –l fscsi0 –a ‘fc_err_recov=fast_fail  dyntrk=yes’

备注:fast_fail和dyntrk属性在adapter删除和重新配置后不会保留,因此,如果adapter被删除,然后重新配置到系统中,这些属性将丢失,需要重新配置。
 
列出已安装的FC卡
通过使用lscfg –vpl命令显示WWPN号和其他属性包括firmlevel,WWPN用Network Address表示。也可使用fcstat fcs0
 
 
4.2.2.    安装2145主机附属包和SDDPCM
Ø  安装 2145 主机附属包
为了在主机中将SVC卷配置为2145设备类型,必须在cfgmgr之前安装2145附属包。如果在没有安装2145附属包之前运行cfgmgr则LUNs被识别为“Other SCSI Disk Drives”,SDDPCM不能识别这些卷。为了修改设备类型,hdisk需要使用命令rmdev –dl hdiskX删除,然后重新运行cfgmgr。
主机附属包安装步骤:
1.   访问以下站点:
2.   选择 Host Attachment Scripts for AIX
3.   选择 Host Attachment Script for SDDPCM
4.   下载AIX host p_w_upload fileset for your multipath device driver package: devices.fcp.disk.ibm.mpio.rte
5.   根据安装说明或readme文件来安装脚本
 
Ø  安装 SDDPCM
Subsystem Device Driver Path Control Module (SDDPCM)是一个路径控制模块,提供路径管理功能和错误恢复算法。当存储设备配置为多路径设备时,SDDPCM作为AIX MPIO FCP(Fibre Channel Protocol)设备驱动的一部分进行加载。
 
AIX MPIO设备驱动自动发现和配置所有存储设备路径,SDDPCM管理这些路径,提供:
Ø 存储I/O的高可用性和负载均衡
Ø 自动路径切换功能
Ø 并发下载存储设备的licensed machine code
Ø 防止单点失败
 
在DS系列的双控制器存储子系统中,SDDPCM能够区分LUN的优先路径:
Ø 在主控制器(优先控制器)上的路径
Ø 备用控制器上的路径
 
对于这种主备双控制器的存储设置,I/O只发送给主控制器。因此,当SDDPCM选择I/O路径时,它会选择只连接到主控制器的路径。如果没有连接主控制器的路径可用,SDDPCM会改变LUN的优先控制器给备用控制器,切换原先备用路径为主路径,并选择这些新路径来发送I/O。

备注:SDD和SDDPCM在同一服务器上是互斥的。SDDPCM支持最多1200的设备,每个设备最多16个路径。然而,对于round_robin,load_balance路径选择算法,每个设备超过4个路径可能会影响性能。
 
SDDPCM软件下载:
安装之前确保AIX满足SDDPCM的安装条件。
下例显示SDDPCM下载到/tmp/sddpcm目录,解压缩,使用inutoc命令生成dot.toc文件(.toc),这个文件是installp命令需要的,然后通过installp命令来安装SDDPCM:
lslpp命令检查是否安装成功
在安装完成SDDPCM后重启系统,验证SDDPCM server(pcmsrv)是否自动启动,如果pcmsrv自动启动,l***c –s pcmsrv输出如下:
NNN:进程ID
Status:Active表示自动启动,如果不是的话,status应该为Inoperative
 
从SDDPCM3.0以后版本,AE server加入到SDDPCM中。l***c –s AE输出如下:
 
Ø  使用 SDDPCM 来配置卷
查询WWPN号
 
下图显示lshost和lshostvdiskmap命令获得以下信息:
ü 查看主机定义
ü 显示WWPN号
ü 显示分配的卷和卷序列号
 
AIX中执行cfgmgr命令来发现LUNs。以下命令用来搜索adapter上设备:
以下命令则在所有adapter上搜索设备:
使用lspv来列出新配置的hdisk,作为MPIO FC2145设备出现:
 
Ø  SDDPCM 使用
SDDPCM使用pcmpath命令进行管理。pcmpath query adapter显示当前adapter状态:
pcmpath query device命令显示设备状态:
*星号表示非优先SVC节点上的非激活路径。
4.2.3.    AIX卷扩展
自从AIX5.2以后AIX支持动态卷扩展,使卷能够在被主机和应用程序使用的情况下进行大小扩展。但是有以下限制:
-     卷不能属于并发卷组
-     卷不能属于FlashCopy, Metro Mirror, Global Mirror
 
以下步骤显示如何在AIX上扩展SVC卷:
1.   使用svcinfo lsvdisk vdisk_name来显示当前SVC卷大小
2.   匹配lsvdisk的vdisk_UID与pcmpath query device的SERIAL输出的hdisk能够被识别
3.   使用lspv hdisk显示当前AIX中卷大小
4.   使用svctask expandvdisksize命令来扩展SVC卷
5.   在卷大小扩展后,AIX需要更新这个配置信息,使用chvg –g vg_name。如果AIX没有返回任何信息,意味着命令成功;如果返回解释信息则没有成功
6.   使用lspv hdisk命令来显示新配置卷大小
4.2.4.    AIX系统中运行SVC命令
为了运行SVC CLI命令,必须安装SSH客户端。在SSH安装之前必须安装OpenSSL。
执行以下步骤:
1.   进入/.ssh目录

#cd /.ssh
 
2.   在AIX中生成SSH key文件

#ssh-keygen -t rsa -f filename
-t表示生成的key类型:rsa1,rsa2或dsa,rsa2就是rsa,SVC使用rsa2;
-f表示AIX服务器上私有和公有key文件名(公有key以.pub扩展名)。
例如:
A.   执行#ssh-keygen -t rsa
B.   显示以下消息:

Generating public/private rsa key pair. Enter file in which to save the key (//.ssh/id_rsa)
C.   输入Enter表示接受默认文件名,或者输入文件名 (例如 aixkey )
D.   显示以下消息:

Enter a passphrase (empty for no passphrase)
Enter same passphrase again:
E.   完成配置后显示SSH key创建完成。私有key文件为输入的文件名(例如aixkey),公有key文件以.pub为后缀(例如aixkey.pub)
 
3.   在SVC上使用 Master Console安装公有key。复制公有key到Master Console进行安装。
B.   在用户创建窗口,输入用户名称,密码和访问级别(Security Administrator为最高级别),选择SSH公有key文件
 
4.   AIX上确保私有和公有key在.ssh目录和用户的home目录
5.   连接到SVC

ssh -l admin -i filename svc
6.   也可以在AIX上直接执行SVC命令,例如

ssh -l admin -i filename svc svcinfo lshost
-l admin是SVC上的用户,-i filename是生成的私有key文件名,svc为SVC名称或IP地址
5.   Easy tier
判断SVC extent的I/O活动量,何时来将extent迁移到合适的性能层通常是个复杂的手工管理任务。Easy tier是一个性能优化工具,它会自动的迁移卷的extent到不同的MDisk存储层。
在一个多层存储池打开Easy tier功能,Easy tier会监视所有卷的extent的I/O活动和延时。基于这些监视数据它会创建一个迁移计划,将动态的移动高活动量或者hot extents到存储池内的一个更高的disk tier,同时它也会将活动量降下来的extent迁移到lower-tiered MDisk。因为这个迁移工作运行在extent级别,也通常也称为sub-LUN迁移。
Easy tier功能可以在存储池级别和在卷级别打开或者关闭。
在多层存储池环境中Easy tier每隔24小时创建一个迁移报告,即使在一个单层存储池中迁移时不可能的,但是这个统计功能仍然有用。

备注:p_w_picpath模式和sequential卷是不作为Easy tier自动迁移的对象。
 
5.1.Easy tier概念
Disk tier
由于disk或者RAID的类型不同,因此SVC集群的MDisk(LUN)将会有不同的性能属性。因此将存储层属性分配给各个MDisk,默认为generic_hdd。对于SVC6.1,SSD有个新的属性为generic_ssd。
SVC不会自动检测SSD MDisk,所有外部MDisk初始都是默认为generic_hdd层,因此管理员需要手工修改SSD层为generic_ssd。
 
单层存储池
单层存储池中MDisk应该有相同的硬件属性,例如相同的RAID类型,RAID阵列大小,disk类型,disk RPM和控制器性能属性。
 
多层存储池
多层存储池可以有不同类型的disk tier,例如同时有generic_hdd和generic_ssd属性的MDisk。
下图显示了存储池有2个不同的MDisk类型,分别为SSD和HDD阵列。
Easy tier process
Easy tier功能有4个主要过程:
Ø I/O监控
这个过程进行卷的I/O活动监控,为每个extent收集性能统计,在24小时计算平均值来生成一个报告。
Ø 数据移动顾问
数据移动顾问使用统计报告来决定哪些extents作为迁移到高性能层(SSD)的候选者,同时也区别哪些extents需要迁移回低层(HDD)。
Ø 数据迁移计划
根据数据移动顾问决定的extents,数据迁移计划为存储池建立extent迁移计划。
Ø 数据迁移器
数据迁移器来进行实际迁移卷的extent到高disk tier或迁移回低层。Extent迁移率是最大为30MBps,也就是3TB一天。
 
当重新放置卷extents时,easy tier执行以下操作:
ü 试着迁移高活动量的extent到SSD层,确保有空余extent可用。不是频繁访问的extent将迁回到HDD层
ü 以前迁移计划中没有执行迁移的extent在本次迁移中无效
 
Easy tier操作模式
Easy tier主要有3个操作模式:Off模式, Evaluation or measurement only modeAutomatic Data Placement or extent migration mode。
l Off模式:就是easy tier关闭。
 
l Evaluation or measurement only mode:
该模式为单层存储池的每个extent收集统计信息,这个典型用于只包含HDD的单层存储池。统计文件存放在SVC节点的/dumps目录下,文件名为dpa_heat.nodeid.yymmdd.hhmmss.data。
 
l Auto Data Placement or extent migration mode:
在这个模式下,必须设置存储池参数-easytier on或 auto,存储池中卷同样为-easytier on。存储池必须包含不同disk层的MDisk,也就是多层存储池。
动态数据移动对于主机服务器和应用数据来说是透明的。
这个模式也会创建统计文件,这个文件可以导入顾问工具,工具会产生一个extents迁移到SSD的报告,以及预测可能获得的性能提升。
为了激活easy tier,设置easy tier值为on,参数设置如下:
 
Storage Advisor Tool
IBM storqge advisor tool是一个运行在windows系统中的命令行工具,使用dpa_heat文件作为输入,产生活动报告的html文件。
提取统计文件可以通过CLI或者GUI。在GUI中导航选择Troubleshooting→Support,如下:
在windows下运行如下:

C:\Program Files\IBM\STAT>STAT
dpa_heat.nodenumber.yymmdd.hhmmss.data
在STAT目录下产生index.html文件,打开如下:
5.2.Easy tier实施考虑
先决条件
Easy tier不需要license,是作为V6.1的一部分。为了使用easy tier来迁移extent,不同的层需要有可用的存储空间,例如混合SSD和HDD。
 
实施规则
Easy tier对p_w_picpath或sequential卷是不支持自动数据移动的,对这些卷的I/O监控是支持的,但是不能迁移这些卷上的extents,除非转换这些卷为striped卷。
对镜像卷的每个copy进行自动数据移动和extent I/O监控是支持的,Easy tier对每个copy操作都是独立的。
当卷迁移出存储池,Easy tier自动数据移动模式在这个卷上将不再激活,即使卷迁移到有Easy tier功能的存储池。此时在迁移完成后需要重新启用这个卷的自动数据移动模式。
 
限制条件
Ø 当使用-force参数来移除MDisk的限制
当使用-force参数来删除MDisk时,该MDisk使用的extents迁移到相同层的MDisk中。如果该层没有足够的extents,则使用其他层的extents。
Ø 当迁移extents时限制
当卷开启自动数据移动,svctask migrateexts命令不能再这个卷上使用。
Ø 当迁移卷到另外存储池的限制
当SVC迁移一个卷到新的存储池,easy tier自动数据移动功能临时挂起,在迁移完成后,在generic SSD层和generic HDD层之间的easy tier自动数据移动功能会重新恢复,可能的话。
当SVC迁移卷到其他存储池,会尝试迁移每个extent到新存储池相同层的extent中,在目标层不可用情况下,使用其他层。
Ø 当迁移卷为p_w_picpath模式的限制
easy tier自动数据移动不支持p_w_picpath模式。当启用自动数据移动的卷迁移为p_w_picpath模式时,自动数据移动将不再激活。
Ø Image和sequential模式卷不支持自动数据移动
Ø Image模式卷支持evaluation模式
 
Best practices
Ø 总是设置存储池的-easytier值为on而不是默认的auto,使得对于单层存储池能够开启evaluation模式,当移动到多层存储池时不需更多的修改。
Ø 使用easy tier更适合用较小的存储池extent
6.   数据迁移
SVC可以在不中断主机对卷访问的情况下修改卷Extent与MDisk Extent的映射关系。这个功能可以用来执行卷迁移,应用于SVC的任何卷。
6.1.迁移操作
迁移可以执行在卷或者extent级别。SVC支持以下的迁移活动:
Ø 在一个存储池内迁移extents,重新分布卷的extent
Ø 从一个即将删除的mdisk上迁移extents到同一存储池的其他mdisk上
Ø 迁移卷到其他存储池
Ø 迁移卷来改变卷的虚拟化类型为p_w_picpath
Ø 在I/O组之间迁移卷
每个迁移活动在下面详细解释。
 
Ø 在一个存储池内迁移多个extents
使用migrateexts命令一次可以迁移多个extents,migrateexts的详细帮助信息查看:svctask migrateexts –h
在执行卷迁移时,这个命令从源mdisk上迁移卷所属的extents到同一存储池的目的mdisk上,同时可以指定一定数量的并行迁移线程(1到4)。
如果卷类型为p_w_picpath,那么当第一个extent被迁移时卷类型转变为striped,mdisk访问模式从p_w_picpath转变为managed。
 
Ø 从即将删除的mdisk上迁移出extents
当使用rmmdisk –force命令删除mdisk时,在删除之前将mdisk上正在被卷使用的extents首先被迁移到同一存储池的其他mdisk上。
如果即将删除的mdisk上存在同一卷的一个或多个extent,那么将卷的虚拟化类型设置为striped(如果此前是sequential或p_w_picpath)。
如果mdisk为p_w_picpath模式,当extents被迁移时,mdisk转变为managed模式。删除后转变为unmanaged模式。

Force选项:如果在即将删除的mdisk上有extent被卷使用且没有使用-force选项,则rmmdisk失败。
当使用-force时,如果存储池有足够的空余extents则mdisk上的所有extents迁移到同一存储池的其他mdisk上。mdisk的删除需要在迁移完成后才进行,如果存储池没有足够的空余extents,命令失败。
 
卷可以通过命令migratevdisk从一个存储池迁移到其他存储池中。不管卷的虚拟化类型(striped,sequential,p_w_picpath),卷都可以在存储池之间迁移。根据迁移类型使用不同命令:
为了迁移成功,源和目的存储池的extent大小必须相同。卷镜像功能也可以用于存储池之间迁移卷,而且这个方法可以用于不同extent大小的存储池。
迁移卷extents时,在目标存储池的一组mdisk上使用extent分配算法进行分配。
在迁移时可以指定并行化数量(1到4),只用一个线程的话将给系统带来较小的负载。
如果卷类型为p_w_picpath,那么当第一个extent被迁移时卷类型转变为striped,mdisk访问模式从p_w_picpath转变为managed。
在迁移时,卷仍然作为源存储池的一员显示出来,在迁移完成时才移动到新存储池。
 
Ø 迁移卷为p_w_picpath模式
在迁移卷为p_w_picpath模式的同时可以在存储池之间迁移。迁移源可以是managed或p_w_picpath模式卷,因此有4个可能性:
1.   在一个存储池内迁移p_w_picpath-to-p_w_picpath模式
2.   在一个存储池内迁移managed-to-p_w_picpath模式
3.   在存储池之间迁移p_w_picpath-to-p_w_picpath模式
4.   在存储池之间迁移managed-to-p_w_picpath模式
 
迁移条件:
ü 目标mdisk必须大于等于卷大小
ü 作为目标的mdisk必须是unmanaged状态
ü 如果迁移由于集群恢复操作而中断,在恢复完成后迁移能够重新开始
ü 在存储池之间迁移的话,卷行为与前面“在存储池间迁移卷”所述相同
 
不管迁移前卷的模式,在迁移过程中卷被认为是managed模式,同时涉及的mdisks被认为是p_w_picpath模式。在迁移命令完成后,卷被指定为p_w_picpath模式。
 
Ø 在I/O组之间迁移卷
通过svctask chvdisk命令可以在I/O组之间迁移卷,这个命令不支持 FlashCopy 和 Remote Copy。
在I/O组之间迁移卷,卷缓存必须首先被flush。在I/O组迁移时,SVC将尝试从缓存中destage卷的所有写数据,如果数据被pin在缓存,flush将失败,进而导致I/O组之间迁移失败。此时可以使用-force,如果使用了-force,但SVC不能destage所有写数据,这样会由于丢失缓存数据而导致卷内容被破坏。在flush时,卷操作在缓存write-through模式。

备注:不要迁移卷到离线的I/O组。在迁移卷之前确保I/O组在线,否则会丢失数据。
 
在迁移前必须quiesce主机I/O,理由如下:
-     如果缓存中有大量数据,因而需要一段时间来destage,迁移命令将超时
-     为了避免数据损坏,在迁移之前删除卷对应的SDD vpath。因此,迁移过程中,LUN上仍然在进行I/O操作时会引起数据损坏
 
在I/O组之间迁移卷时,可以指定优先节点,或者由SVC来分配优先节点。
如果卷是FlashCopy或Remote Copy的成员,则不能迁移到其他I/O组,也不能使用-force来强制迁移。因此,在I/O组之间迁移前必须删除FlashCopy映射和Remote Copy关系。
 
Ø 迁移过程监控
监控迁移过程命令:svcinfo lsmigrate
确定mdisk和卷的extent分配,使用以下命令:
在查询的mdisk上列出卷ID和卷的extent

svcinfo lsmdiskextent <mdiskname | mdisk_id>
在查询的vdisk上列出mdisk ID和卷所使用的extent

svcinfo lsvdiskextent <vdiskname | vdisk_id>
列出mdisk上可用的空余extent

svcinfo lsfreeextents <mdiskname | mdisk_id>
 
在迁移开始后,没有办法来停止迁移。迁移直接运行完成,除非由于错误而停止或挂起迁移,或者正在迁移的卷被删除。
如果想要启动,挂起,取消迁移或者控制迁移率,考虑使用卷镜像功能或者在存储池之间迁移卷。
6.2.迁移功能概览
6.3.从Image模式卷迁移数据
本节描述从p_w_picpath模式卷迁到managed模式卷。模式之间的转换:
Ø Unmanaged模式到managed模式
这个转换发生在mdisk加入存储池
Ø Managed模式到unmanaged模式
当mdisk从存储池移除
Ø Unmanaged模式到p_w_picpath模式
在unmanaged模式mdisk上创建p_w_picpath模式mdisk或者mdisk用作迁移到p_w_picpath模式的目标对象
Ø Image模式到unmanaged模式
存在2种情况:
-     当p_w_picpath模式卷被删除,则p_w_picpath模式卷对应的mdisk成为unmanaged
-     当p_w_picpath模式卷迁移到另外的mdisk上,原mdisk在所有数据被移除后转换为unmanaged模式
Ø Image模式到managed模式
当p_w_picpath模式卷迁移为managed模式
Ø Managed模式到p_w_picpath模式是不可能的
为了实现这个操作,先转换mdisk为unmanaged模式,然后再转换为p_w_picpath模式
转换图如下:
Image模式卷有个特别属性,卷的最后一个extent可以是部分extent,manage模式disk没有这个特性。
在p_w_picpath模式卷上执行任何类型的迁移活动,p_w_picpath模式disk必须首先转换为manage模式disk。如果p_w_picpath模式disk的最后extent为部分extent,则p_w_picpath模式卷的最后一个extent必须是第一个被迁移的extent,这种迁移是作为特例处理。
在这个特殊处理后,p_w_picpath模式卷成为managed模式卷。如果p_w_picpath模式disk没有最后一个extent为部分的话,无须特别处理,p_w_picpath模式卷简单的转换为managed模式卷。
 
迁移提示:
Ø 如果p_w_picpath模式卷在同一个存储池内迁移,可以执行这些迁移:
-    迁移单个extent,必须迁移p_w_picpath模式卷的最后一个extent(N-1)
-    迁移多个extent
-    从一个mdisk上迁移所有使用的extent
Ø 如果有2个存储池,一个用于p_w_picpath模式卷,一个用于manage模式卷,可以从一个存储池迁移卷到另外存储池
 
6.4.使用SVC GUI进行数据迁移
6.4.1.    在host和DS4700之间加入SVC
配置案例:Windows Server 2008,DS4700和DS4500。迁移前DS4700上的2个LUNs是直接映射给Windows Server 2008,当前zone配置:
迁移时zone配置:
为了在host和DS4700之间加入SVC,完成以下步骤:
1.   检查主机上的设备驱动
2.   检查SAN环境的zone配置
3.   关机
4.   修改DS4700上的LUN mapping,将LUN映射给SVC,移除主机的映射
5.   登陆SVC控制台,选择Physical Storage的Migration
6.   点击Start New Migration
7.   按照向导点击NEXT
8.   下图显示迁移准备环境信息,NEXT
9.   NEXT
10.显示设备发现窗口,点击Close
11.显示迁移可用的Mdisk,NEXT
12.标记迁移的Mdisk,NEXT
13.下图显示Mdisk导入过程,在导入过程中自动创建一个新存储池,在向导中可以看到创建p_w_picpath模式卷的命令,点击Close
14.创建用于映射卷的主机对象,点击New Host
15.填写主机信息
16.点击Create Host
17.主机创建完成,如下
18.下图显示能够映射给主机的所有可用卷,NEXT
19.选择卷后点击Map to Host
20.跳出如下框
21.右边栏显示映射给主机的卷,点击OK
22.下图显示卷映射给主机过程,点击Close
23.映射完成后,注意到Host Mapping下面显示Yes
24.选择迁移的存储池,本例为DS4700_2,NEXT
25.向导自动通过卷copy来迁移
26.数据迁移开始,点击Finish
27.下图表示迁移进程
28.在SVC界面选择Volumes→Volumes by host,查看主机的卷
29.下图显示主机所有卷(copy0和copy1)
图中所示迁移卷实际是一个镜像卷,一个copy位于p_w_picpath模式池,另一个位于managed模式池,管理员可以从镜像中分离copy。
6.4.2.    使用CLI在host和DS4700之间加入SVC
Ø 查看当前的存储池
Ø 创建存储池,用于存放迁移到SVC的LUNs。这样在LUNs的导入过程中不会影响其他存储池
Ø 查看新创建的存储池
Ø 创建p_w_picpath模式卷
Ø 查看新创建的p_w_picpath模式卷
Ø 将卷映射给host
Ø 将p_w_picpath模式卷复制到其他存储池,形成镜像卷
Ø 检查卷状态,卷为镜像卷,故type为many
6.4.3.    迁移managed模式卷为p_w_picpath模式
迁移managed卷为p_w_picpath卷须执行以下步骤:
1.   创建存放p_w_picpath模式卷的存储池,SVC界面选择Physical Storage→Pools
2.   创建空的存储池,如下:
提示创建了一个空的存储池,点击OK
3.   下图显示存储池创建过程,点击Close
4.   在Volume→All Volumes界面中选择需要迁移为p_w_picpath模式的卷,在下列菜单选择Export to Image Mode
5.   选择迁移目标Mdisk,点击NEXT
6.   选择p_w_picpath模式卷的存储池
7.   卷被导出为p_w_picpath模式,放入目标存储池,过程如下:
8.   在SVC界面的Physical Storage→Mdisks,注意Mdisk现在为p_w_picpath模式的Mdisk
9.   重复以上步骤来迁移其他需要转换为p_w_picpath模式的卷
6.4.4.    迁移p_w_picpath模式卷为p_w_picpath模式
迁移p_w_picpath模式卷从一个存储子系统到其他存储子系统可以使用卷迁移的p_w_picpath模式到p_w_picpath模式处理过程而无需通过managed模式。在迁移时数据仍然可用,这个迁移过程与6.4.3相似。
本例DS4700上LUN以p_w_picpath模式迁移到DS4500存储子系统。Mdisk5为DS4700上的LUN映射给SVC,首先将Mdisk5变更为p_w_picpath模式卷,然后迁移到DS4500中的Mdisk上。具体迁移过程:
1.   选择Mdisk5,点击Action中Import
2.   跳出导入向导页面,选择NEXT
3.   因为不需要迁移到managed卷存储池所以不要选择存储池,直接Finish
4.   跳出告警信息框,表示卷将放入临时池,点击OK
5.   导入过程启动,系统自动创建临时存储池Migrationpool_8192 (8 GB)和p_w_picpath卷,点击Close
6.   如下图Mdisk5为p_w_picpath模式
7.   创建存储池Migration_out,extent size与自动创建的存储池Migrationpool_8192相同,为8GB。选择Physical Storage→Pools
8.   点击New Pool来创建一个空存储池,在Advanced Settings中选择8GB
9.   下图显示存储池没有任何Mdisk,点击Finish来创建空存储池
10.跳出告警信息,如下:选择OK
11.创建过程如下:选择Close
12.用于迁移的空存储池创建完成后,在SVC界面选择Volumes→olumes by Pool
13.选择存储池Migrationpool_8192中需要迁移出去p_w_picpath卷,在Action中选择Export to Image Mode
14.选择目标Mdisk,NEXT
15.选择之前创建的空存储池作为目标池
16.导出卷过程如下,选择Close
17.下图显示Mdisk位于存储池Migration_out
18.重复以上步骤来迁移其他p_w_picpath模式卷
 
6.4.5.    从SVC移除p_w_picpath模式卷
如果数据位于p_w_picpath模式卷上,可以从SVC移除卷,然后重新映射给host。根据迁移环境,在移除p_w_picpath模式卷之前可能需要执行以下过程:
Ø 6.4.3迁移managed模式卷为p_w_picpath模式
Ø 6.4.4迁移p_w_picpath模式卷为p_w_picpath模式
在SVC中移除p_w_picpath模式卷使用delete vdisk命令,如果命令成功,底层存储控制器保持p_w_picpath模式卷上数据一致,也就是所有fast write数据将被flush到底层LUN。删除p_w_picpath模式卷将使得卷对应的Mdisk在存储池变为unmanaged模式。

备注:这种情况只适应p_w_picpath模式卷,如果删除一个正常卷的话,所有数据将被删除。
检查在host是否安装正确的设备驱动。
切换回存储子系统需要执行以下步骤:
1.   关机
2.   在存储子系统中编辑LUN masking,Remove the SVC from the LUN masking, and add the host to the masking
3.   打开Volumes by Host窗口,查看哪些卷映射给了服务器
4.   选择服务器和对应的卷,右键选择Unmap all Hosts
5.   验证unmap过程如下,点击Unmap
6.   下图显示卷被移除
7.   重复步骤3-5来移除其他p_w_picpath模式卷
8.   启动服务器
6.5.迁移AIX SAN disk到SVC卷
本节描述从DS4700通过p_w_picpath模式卷迁移LUNs到SVC,然后将p_w_picpath模式卷转化为managed模式卷,然后再转换为p_w_picpath模式卷,迁移到DS4500上,重新映射回AIX服务器。
初始环境如下:
6.5.1.    迁移LUNs到SVC
连接SVC到SAN网络需要完成以下任务:
Ø 安装SVC节点
Ø 创建和配置SVC集群
Ø 创建zone
-     SVC节点zone(黑色区域)
-     存储zone(红色区域)
-     主机zone(蓝色区域)
-     绿色区域为原有zone
 
Ø 创建存储池
当移动AIX LUNs到SVC时,首先使用p_w_picpath模式,因此创建存储池存放p_w_picpath模式mdisk,命名为aix_imgmdg

备注:不要手工将包含数据的unmanaged Mdisk加入Mdisk Group,否则会丢失数据,必须首先成为p_w_picpath模式卷然后通过迁移到striped Mdisk,来保持数据的完整性。
Ø 创建主机定义
在zone配置完后,SVC能够看见AIX服务器的HBA卡。首先取得AIX服务器的WWPN号,为10000000C932A7FB
命令svcinfo lshbaportcandidate列出没有分配给主机的所有WWPN号,如果没有显示的话则zone配置有问题。
在SVC能够看见主机(Kanaga)后,创建主机条目和分配WWN号:
Ø 验证SVC能够看见存储子系统
使用svcinfo lscontroller命令:
Ø 取得disk序列号
如果SVC中能够看到很多可用的unmanaged Mdisks,为了避免创建卷在错误的Mdisk上,因此在创建p_w_picpath模式卷之前检查序列号。如果使用DS4000,Storage Manager会显示LUN序列号。例如右击LUN选择属性,显示kanage_lun0
Ø 迁移LUNs到SVC
因为只是迁移存放应用程序和数据文件的LUN,所以无需重启AIX系统。唯一要求是unmount文件系统和varyoff VG来确保数据一致性。
移动LUNs到SVC中需要完成以下步骤:
1.   验证SDD安装
2.   unmount和varyoff VG
A.   停止使用LUNs的应用程序
B.   使用umount命令来unmount文件系统
C.   如果文件系统是LVM卷,使用varyoffvg命令来varyoff卷组
3.   使用Storage Manager将LUNs从AIX服务器上unmap和unmask,重新映射到SVC
4.   在SVC使用svctask detectmdisk来发现新盘,命名为mdiskX,X为下一个可用mdisk号(从0开始)

重要:匹配MDisk序列号(svcinfo lsmdisk的UID)与Storage Manager中序列号
5.   在确认完mdisk后,重命令这些mdisk,避免以后混淆
6.   使用svctask mkvdisk命令的-vtype p_w_picpath选项创建p_w_picpath模式卷
7.   映射新创建的p_w_picpath模式卷给主机
8.   执行以下步骤将p_w_picpath模式卷online:
A.   AIX系统中移除原来hdisk定义
B.   运行cfgmgr –vs命令来重新发现LUNs
C.   如果应用程序在LVM卷上,重新发现VG,然后运行varyonvg来激活卷组
D.   Mount文件系统
E.   启应用
 
6.5.2.    迁移p_w_picpath模式为striped卷
在AIX运行时,迁移p_w_picpath模式卷到striped卷,且卷的extents跨越3个mdisk。
Ø 准备用于striped卷的mdisk
主要操作如下:
1.   创建和分配3个LUNs给SVC
2.   在SVC中发现这些LUN作为Mdisk
3.   重新命名这些LUNs为有意义的名称
4.   创建新存储池
5.   把这些LUNs放入存储池
Ø 迁移p_w_picpath模式卷为striped卷
使用命令svctask migratevdisk迁移p_w_picpath模式卷为striped卷。在迁移运行时,AIX能够继续使用,并且可以进行文件访问。使用svcinfo lsmigrate命令来检查迁移进程;在迁移到新存储池时,svcinfo lsmdisgrp会命令显示原存储池的空余大小在增加。
在迁移完成后,下图显示卷跨越aix_vd存储池的3个mdisk,原存储池成为空的。
至此迁移到SVC全部完成,可以从SVC中移除原来的Mdisk(aix_imgmdg池中2个LUN),从存储子系统中移除这些LUNs。
6.5.3.    从SVC中迁移卷到存储子系统
将LUNs从SVC迁移回存储子系统中,需要先转换卷为p_w_picpath模式卷。如果需要迁移数据到一个新的存储子系统,假定新存储子系统已经连接到SAN网络,且SAN交换机能看见这个存储子系统,如下图:
Ø Making fabric zone changes
第一步就是进行SAN配置,设置正确的zone,将新存储子系统加入到红色区域,这样SVC能够看见这个存储子系统。创建绿色区域,使得主机在从SVC移除后,能够直接访问存储子系统。
在所有zone配置完成后,SVC能够使用svcinfo lscontroller命令来看见新存储子系统,也可以使用svctask chcontroller –name命令来重命名控制器为一个有意义的名称。
Ø 创建新LUNs
在新存储子系统DS4500上创建2个LUNs并进行mask,使的SVC能够看见这2个LUNs,最终将这些LUNs直接映射给主机。为了检查SVC能看见LUNs,使用svctask detectmdisk命令,如下图。
本例中使用DS4500上2个10GB LUNs,且在DS4700存储子系统上已经删除了原来用作p_w_picpath模式的2个LUNs,因此这里显示为offline。
新分配的2个LUN 为mdisk29和mdisk30,重命名Mdisk,另外创建存储池来存放新的Mdisks
此时SVC环境已经准备好,可以迁移为p_w_picpath模式卷。
Ø 迁移managed卷为p_w_picpath模式
在AIX运行期间,迁移managed卷到新的mdisk上成为p_w_picpath模式卷。
在迁移过程中,AIX是不会感知数据在进行迁移的。
Ø 从SVC中移除LUNs
为了AIX能够直接从绿色区域zone看见LUNs,需要进行停机,重新map这些LUNs。因为本次使用的LUNs只有数据文件且单独使用一个VG,可以在不需重启情况下进行map,唯一要求就是unmount文件系统和varyoff VG来确保数据的一致性。
按照以下步骤从SVC中移除LUNs:
1.   检查服务器使用的设备驱动程序,因为本次迁移到DS4500,所以能够继续使用SDD
2.   关闭应用程序和unmount文件系统
A.   关闭需要这些LUNs的应用程序
B.   使用umount命令unmount文件系统
C.   如果文件系统为LVM卷,需要使用varyoffvg命令
3.   使用svctask rmvdiskhostmap命令来移除卷的映射,svcinfo lshostdiskmap命令检查确认
4.   在SVC中使用svctask rmvdisk命令移除卷,使得mdisk成为unmanaged。

Cached data:当执行svctask rmvdisk时,SVC首先检查缓存中有没有该卷的脏数据,如果存在没有提交的缓存数据,命令失败,出现如下信息:
CMMVC6212E The command failed because data in the cache has not been
committed to disk
此时需要等缓存数据提交到底层存储子系统才能进行删除卷。
SVC在最后一个对卷的写活动后自动destage uncommitted cached data two minutes。How much data there is to destage, and how busy the I/O subsystem is, determine how long this command takes to complete。
检查卷在缓存中是否有未提交数据,使用svcinfo lsvdisk命令,检查fast_write_state属性值,属性值含义:
Empty: No modified data exists in the cache.
not_empty: Modified data might exist in the cache.
Corrupt: Modified data might have existed in the cache, but any modified data has been lost.
5.   使用Storage Manager软件将LUNs从SVC上unmap和unmask,重新映射到AIX

重要:到此步骤仍然能够在没有数据丢失情况下进行回退所有操作。
Ø Remap LUNs到SVC
Ø 运行svctask detectmdisk命令恢复mdisk
Ø 使用svctask mkvdisk命令重新创建卷
Ø 使用svctask mkvdiskhostmap命令remap卷到服务器
在执行完这个步骤后,可能就不能回退了,回退有数据丢失的风险。
此时可以在AIX服务器上来访问LUNs。如果所有的zone和mapping都正确设置完成后,AIX能够访问LUNs。
1.   运行cfgmgr –S命令来发现存储
2.   使用lsdev –Cc disk查看新的hdisk
3.   移除SVC属性hdisk定义,下图分别显示SDD与SDDPCM的移除方法。
4.   如果应用程序和数据在LVM卷上,重新发现VG,然后运行varyonvg来激活VG
5.   使用mount挂载文件系统
6.   启动应用程序
7.   确保mdisk从SVC中移除,使用svctask detectmdisk命令检查,mdisk首先被认为是offline,然后SVC判断没有卷在这些mdisk上则自动被移除。
 
6.6.使用SVC进行存储迁移
SVC不是主要用于存储迁移,但是SVC的特性可以用作存储迁移工具。因此,可以临时将SVC加入SAN网络,将数据从一个存储子系统迁移到另外存储子系统。SVC能够复制 p_w_picpath模式卷直接从一个子系统到另外子系统而不影响主机I/O。The only downtime that is required is when the SVC is added to and removed from your SAN environment.
使用SVC只用作迁移目的,执行以下步骤:
1.   将SVC加入SAN网络
2.   准备SVC
3.   根据操作系统,unmount与迁移LUNs有关的文件系统或者关机
4.   在存储和主机之间加入SVC
5.   mount LUNs或者启动主机
6.   开始迁移
7.   在迁移完成后,unmount与迁移LUNs有关的文件系统或者关机
8.   从SAN中移除SVC
9.   mount LUNs或者启动主机
10.迁移完成
 
使用SVC进行存储迁移,执行前面章节描述的步骤:
Ø 6.4.1在主机系统和存储DS4700之间加入SVC
Ø 6.4.4迁移p_w_picpath模式卷为p_w_picpath模式
Ø 6.4.5从SVC移除p_w_picpath模式卷
 
7.   Best Practice
7.1.存储池
如果存储池中某个Mdisk离线则会导致整个存储池离线。例如一个有40个array的存储池,每个array为1TB,如果其中一个array有问题(也就是导致Mdisk离线)则整个存储池的40个array全部离线。基本设计思想:
Ø 一个存储子系统只能属于一个集群
Ø 每个存储池的Mdisk只来自于一个存储子系统
Ø 每个存储池的Mdisk不超过10个array
Ø 建议每个应用程序使用一个存储池

备注:对于大多数集群1-2PB足够满足要求。Best Practice为使用256MB extent,对于较大空间的集群,选择512MB extent。如果使用XIV,推荐extent 1GB。
推荐存储池的array数量:
推荐将整个array作为一个LUN,特别是对于中端存储子系统。多个LUN会导致显著的性能降低,主要是由于较小的cache size和不能充分使用cache,另外同一array上多个LUN的IO队列会加重array负载。对于高端存储例如DS8000系列,有较大的cache因此影响较小。如果一个array有多个LUNs,推荐将LUN放入同一存储池。
存储池的LUN选择考虑以下内容:
Ø Array大小
Ø LUN大小
Ø Array中LUN数量
Ø Array的物理disk数量

Important:建议LUN使用整个array大小。
存储池中的所有LUN(Mdisk)必须有相同的性能属性。如果存储池中有不同的属性Mdisk,那么存储池性能取决于性能最差的Mdisk。存储池中LUN属性:
Ø LUNs有相同的类型
Ø LUNs 有相同的 RAID级别
Ø LUNs有相同的RAID宽度(array中物理disk数量)
Ø LUNs容量相同
7.2.Host
即使SVC至多支持8路径,建议使用4路径。映射给host的卷需要使用host资源,例如内存和处理时间,路径数越多资源使用越多。在同样路径数情况下,使用较少的大LUNs而不是较多的小LUNs,然而,可能需要优化队列深度和I/O buffer。

备注:将Fibre Channel tape和Fibre Channel disks放在单独的HBA卡上。
在创建host mapping时,host端port能够在SVC节点的port上看见卷。Nodes always present the logical unit (LU) that represents a specific volume with the same LUN on all ports in an I/O Group。这个LUN mapping称为Small Computer System Interface ID (scsi id)。SVC按照升序自动分配SCSI ID,也可以用户指定。这也是卷的唯一标识称为LUN序列号。
推荐分配SAN boot OS卷使用最小的SCSI ID(0),然后再分配数据用卷。如果需要在多个host之间共享卷,控制卷的SCSI ID使得在host之间保持一致,这样简化卷的管理。
在使用p_w_picpath模式将host迁移到SVC环境时,按照原先在存储子系统上分配LUNs给host的顺序来分配卷。
 
l Host path
大多数操作系统将每个路径的卷作为一个单独的存储设备,因此需要在host中安装多路径软件,由多路径软件来管理卷的路径,提供给操作系统一个单一的存储设备。
创建卷时需选择优先节点。对卷进行I/O操作时,处理I/O的节点将数据复制到搭档节点,从SVC节点写数据到底层存储只能通过优先节点。因此当一个新的写或读操作来到非优先节点时,节点需要发送额外的信息到优先节点检查缓存中是否有数据或者数据处于destage过程中,所以通过优先节点访问卷性能将更好。
IBM多路径软件(SDD,SDDPCM或SDDDSM)将会检查每个卷的优先路径设置,管理路径的使用:
Ø 非优先路径:failover only
Ø 优先路径:选择多路径算法(默认load_balance)
 
将卷的优先节点在SVC节点之间均衡分布。如果优先节点离线,所有I/O将以write-through模式在非优先节点上处理。
 
l 动态重配置
正常情况下给host增加新存储,然后使用cfgmgr来发现设备,这个操作是安全的,因为没有老的信息需要移除。
在移除卷是需要注意。用户移除host map后,卷变为不可用,SVC报告port上没有该设备,使用datapath query device命令显示一个closed,offline,invalid或dead状态:
下次分配一个新卷映射给host,如果SCSI ID设置为系统分配的默认值时,SCSI ID可能会重用。此时host可能会混淆新设备与老设备定义,因为老设备信息仍然在ODM中,系统有可能得到2个设备,这2个设备在ODM中有相同的设备定义信息。如下例vpath189和vpath190有相同的hdisk定义,实际有着2个不同的设备序列号:
多路径软件SDD能够认出为一个新设备,然而,如果用户没有删除原配置数据,ODM中仍然存在老的hdisk和vpath定义,导致host混淆,因为SCSI ID对应的设备序列号发生变化了。为了避免这样的情况,在映射新卷给host之前,在ODM中移除hdisk和vpath信息(rmdev –dl vapth189,rmdev –dl hdisk1654等)。
 
l  Queue depth
Queue depth是在设备上能够并行I/O操作的数量。在host中控制queue depth可以通过设置adapter处理I/O数和LUN的最大queue depth来实现,也有多路径软件设置,例如qdepth_enable。Host I/O将被转化为Mdisk I/O,由SVC提交I/O给底层存储。Host允许用户控制卷的queue depth,SVC控制Mdisk的queue depth,无须用户干预。
After SVC has submitted I/Os and has “Q” I/Os per second (IOPS) outstanding for a single MDisk (that is, it is waiting for Q I/Os to complete), it will not submit any more I/O until some I/O completes. That is, any new I/O requests for that MDisk will be queued inside SVC.
The homogeneous queues must meet the following criteria:
ü The queued commands must be shared among all paths rather than providing servers with additional resources.
ü The volumes must be distributed evenly among the I/O groups in the clustered system.
Set the queue depth for each volume on the servers using the following calculation
q = ((n * 7000) / (v * p * c))
where
-     q = the queue depth per device path
-     n = the number of nodes in the system
-     v = the number of volumes configured in the system
-     p = the number of paths per volume per host. A path is a route from a server Fibre Channel port to a SAN Volume Controller Fibre Channel port that provides the server access to the volume.
-     c = the number of hosts that can concurrently access each volume. Very few applications support concurrent access from multiple hosts to a single volume. This number typically is 1.
Consider the following example:
An eight-node SAN Volume Controller system (n = 8)
4096 volumes (v = 4096)
One server with access to each volume (c = 1)
Each host has four paths to each volume (p = 4)
The calculation is rounded up to the next complete digit:
((8 * 7000) / (4096 * 4 * 1)) = 4
The queue depth in the operating systems must be set to four concurrent commands per path.