Shared Storage Pool 的维护管理
Shared Storage Pool 的概念
共享存储池是一个 SAN 存储设备的池,这些设备可以跨多个 VIO 服务器。共享存储池是由 2 部分构成的:1.VIO 服务器群集;2. 一个带有全局命名空间的分布式数据对象库。分布式数据对象库使用专门为 VIO 服务器存储虚拟化功能开发的群集文件系统。
当 VIO 服务器启用共享存储池的时候,VIO 服务器通过逻辑单元(logical units)来使用存储池中的空间,并将逻辑单元映射给客户端分区使用。逻辑单元是一个基于文件的存储设备。在客户端分区则将其识别为一个虚拟 SCSI 磁盘。逻辑单元包含了虚拟块和一个虚拟块地址空间。共享存储池使用的物理卷被视为一些物理块的聚合,这些物理块通过物理卷上的元数据进行管理。共享存储池中的物理卷包含了物理块和一个物理块地址空间。系统通过 VATL(Virtual Address Translation Look aside) 来处理从虚拟块地址到物理块地址的转换。
图 10.SSP 逻辑架构图
相对于 Storage Pool, Shared Storage Pool 有以几个特征:
- SSP 中的磁盘只能是存储提供的,而不能是 VIOS 的本地盘。
- SSP 中的磁盘不可删除(只能被替代)。
- SSP 的空间不能减少。
- SSP 可用空间的增加 , 只能通过两种方式:1. 向 SSP 中增加新的 PV。2. 将 SSP 中现有的磁盘用容量更大的一块磁盘替代(替代的盘的容量必须大于或者等于被替代磁盘的容量)。
Shared Storage Pool 的新特性
从 VIOS2.2.2.0 开始,SSP 的功能有所增强,体现在以下 2 个方面:
- 一个 SSP Cluster 支持的 VIOS 节点的数量由 1 个增加到 16 个、SSP 中一个 VIOS 可以支持的 VIOC 的数量由 1 个增加到 200 个,这使 SSP 能够跨物理服务器,为多个 VIOC 提供服务。
- 一个 SSP 可支持的最大物理磁盘数量由 1 个增加到 1024 个、一个 SSP 支持的单个磁盘的容量由 5GB 增加到 16TB、一个 SSP 支持的总容量由 10GB 增加到 512TB、每个 virtual disk 的支持最大容量由 1GB 增加到 4TB、一个 SSP 支持的 Virtual disks 最大数量由 1 个增加到 8192 个,这都使 SSP 能够提供的存储空间由以前 GB 的数量级产生了质变化。
表 1.SSP 的新特性
Shared Storage Pool 的管理管理方式
Shared Storage Pool 管理方式有几个:
- 通过 System Director 进行图形化管理
- 通过 VIOS 上的 cfgassist 工具进行管理
- 通过 VIOS 上的命令行进行管理
通过 System Director 对 SSP 进行管理操作简单,直接点击鼠标即可完成 SSP cluster 的创建,如下图步骤(以下只列出关键步骤的截图以作介绍。)
首先在 System Director 中选中一个 VIOS,在下拉菜单中选择“System Configuration”,然后选择“Create Shard Storage Pool”
图 11.System Director 创建 SSP
输入 SSP Cluster 的名字:
图 12.System Director 创建 SSP
选择 SSP cluster 的 Repository Disk。
图 13.System Director 创建 SSP
通过 System Director 对 SSP 进行管理优点很明显,但是需要客户的虚拟化环境有 System Director 环境,因此并不适合所有情况。
下面,我们介绍使用 VIOS 上的 cfgssist 工具进行管理。
在 VIOS2.2.2.0 中 , 在 VIOS 中可以使用菜单方式来配置 SSP cluster, 其优点是配置和管理非常方便。缺点是不利于客户实现脚本化管理。
在 VIOS 中执行 cfgassist 命令:
$cfgassist
选择“Shared storage Pools”,然后选择“Manage cluster and VIOS Nodes”
在接下来的界面里,就可以配置 SSP cluster 了:
SSP cluster 创建成功以后,可以给 SSP cluster 增加 VIOS 节点:
在下图中,依次给 SSP cluster 增加其余的 VIOS。
下一步的操作就是创建逻辑单元并映射给 VIOC: 首先选择“Manage Logical Units in storage pool”
选择“Create and Map Logical Unit”
然后选择对应的 SSP cluster:weixinyuSSP,对应的 SSP:SSP1。 创建一个 1000MB 的逻辑单元:
将光标移动到“Virtual Server Adapter to Map”,按 F4 键,可以列出已经的 vhosts 设备:
在我的试验中,vhosts0 和 vhost1 分别指向两个 VIOC。如果想将这个逻辑单元映射给两个 VIOC,那就分别添映射两次,这样两个 VIOC 就都能识别到同一个磁盘了。 在本试验中,有 4 个 VIOS,如果想让 VIOC 上的一个磁盘有 4 条路径,就还需要在另外三个 VIOS 上执行相同的映射操作。 由于本文主要介绍以命令行方式配置 SSP cluster,因此关于菜单配置,我们不再详细描述。 下面我将主要介绍使用命令行方式配置 SSP cluster 并且进行管理。
Shared Storage Pool 的配置
创建和配置 cluster
在试验中,有四个 VIOS,名字分别为:VIOS1,VIOS2,VIOS3,VIOS4,VIOS 的版本均为 VIOS2.2.2.0:
首先将 4 个 VIOS 的 /etc/hosts 文件中配置好四个 VIOS 之间相互的解析关系:
代码语言:javascript复制 172.16.24.31 vios1
172.16.24.32 vios2
172.16.26.31 vios3
172.16.26.32 vios4
代码语言:javascript复制 $ioslevel
2.2.2.0
配置一个 SSP Cluster,确保四个 VIOS 节点可以识别同一个物理硬盘,以作为 Repository Disk:
代码语言:javascript复制 $hostname
vios1
$lspv |grep -i fd79b
hdisk5 00f6b486eb3fd79b None
代码语言:javascript复制 $hostname
vios2
$lspv |grep -i fd79bHdisk5 00f6b486eb3fd79b None
创建一个 SSP Cluster,命名为:weixinyuSSP,Repository Disk 使用 hdisk5,SSP 名字命名为 SSP1,SSP 中加入一个数据磁盘 hdisk6。
代码语言:javascript复制$cluster -create -clustername weixinyuSSP -repopvs hdisk5 -spname SSP1
-sppvs hdisk6 -hostname vios1
Cluster weixinyuSSP has been created successfully.
查看新创建的 SSP cluster:
代码语言:javascript复制 $cluster -list
CLUSTER_NAME: weixinyuSSP
CLUSTER_ID: 1742e92c5bba11e2a25d00215e8ab240
代码语言:javascript复制 $lssp -clustername weixinyuSSP
POOL_NAME: SSP1
POOL_SIZE: 65536
FREE_SPACE: 64373
TOTAL_LU_SIZE: 0
OVERCOMMIT_SIZE: 0
TOTAL_LUS: 0
POOL_TYPE: CLPOOL
POOL_ID: FFFFFFFFAC10181F0000000050EFB476
接下来,在第一个 VIOS 上,将其余 3 个 VIOS 依次加入 SSP cluster 中:
代码语言:javascript复制$cluster -addnode -clustername weixinyuSSP -hostname vios2Partition vios2 has been added to the weixinyuSSP cluster.
$cluster -addnode -clustername weixinyuSSP -hostname vios3
Partition vios3 has been added to the weixinyuSSP cluster.
$cluster -addnode -clustername weixinyuSSP -hostname vios4
Partition vios4 has been added to the weixinyuSSP cluster.
查看 cluster 中节点信息:
代码语言:javascript复制 $cluster -status -clustername weixinyuSSP
Cluster Name State
weixinyuSSP OK
Node Name MTM Partition Num State Pool State
vios1 8233-E8B0206B486P 6 OK OK
vios3 8233-E8B0206B486P 8 OK OK
vios4 8233-E8B0206B486P 9 OK OK
vios2 8233-E8B0206B486P 7 OK OK
列出 SSP 中已有的磁盘:
代码语言:javascript复制 $lspv -clustername weixinyuSSP -sp SSP1
PV NAME SIZE(MB) PVUDID
hdisk4 65644 26112001738004E741E8A072810XIV03IBMfcp
列出 VIOS 上可被添加到 SSP 的磁盘:
代码语言:javascript复制 $lspv -clustername weixinyuSSP -capable
PV NAME SIZE(MB) PVUDID hdisk0 16411 26112001738004E741E82072810XIV03IBMfcp
hdisk1 16411 26112001738004E741E83072810XIV03IBMfcp
hdisk2 65644 26112001738004E741E88072810XIV03IBMfcp
hdisk5 65644 26112001738004E741E8B072810XIV03IBMfcp
然后,将四块磁盘全部加入到 SSP1 中:
代码语言:javascript复制 $chsp -add -clustername weixinyuSSP -sp SSP1 hdisk0
Current request action progress: % 5
Current request action progress: % 5
Current request action progress: % 80
Current request action progress: % 100
$chsp -add -clustername weixinyuSSP -sp SSP1 hdisk1
$chsp -add -clustername weixinyuSSP -sp SSP1 hdisk2
$chsp -add -clustername weixinyuSSP -sp SSP1 hdisk5
再次进行验证,四个磁盘已经加入到 SSP 中:
代码语言:javascript复制 $lspv -clustername weixinyuSSP -sp SSP1
PV NAME SIZE(MB) PVUDID hdisk4 65644 26112001738004E741E8A072810XIV03IBMfcp
hdisk0 16411 26112001738004E741E82072810XIV03IBMfcp
hdisk1 16411 26112001738004E741E83072810XIV03IBMfcp
hdisk2 65644 26112001738004E741E88072810XIV03IBMfcp
hdisk5 65644 26112001738004E741E8B072810XIV03IBMfcp
SSP 的可用空间已经增加:
代码语言:javascript复制 $lssp -clustername weixinyuSSP
POOL_NAME: SSP1
POOL_SIZE: 229248
FREE_SPACE: 225302
TOTAL_LU_SIZE: 0
OVERCOMMIT_SIZE: 0
TOTAL_LUS: 0
POOL_TYPE: CLPOOL
POOL_ID: FFFFFFFFAC10181F0000000050EFB476
创建和配置逻辑单元
逻辑单元(logical unit)源于 SSP,为 VIOC 提供磁盘空间。VIOS 可以将一个逻辑单元映射给一个或者多个 VIOC。
逻辑单元有两种类型:
瘦体:
- 这种类型是默认的逻辑单元类型
- 只有当 VIOC 有空间需求的时候才进行分配。
- 只有当 VIOC 真正使用逻辑单元的空间时,SSP 中的可用空间才会减少
胖体:
- 当将逻辑单元映射给 VIOC 的时候,空间就会分配。
- 当讲逻辑单元分配给 VIOC 的时候,SSP 中的可用空间立即减少。
下面,我们将创建逻辑单元,默认的类型是瘦体,创建以后瘦体的逻辑单元 weixinyuvioc1 后,SSP1 的可用空间并未减少:
代码语言:javascript复制 $lssp -clustername weixinyuSSP
POOL_NAME: SSP1
POOL_SIZE: 229248
FREE_SPACE: 225302
TOTAL_LU_SIZE: 0
OVERCOMMIT_SIZE: 0
TOTAL_LUS: 0
POOL_TYPE: CLPOOL
POOL_ID: FFFFFFFFAC10181F0000000050EFB476
代码语言:javascript复制 $mkbdsp -clustername weixinyuSSP -sp SSP1 12G -bd weixinyuvioc1
Lu Name:weixinyuvioc1
Lu Udid:75c8e72e28845ce65112e27b3822891f
代码语言:javascript复制 $lssp -clustername weixinyuSSP
POOL_NAME: SSP1
POOL_SIZE: 229248
FREE_SPACE: 225302
TOTAL_LU_SIZE: 12288
OVERCOMMIT_SIZE: 0
TOTAL_LUS: 1
POOL_TYPE: CLPOOL
POOL_ID: FFFFFFFFAC10181F0000000050EFB476
如果想创建胖体逻辑单元,需要指定参数 -thick:
代码语言:javascript复制 $mkbdsp -clustername weixinyuSSP -sp SSP1 11G -bd weixinyuThickvioc1 -thick
Lu Name:weixinyuThickvioc1
Lu Udid:23fdaf97a4fd76977155eb23e140f877
胖体的逻辑单元创建以后,SSP 的可用空间会立即减少:
代码语言:javascript复制 $lssp -clustername weixinyuSSP
POOL_NAME: SSP1
POOL_SIZE: 229248FREE_SPACE: 214037
TOTAL_LU_SIZE: 23552
OVERCOMMIT_SIZE: 0
TOTAL_LUS: 2
POOL_TYPE: CLPOOL
POOL_ID: FFFFFFFFAC10181F0000000050EFB476
查看已经创建好的逻辑单元:
代码语言:javascript复制$lssp -clustername weixinyuSSP -sp SSP1 -bd
Lu Name Size(mb) ProvisionType %Used Unused(mb) Lu UdidweixinyuThickvioc111264 THICK 100% 0
23fdaf97a4fd76977155eb23e140f877weixinyuvioc1 12288 THIN 0% 12288
75c8e72e28845ce65112e27b3822891f
接下来,我们将已将创建好的两个逻辑单元映射给 VIOC weixinyuvioc1,用于其系统安装和数盘使用。
首先,创建一个 VIOC,这个 VIOC 应该有 4 个 VSCSI 设备,分别指向 4 个 VIOS。
图 14.HMC 查看 VSCSI 设备
分别在四个 VIOS 上查看 VSCSI 对应的 VSCSI 设备:
代码语言:javascript复制 $lsmap -all
SVSA Physloc Client Partition ID
--------------- -------------------------------------------- ------------------
vhost0 U8233.E8B.06B486P-V6-C11 0x00000001
VTD NO VIRTUAL TARGET DEVICE FOUND
将已经创建好的两个逻辑单元映射给 vhost0:
代码语言:javascript复制$mkbdsp -clustername weixinyuSSP -sp SSP1 -bd weixinyuvioc1 -vadapter vhost0
Assigning file "weixinyuvioc1" as a backing device.
VTD:vtscsi0
$mkbdsp -clustername weixinyuSSP -sp SSP1 -bd weixinyuThickvioc1 -vadapter vhost0
Assigning file "weixinyuThickvioc1" as a backing device.
VTD:vtscsi1
验证映射关系:
代码语言:javascript复制 $lsmap -all
SVSA Physloc Client Partition ID
--------------- -------------------------------------------- ------------------
vhost0 U8233.E8B.06B486P-V6-C11 0x00000001
VTD vtscsi0
Status Available
LUN 0x8100000000000000
Backing device weixinyuvioc1.75c8e72e28845ce65112e27b3822891f
Physloc
Mirrored N/A
VTD vtscsi1
Status Available
LUN 0x8200000000000000
Backing device weixinyuThickvioc1.23fdaf97a4fd76977155eb23e140f877
Physloc
Mirrored N/A
在 VIOS1 上对逻辑单元映射完毕后,还要依次在 VIOS2,VIOS3,VIOS4 上同样执行映射的命令。
我们也可以使用一条命令,完成逻辑单元的创建和映射:
代码语言:javascript复制 $mkbdsp -clustername weixinyuSSP -sp SSP1 11G -bd weixinyuThick2vioc1
-vadapter vhost0 -thick
Lu Name:weixinyuThick2vioc1
Lu Udid:1f9a81e644769bb142225f04b31e0902
Assigning file "weixinyuThick2vioc1" as a backing device.
VTD:vtscsi2
但是,使用上面这条明令时,需要注意的是,在第一个 VIOS 上执行这条命令以后,在其他 VIOS 上应该仅执行映射 ( 不必包含创建的命令 ) 的命令,否则将会重复创建逻辑单元。
当在四个 VIOS 上均对已有的两个逻辑单元完成映射以后,就可以对 weixinyuvioc1 进行操作系统安装了,VIOS 系统安装成功以后,将会识别到两块磁盘,每块磁盘都有四条 VSCSI 路径。
代码语言:javascript复制 # lspv
hdisk0 00f6b4860e44f5db rootvg active
hdisk1 none None
代码语言:javascript复制 # lspath |grep -i hdisk0
Enabled hdisk0 vscsi0
Enabled hdisk0 vscsi1
Enabled hdisk0 vscsi2
Enabled hdisk0 vscsi3
# lspath |grep -i hdisk1
Enabled hdisk1 vscsi0
Enabled hdisk1 vscsi1
Enabled hdisk1 vscsi2
Enabled hdisk1 vscsi3
上面结果可以看出,每个磁盘有 4 条路径,分别对应 4 个 VIOS 的 5 条 VSCSI 通路。
如果我们想删除一个逻辑单元,可以参照如下的步骤:
首先在 VIOS 上查看想要删除的逻辑单元:
代码语言:javascript复制 $lssp -clustername weixinyuSSP -sp SSP1 -bd
Lu Name Size(mb) ProvisionType %Used Unused(mb) Lu Udid
weixinyuThick2vioc1 11264 THICK 100% 0
e2c9a6addf093a529de23a9f02adf651
weixinyuThickvioc1 11264 THICK 100% 0
23fdaf97a4fd76977155eb23e140f877
weixinyuvioc1 11264 THICK 100% 0
2fe33e6c4bd00b977951b19e0c598770
weixinyuvioc1 12288 THIN 25% 9133
75c8e72e28845ce65112e27b3822891f
删除逻辑单元时,指定逻辑单元的 ID 号:
代码语言:javascript复制 $rmbdsp -clustername weixinyuSSP -sp SSP1 -luudid 2fe33e6c4bd00b977951b19e0c598770
Logical unit with udid "2fe33e6c4bd00b977951b19e0c598770" is removed.
确认 ID 号为“2fe33e6c4bd00b977951b19e0c598770”的逻辑单元已经删除成功:
代码语言:javascript复制 $lssp -clustername weixinyuSSP -sp SSP1 -bd
Lu Name Size(mb) ProvisionType %Used Unused(mb) Lu Udid
weixinyuThick2vioc1 11264 THICK 100% 0
e2c9a6addf093a529de23a9f02adf651
weixinyuThickvioc1 11264 THICK 100% 0
23fdaf97a4fd76977155eb23e140f877
weixinyuvioc1 12288 THIN 25% 9133
75c8e72e28845ce65112e27b3822891f
验证 SSP cluster 的稳定性初始情况,SSP cluster 的四个节点都是正常状态,SSP cluster 的状态也是正常的:
代码语言:javascript复制$cluster -status -clustername weixinyuSSP
Cluster Name State
weixinyuSSP OK
Node Name MTM Partition Num State Pool State
vios1 8233-E8B0206B486P 6 OK OK
vios3 8233-E8B0206B486P 8 OK OK
vios4 8233-E8B0206B486P 9 OK OK
vios2 8233-E8B0206B486P 7 OK OK
停掉一个 VIOS,集群处于降级状态:
代码语言:javascript复制 $clstartstop -stop -n weixinyuSSP -m vios2
$cluster -status -clustername weixinyuSSP
Cluster Name State
weixinyuSSP DEGRADED
Node Name MTM Partition Num State Pool State
vios1 8233-E8B0206B486P 6 OK OK
vios3 8233-E8B0206B486P 8 OK OK
vios4 8233-E8B0206B486P 9 OK OK
vios2 8233-E8B0206B486P 7 DOWN
再停掉两个 VIOS,集群依然处于降级状态:
代码语言:javascript复制 $clstartstop -stop -n weixinyuSSP -m vios3
$clstartstop -stop -n weixinyuSSP -m vios4
$ cluster -status -clustername weixinyuSSP
Cluster Name State
weixinyuSSP DEGRADED
Node Name MTM Partition Num State Pool State
vios1 8233-E8B0206B486P 6 OK OK
vios3 8233-E8B0206B486P 8 DOWN
vios4 8233-E8B0206B486P 9 DOWN
vios2 8233-E8B0206B486P 7 DOWN
此时,登陆 VIOC,对磁盘进行读操作:
代码语言:javascript复制 # dd if=/dev/rhdisk0 of=/dev/null
14730 0 records in
14730 0 records out
# dd if=/dev/rhdisk1 of=/dev/null
5279 0 records in
5279 0 records out
# dd if=/dev/rhdisk2 of=/dev/null
4958 0 records in
4958 0 records out
然后再次进行路径查看,可以看到每个磁盘的 4 条路径中已经有三条处于 failed 状态:
代码语言:javascript复制 # lspath
Enabled hdisk0 vscsi0
Enabled hdisk1 vscsi0
Failed hdisk1 vscsi1
Enabled hdisk0 vscsi1
Failed hdisk1 vscsi2
Failed hdisk1 vscsi3
Enabled hdisk0 vscsi2
Enabled hdisk2 vscsi0
Failed hdisk2 vscsi1
Enabled hdisk0 vscsi3
Failed hdisk2 vscsi2
Failed hdisk2 vscsi3
处于正常状态那条路径 VSCSI,是 VIOS1 提供的。
将停止的 VIOS 再次启动:
代码语言:javascript复制$clstartstop -start -n weixinyuSSP -m vios2
$clstartstop -start -n weixinyuSSP -m vios3
$clstartstop -start -n weixinyuSSP -m vios4
SSP cluster 恢复为正常状态:
代码语言:javascript复制 $cluster -status -clustername weixinyuSSP
Cluster Name State
weixinyuSSP OK
Node Name MTM Partition Num State Pool State
vios1 8233-E8B0206B486P 6 OK OK
vios3 8233-E8B0206B486P 8 OK OK
vios4 8233-E8B0206B486P 9 OK OK
vios2 8233-E8B0206B486P 7 OK OK