VIOS 共享存储池和 thin-provisioning

VIOS 集群

我不知道为什么 IBM® Power Systems™ 没有快照和 thin-provisioning 功能,当需要升级或保证管理的效率时,这两种功能可以让系统管理员的工作变得更轻松。最后,我在虚拟 I/O 服务器 (VIOS) 共享存储池中找到了 thin-provisioning 功能,本文详细介绍了 VIOS 共享存储池。

Karthikeyan Kannan, 高级顾问, Capgemini

http://www.ibm.com/developerworks/i/authors/Karthik64X80.jpgKarthik 在凯捷公司担任高级顾问。在加入凯捷公司之前,他在 IBM 全球企业咨询服务部工作。他具有 6 年的 IT 行业从业经验,专长是 IBM Power Systems、IBM Storage 和云计算。



2013 年 9 月 05 日

VIOS 共享存储池简介

我喜欢 Power Systems 并总是担心为什么 Power Systems 没有快照和 thin-provisioning 功能,最后,我发现 IBM Power Systems 引入了共享存储池概念,它支持这两种功能。

顾名思义,共享存储池主要是跨一组 IBM VIOS 实例共享存储资源(SAN 磁盘)。不仅仅是作为物理磁盘,而是像共享存储池中的逻辑卷那样切开它们,以逻辑单元 (LU) 来表示。逻辑单元主要以文件备份存储形式出现在集群存储池中。

VIOS 的版本最低应为 2.2.0.11。我在 VIOS 2.2.1.4 中测试了相关的功能。VIOS 的当前版本为 2.2.2.1,在集群中可以有 16 个节点,并且每个 VIOS 节点最多可以支持 200 个客户端。

共享存储池概念利用 IBM AIX® 中的 Cluster Aware AIX (CAA) 功能形成了 VIOS 集群。使用 CAA 功能,集群可以监控集群中的对等点。请参见 Chris Gibson 的博客,获得有关 CAA 的更多信息。

在本文中,我使用了在两个不同的物理系统上托管的两台 VIOS 服务器。在浏览本文时,我们将看到有关下列任务的详细信息。

  • 创建一个集群和共享存储池
  • 验证集群的状态
  • 列出共享存储池的属性
  • 创建一个逻辑单元
  • 将逻辑单元分配给客户端
  • 修改集群

功能包括:

  • Thick provisioning
  • Thin-provisioning
  • 快照功能
    • 创建
    • 回滚
    • 删除

要求

  • IBM PowerVM® Standard Edition
  • VIOS version 2.2.0.11, Fix Pack 24, Service Pack 1 和更高版本
  • 至少两个磁盘:一个用于 CAA 存储库,另一个用于存储池。

实验设置

图 1 显示了本文中用于说明此功能的实验设置。

图 1. 实验环境设置

我们还将登录到两个 VIOS 并验证了配置。

清单 1. 在 VIOS A 上
$ hostname
VIOSA
$ ioslevel
2.2.1.4
$ lspv
NAME             PVID                                 VG               STATUS
hdisk0           00c858a2bde1979e                     rootvg           active
hdisk1           00c858a2cbd45f6b                     None              
hdisk2           00c858a2cca2a81d                     None              
hdisk3           00c858a210d30593                     None              
hdisk4           00c858a210d32cfd                     None              
$ lsvg
rootvg
$ lssp
Pool              Size(mb)   Free(mb)  Alloc Size(mb)    BDs Type       
rootvg              102272      77824             128      0 LVPOOL     
$
$ cluster -list
$
清单 2. 在 VIOS B 上
$ hostname
VIOSB
$ ioslevel
2.2.1.4
$ lspv
NAME             PVID                                 VG               STATUS
hdisk0           00c858a2bde1979e                     rootvg           active
hdisk1           00c9095f0f795c20                     None              
hdisk2           00c858a2cca2a81d                     None              
hdisk3           00c858a210d30593                     None              
hdisk4           00c858a210d32cfd                     None              
$ lsvg
rootvg
$ lssp
Pool              Size(mb)   Free(mb)  Alloc Size(mb)    BDs Type       
rootvg              102272      77824             128      0 LVPOOL     
$
$ cluster -list
$

在我的 VIOS 系统中有 5 个磁盘,在两个 VIOS 中,VIOS 和客户端逻辑分区或 LPAR (rootvg) 分别使用 hdisk0 和 hdisk1。我们将要使用的磁盘是 hdisk2、hdisk3 和 hdisk4。查看所有磁盘的物理卷 ID (PVID);在两个 VIOS 上它们是相同的,这证实了两个 VIOS 实例共享同一组物理磁盘。它们的命名顺序不需要是相同的,因为 PVID 才是关键。

您还需要确保在 IP 网络中可以访问集群中的 VIOS 节点。可以通过使用 /etc/hosts 或 DNS 解析其主机名。


创建共享存储池

现在平台已经准备好,我们可以开始创建 VIOS 集群和共享存储池了。应使用 cluster 命令进行创建,该命令会初始化集群流程并创建共享存储池。

对于我们的演示集群,我将 hdisk2 用作 CAA 存储库磁盘以保存有关集群的所有重要数据,并将 hdisk3 和 hdisk4 用于共享存储池。

清单 3. 在 VIOS A 上
$ cluster -create -clustername demo1 -repopvs hdisk2 -spname demosp -sppvs 
hdisk3 hdisk4 -hostname viosa 
Cluster demo1 has been created successfully.

$

成功完成命令后,我们可以使用 cluster 命令的 –list -status 标记验证集群及其属性的状态。

清单 4. 在 VIOS A 上
$ cluster -list
CLUSTER_NAME:    demo1
CLUSTER_ID:      36618f14582411e2b6ea5cf3fceba66d
$

$ cluster -status -clustername demo1
Cluster Name         State
demo1                    OK

    Node Name        MTM                        Partition Num  State  Pool State
    VIOSA            9117-MMC0206858A2            39              OK       OK  

$

在 VIOS A 上运行的上述代码告诉我们,有一个集群名为 demo1,并且其集群 ID 为 36618f14582411e2b6ea5cf3fceba66d。此集群 ID 是创建的每个集群的惟一标识符。命令 cluster status 表示集群的状态,表明集群处于工作状态,还是集群存在问题。它还提供有关物理系统的有用信息(比如型号、序列号和托管 VIOS 的分区 ID)。

我们还可以使用 CAA 命令(比如 lscluster)来查看集群的状态以确保集群正常运行。

清单 5. 在 VIOS A 上
$ lscluster -m
Calling node query for all nodes
Node query number of nodes examined: 1
        Node name: VIOSA
        Cluster shorthand id for node: 1
        uuid for node: 365731ea-5824-11e2-b6ea-5cf3fceba66d
        State of node:  UP  NODE_LOCAL
        Smoothed rtt to node: 0
        Mean Deviation in network rtt to node: 0
        Number of clusters node is a member in: 1
        CLUSTER NAME       TYPE  SHID   UUID

        demo1              local        36618f14-5824-11e2-b6ea-5cf3fceba66d

        Number of points_of_contact for node: 0
        Point-of-contact interface & contact state
         n/a

$

到目前为止,我们仅验证了集群,存储池哪里去了?cluster 命令不会显示使用 cluster 命令创建的共享存储池,也不会显示使用 lssp 命令创建的共享存储池。

要查看共享存储池,我们需要使用 VIOS 传统的 lssp 命令,该命令用于列出存储池,但是要使用特殊的标记 –clustername

列出集群中共享存储池的命令格式是 lssp -clustername <NAME>

清单 6. 在 VIOS A 上
$ lspv                                                                           
NAME             PVID                                 VG               STATUS   
hdisk0           00c858a2bde1979e                     rootvg           active   
hdisk1           00c858a2cbd45f6b                     None                       
hdisk2           00c858a2cca2a81d                     caavg_private    active   
hdisk3           00c858a210d30593                     None                       
hdisk4           00c858a210d32cfd                     None                       

$ lssp                                                                           
Pool              Size(mb)   Free(mb)  Alloc Size(mb)    BDs Type               
rootvg              102272      77824             128      0 LVPOOL             

$ lsvg                                                                           
rootvg                                                                           
caavg_private                                                                  

$ lssp -clustername demo1
POOL_NAME:       demosp
POOL_SIZE:       102144
FREE_SPACE:      100391
TOTAL_LU_SIZE:   0
TOTAL_LUS:       0
POOL_TYPE:       CLPOOL
POOL_ID:         00000000097938230000000050E9B08C

$

在上述输出中,可以看到共享存储池的名称是 demosp,共享存储池的总大小是 100 GB,而空闲空间为 100391 MB。您还可以看到表明逻辑单元数量的字段,而逻辑单元的总大小为 0,因为到目前为止,我们还未创建任何逻辑单元。除了惟一的集群 ID 外,共享存储池还有惟一的标识符。

此外,还要注意的是,有一个名为 caavg_private 的新卷组,它是和共享存储池一起创建的。此 VG 是特定于 CAA 的,属于此 VG 一部分的磁盘会存储重要数据,以便保持集群活跃并正常运行。不应该将此 VG 用于其他任何目的。


逻辑单元

如本文开头所述,逻辑单元 是文件备份存储设备,可以作为虚拟 SCSI (VSCSI) 磁盘备份设备提供给 VIOS 客户端。

现在,我们需要在共享存储池顶部创建一个逻辑单元。在 VIOS A 中,我们已经创建了 vhost0 连接,lparA 通过该连接为其 rootvg 获取物理硬盘。

清单 7. 在 VIOS A 上
$ lsmap -all
SVSA            Physloc                                      Client Partition ID
--------------- -------------------------------------------- ------------------
vhost0          U9117.MMC.06858A2-V39-C3                     0x0000000f

VTD                   LPARA_RVG
Status                Available
LUN                   0x8100000000000000
Backing device        hdisk1
Physloc               U78C0.001.DBJ0379-P2-C3-T1-W500507680120D9ED-L1000000000000
Mirrored              false

$

现在,所有设置让我们可以从共享存储池为客户端 LPAR A 创建逻辑单元。此逻辑单元与存储池的 LV 或文件备份设备相同。我们用来创建逻辑单元的命令是同一个 VIOS 命令,即 mkbdsp,但包含其他一些标记。

清单 8. 在 VIOS A 上
$ mkbdsp -clustername demo1 -sp demosp 20G -bd lparA_lu1
Lu Name:lparA_lu1
Lu Udid:2f4adc720f570eddac5dce00a142de89

$

在上面的输出中,我首先使用 mkbdsp 命令创建了逻辑单元。我在 demosp(还没有映射到任何客户端)上创建了大小为 20 GB 的逻辑单元。要映射它,需要再次使用 mkbdsp 命令,如清单 9 所示。

清单 9. 在 VIOS A 上
$ mkbdsp -clustername demo1 -sp demosp -bd lparA_lu1 -vadapter vhost0 -tn lparA_datavg
Assigning file "lparA_lu1" as a backing device.
VTD:lparA_datavg

$

请注意,在这里我并没有提到大小,因为逻辑单元已经存在。此命令会将逻辑单元 lparA_lu1 映射到 vhost0,它的 VTD 名称为 lparA_datavg

有两个步骤我们没有使用,即创建步骤和分配给客户端的步骤,而是在一个命令中执行了这些操作,如下列输出所示。在执行命令之前,我将删除 VTD lparA_datavg,它由我们刚才映射的逻辑单元 lparA_lu1 提供支持。我们可以对 VTD 使用常规的 rmvdev,并对逻辑单元使用 rmbdsp

清单 10. 在 VIOS A 上
$ rmvdev -vtd lparA_datavg
lparA_datavg deleted
$ rmbdsp -clustername demo1 -sp demosp -bd lparA_lu1
Logical unit lparA_lu1 with udid "a053cd56ca85e1e8c2d98d00f0ab0a0b" is removed.
$

现在,我将在一个命令中创建并映射逻辑单元,如下列输出所示。

清单 11. 在 VIOS A 上
$ mkbdsp -clustername demo1 -sp demosp 20G -bd lparA_lu1 -vadapter vhost0 -tn lparA_datavg
Lu Name:lparA_lu1
Lu Udid:c0dfb007a9afe5f432b365fa9744ab0b

Assigning file "lparA_lu1" as a backing device.
VTD:lparA_datavg

$

创建并映射了逻辑单元之后,客户端应将逻辑单元看作磁盘。我们将在 VIOS A 中验证一次逻辑单元和映射,然后转到客户端 lparA,它是 VIOS A 的客户端。

lssp 命令可用于列出共享存储池中的备份设备。

清单 12. 在 VIOS A 上
$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             c0dfb007a9afe5f432b365fa9744ab0b
$

清单 13 中(以粗体显示)的下列输出表明 lparA_lu1 逻辑单元被映射到了 vhost0 上的 lparA 客户端。

清单 13. 在 VIOS A 上

点击查看代码清单

VIOS 共享存储池简介. VIOS 共享存储池简介

要求. 要求

实验设置. 实验设置

创建共享存储池. 创建共享存储池

逻辑单元. 逻辑单元

快照和还原. 快照和还原

修改集群. 修改集群

thin-provisioning 和 thick provisioning. thin-provisioning 和 thick provisioning

提示. 提示

结束语. 结束语

$ lsmap -all
SVSA            Physloc                                      Client Partition ID
--------------- -------------------------------------------- ------------------
vhost0          U9117.MMC.06858A2-V39-C3                     0x0000000f

VTD                   LPARA_RVG
Status                Available
LUN                   0x8100000000000000
Backing device        hdisk1
Physloc               U78C0.001.DBJ0379-P2-C3-T1-W500507680120D9ED-L1000000000000
Mirrored              false

VTD                      lparA_datavgStatus                   AvailableLUN                      0x8200000000000000Backing device    lparA_lu1.c0dfb007a9afe5f432b365fa9744ab0bPhyslocMirrored              N/A   

$

在客户端机器 lparA 上,我们已经有一个物理卷被 rootvg 使用。现在,应该有新磁盘可供客户端使用。我们会尝试将已提供的逻辑单元配置给客户端。

清单 14. 在 lparA 上
lparA#hostname
lparA
lparA#lspv
hdisk0          00c858a2cbd45f6b                    rootvg          active      
lparA#cfgmgr
lparA#lspv
hdisk0          00c858a2cbd45f6b                    rootvg          active      
hdisk1          none                                None                   
# lscfg -vpl hdisk1
  hdisk1           U9117.MMC.06858A2-V15-C2-T1-L8200000000000000  Virtual SCSI Disk Drive

  PLATFORM SPECIFIC

  Name:  disk
    Node:  disk
    Device Type:  block
#

我们成功了!现在逻辑单元可作为虚拟 SCSI 磁盘驱动供客户端使用。


快照和还原

到目前为止,我们已经建立了带有一个 VIOS 的共享存储池,创建了一个逻辑单元,并将此逻辑单元分配给了 lparA 客户端。

现在,我们将关注客户端一侧的一些 VG 操作,以探索共享存储池的快照功能。使用提供给 lparA 的新逻辑单元,我将在其上方创建一个卷组 (datavgA) 和一个名为 /datafsA 的文件系统。

清单 15. 在 lparA 上
lparA#mkvg -y datavgA hdisk1
0516-1254 mkvg: Changing the PVID in the ODM.
datavgA
lparA#crfs -v jfs2 -m /datafsA -g datavgA -a size=2G
File system created successfully.
2096884 kilobytes total disk space.
New File System size is 4194304
lparA#
lparA#mount /datafsA
lparA#cd /datafsA
lparA#touch file_lparA
lparA#ls
file_lparA  lost+found
lparA#

现在,我们将创建两个文件。一个文件名为 before_snap,在创建了该文件后,我将捕获快照,然后创建另一个名为 after_snap 的文件。我们还将还原快照以进行演示。

清单 16. 在 lparA 上
lparA#touch before_snap
lparA#ls  
before_snap  file_lparA   lost+found
lparA#pwd
/datafsA
lparA#

在 VIOS A 上,现在我们将捕获快照。

捕获快照的命令是:

snapshot -clustername <Clustername> -spname <Shared_Pool_Name> -luudid <ID> -create SNAP_NAME

清单 17. 在 VIOS A 上
$ snapshot -clustername demo1 -create lparA_lu1_SNAP1 -spname demosp -lu lparA_lu1
lparA_lu1_SNAP1
$
$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             687f8420bbeee7a5264ce2c6e83d3e66
Snapshot                                                                       
lparA_lu1_SNAP1

$

上述代码清单中的 lssp 命令表明有一个名为 lparA_lu1_SNAP1 的快照,该快照与 lparA_lu1 逻辑单元相关。

现在,我们将在 lparA 客户端中创建一个名为 after_snap 的文件。

清单 18. 在 lparA 上
lparA#pwd
/datafsA
lparA#touch after_snap
lparA#ls
after_snap   before_snap  file_lparA   lost+found
lparA#cd
lparA#umount /datafsA
lparA#varyoffvg datavgA
lparA#

现在我已经关闭了具有数据的卷组。如果您想还原一些数据,那么建议您始终离线保存资源。根据您的经验,您应该熟悉这种方式。

让我们尝试还原 lparA_lu1_SNAP1 快照,并查看客户端一侧的卷组中有哪些数据。

清单 19. 在 VIOS A 上
$ snapshot -clustername demo1 -rollback lparA_lu1_SNAP1 -spname demosp -lu lparA_lu1
$
清单 20. 在 lparA 上
lparA#varyonvg datavgA
lparA#mount /datafsA
Replaying log for /dev/fslv00.
lparA#ls -l /datafsA
total 0
-rw-r--r--    1 root     system            0 Jan  6 23:27 before_snap
-rw-r--r--    1 root     system            0 Jan  6 23:24 file_lparA
drwxr-xr-x    2 root     system          256 Jan  6 23:23 lost+found
lparA#

您可以看到,还原了快照并使卷组联机后,就没有名为 after_snap 的文件了。这是因为 after_snap 文件是在捕获快照之后创建的。现在我们已经回滚了快照,因此该文件就不存在了。

如果您想删除快照,则可以使用 snapshot 命令,如下列清单所示。

清单 21. 在 VIOS A 上
$ snapshot -clustername demo1 -delete lparA_lu1_SNAP1 -spname demosp -lu lparA_lu1
$

修改集群

到目前为止,我们只是在 VIOS A 和 lparA 上执行操作。我们创建的集群是单节点集群。您可能会问我,什么是单节点集群,如何成为单节点集群?这是由 AIX 的 CAA 功能来决定的。也可以创建具有单个节点的集群。

让我们扩展集群 demo1,方法是在另一个 CEC 上添加第二个 VIOS 实例 VIOS B。

清单 22. 在 VIOS A 上
$ cluster -addnode -clustername demo1 -hostname viosb
Partition VIOSB has been added to the demo1 cluster.

$

上述命令为集群添加了 VIOS B。让我们使用 cluster -status 命令来验证它。

清单 23. 在 VIOS A 上
$ cluster -status -clustername demo1
Cluster Name         State
demo1                OK

    Node Name        MTM           Partition Num  State  Pool State
    VIOSA            9117-MMC0206858A2        39  OK     OK  
    VIOSB            9119-59502839095F         3  OK     OK  
$

如果您看到上述输出,它明确指出 VIOS A 和 VIOS B 位于两个不同的物理系统上,而且现在它们都属于 VIOS 集群 demo1 的一部分。

现在,我们可以转到 VIOS B,检查我们在 VIOS A 上做的整个配置是否已经在 VIOS B 中反映出来。

清单 24. 在 VIOS B 上
$ hostname
VIOSB
$ cluster -list
CLUSTER_NAME:    demo1
CLUSTER_ID:      36618f14582411e2b6ea5cf3fceba66d

$ lscluster -m
Calling node query for all nodes
Node query number of nodes examined: 2


        Node name: VIOSA
        Cluster shorthand id for node: 1
        uuid for node: 365731ea-5824-11e2-b6ea-5cf3fceba66d
        State of node:  UP
        Smoothed rtt to node: 7
        Mean Deviation in network rtt to node: 3
        Number of clusters node is a member in: 1
        CLUSTER NAME       TYPE  SHID   UUID                                
        demo1              local        36618f14-5824-11e2-b6ea-5cf3fceba66d

        Number of points_of_contact for node: 2
        Point-of-contact interface & contact state
         dpcom  UP  RESTRICTED
         en3  UP

------------------------------

        Node name: VIOSB
        Cluster shorthand id for node: 2
        uuid for node: a9d1aeee-582d-11e2-bda1-5cf3fceba66d
        State of node:  UP  NODE_LOCAL
        Smoothed rtt to node: 0
        Mean Deviation in network rtt to node: 0
        Number of clusters node is a member in: 1
        CLUSTER NAME       TYPE  SHID   UUID                                
        demo1              local        36618f14-5824-11e2-b6ea-5cf3fceba66d

        Number of points_of_contact for node: 0
        Point-of-contact interface & contact state
         n/a
$

$ lssp -clustername demo1
POOL_NAME:       demosp
POOL_SIZE:       102144
FREE_SPACE:      100353
TOTAL_LU_SIZE:   20480
TOTAL_LUS:       1
POOL_TYPE:       CLPOOL
POOL_ID:         00000000097938230000000050E9B08C

$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             687f8420bbeee7a5264ce2c6e83d3e66
Snapshot                                                                       
lparA_lu1_SNAP1
$

从上述命令输出中,我们验证了 VIOS B 也已连接到集群,并且共享存储池 demosp 在 VIOS B 上可用。我尝试了将逻辑单元 lparA_lu1 映射到客户端 lparB,此客户端被连接到 VIOS B。

清单 25. 在 VIOS B 上
$ lsmap -all
SVSA            Physloc                                      Client Partition ID
--------------- -------------------------------------------- ------------------
vhost0          U9119.595.839095F-V3-C2                      0x00000004

VTD                   lparB_RVG
Status                Available
LUN                   0x8100000000000000
Backing device        hdisk1
Physloc               U5791.001.99B0PA1-P2-C02-T1-W500507680110D9E3-L1000000000000
Mirrored              false

$


$ mkbdsp -clustername demo1 -sp demosp -bd lparA_lu1 -vadapter vhost0 -tn lparB_datavgA
Assigning file "lparA_lu1" as a backing device.
VTD:datavgA
$

 lsmap -all
SVSA            Physloc                                      Client Partition ID
--------------- -------------------------------------------- ------------------
vhost0          U9119.595.839095F-V3-C2                      0x00000004

VTD                   lparB_RVG
Status                Available
LUN                   0x8100000000000000
Backing device        hdisk1
Physloc               U5791.001.99B0PA1-P2-C02-T1-W500507680110D9E3-L1000000000000
Mirrored              false

VTD                   lparB_datavgA
Status                Available
LUN                   0x8200000000000000
Backing device        lparA_lu1.687f8420bbeee7a5264ce2c6e83d3e66
Physloc                
Mirrored              N/A

$

是的,我能够成功地将同一逻辑单元同时映射到 lparA 和 lparB。现在我可以登录到 lparB 并查看它是否有客户端操作系统可见的磁盘。

清单 26. 在 LPAR B 上
lparB#lspv
hdisk0          00c9095f0f795c20                    rootvg          active      
hdisk1          00c858a210fdef5e                    None                        
lparB#
清单 27. 在 LPAR A 上
lparA#lspv
hdisk0          00c858a2cbd45f6b                    rootvg          active      
hdisk1          00c858a210fdef5e                    datavgA         active      
lparA#

查看上面的输出,我可以确定我们能够同时在两个客户端之间共享同一逻辑单元。请注意,在两个 LPAR 中,PVID 是相同的。现在,您可以使用该功能来访问两个客户端上的磁盘。注意数据损坏并使用恰当的技术访问磁盘,可以使用具有并发或增强并发 VG 的 Logical Volume Manager (LVM)。

我们已经看到了如何扩展集群。我们还将了解如何精简集群,即从集群删除 VIOS 节点。

在从集群删除 VIOS 之前,确保没有从想要删除的特定 VIOS 向任意客户端提供任何逻辑单元。在我们的示例中,我们将从集群中删除 VIOSB。

清单 28. 在 VIOS A 上
$ cluster -rmnode -clustername demo1 -hostname viosb
PARTITION HAS MAPPINGS
VIOSB

Command did not complete.

$

哎呀!!!命令失败了。

这是因为我们没有删除通过 VIOSB 提供给 lparB 的 lparA_lu1 逻辑单元的映射。我们可以删除 VTD 映射并重新运行命令或者使用 -f 标记。我使用的是 –f 标记,因为我知道仅映射了一个逻辑单元。使用 -f 标记将会删除使用来自特定集群的逻辑单元创建的所有 VTD 设备。如果有多个映射,则需要先验证,然后再继续。

清单 29. 在 VIOS A 上
$ cluster -rmnode -f -clustername demo1 -hostname viosb
Partition VIOSB has been removed from the demo1 cluster

$

如果您需要为共享存储池添加更多磁盘,则可以使用下列命令格式。我没有运行该命令,因为我没有多余的磁盘了。

chsp -add -clustername <cluster_name> -sp <ssp_name> hdiskn


thin-provisioning 和 thick provisioning

我们还没有谈及 thin-provisioning 。在共享存储池上,为了使用 thin-provisioning ,不需要专门执行或建立任何东西。如果您能看到 lssp 命令的所有输出,则可以看到名为 "ProvisionType" 的标头,并且在我们的演示中,所有逻辑单元都进行了 thin-provisioning 。因为在共享存储池中,默认行为是 thin-provisioning 。

如果您想对逻辑单元进行 thick provisioning,则需要使用 -thick 标记和 mkbdsp 命令明确提到它。

清单 30. 在 VIOS A 上
$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             687f8420bbeee7a5264ce2c6e83d3e66
$

我们将尝试创建 thick provisioning 逻辑单元以进行演示。

清单 31. 在 VIOS A 上
$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             687f8420bbeee7a5264ce2c6e83d3e66

$
$ mkbdsp -clustername demo1 -sp demosp 50G -bd lparA_lu2 -vadapter 
vhost0 -tn lparA_datavg_D2 -thick
Lu Name:lparA_lu2
Lu Udid:0ceaf03105d97f45ef4c595968f61cf7

Assigning file "lparA_lu2" as a backing device.
VTD:lparA_datavg_D2

$
$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             687f8420bbeee7a5264ce2c6e83d3e66
lparA_lu2        51200       THICK            0ceaf03105d97f45ef4c595968f61cf7
$
$ lsmap -all
SVSA            Physloc                                      Client Partition ID
--------------- -------------------------------------------- ------------------
vhost0          U9117.MMC.06858A2-V39-C3                     0x0000000f

VTD                   LPARA_RVG
Status                Available
LUN                   0x8100000000000000
Backing device        hdisk1
Physloc               U78C0.001.DBJ0379-P2-C3-T1-W500507680120D9ED-L1000000000000
Mirrored              false

VTD                   lparA_datavg
Status                Available
LUN                   0x8200000000000000
Backing device        lparA_lu1.687f8420bbeee7a5264ce2c6e83d3e66
Physloc                
Mirrored              N/A

VTD                   lparA_datavg_D2
Status                Available
LUN                   0x8300000000000000
Backing device        lparA_lu2.0ceaf03105d97f45ef4c595968f61cf7
Physloc                
Mirrored              N/A

$

现在,查看上面的输出。我们创建的新逻辑单元是 thick provisioning 的逻辑单元,并且已经将它映射到了客户端 lparA。

thin-provisioning 有助于您使用可用的存储资源。例如,假设在我们的共享存储池中有一个 20 GB 的逻辑单元和一个 50 GB 的逻辑单元。现在,假设我们需要客户端提供 50 GB 的空间。在常规的 VG 场景中,或者是如果我们在共享存储池中使用密集配置的逻辑单元,则无法实现此请求。现在,由于我们对 lparA_lu1 使用了 thin-provisioning ,客户端未用的空间均可供使用。您还可以在下列清单中看到 lssp 命令的输出,该清单表明在共享存储池中有 49 GB 的空闲空间。

清单 32. 在 VIOS A 上
$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             687f8420bbeee7a5264ce2c6e83d3e66
lparA_lu2        51200       THICK            0ceaf03105d97f45ef4c595968f61cf7
$
$ lssp -clustername demo1
POOL_NAME:       demosp
POOL_SIZE:       102144
FREE_SPACE:      49150
TOTAL_LU_SIZE:   71680
TOTAL_LUS:       2
POOL_TYPE:       CLPOOL
POOL_ID:         00000000097938230000000050E9B08C
$ mkbdsp -clustername demo1 -sp demosp 50G -bd testlu1 -thick
Storage Pool subsystem operation, unable to create LU.
Storage Pool subsystem operation, not enough space in the pool.

$ mkbdsp -clustername demo1 -sp demosp 50G -bd testlu1
Lu Name:testlu1
Lu Udid:9e75b355e376eb81914df20bfb6c07f1

$

我尝试创建 50 GB 的 thick provisioning 的逻辑单元,但由于空间不足而失败了,不过,没有 –thick 标记的命令成功了,因为它是 thin-provisioning 。

使用 thin-provisioning 可能会产生过度使用存储资源的风险。尽管它是虚拟化的一个优势,但是,如果您不能控制使用限制,则会带来风险。假设存在这样一种场景:在此场景中,所有客户端开始占用分配给它们的空间,在这种情况下,如果逻辑单元是 thin-provisioning 的,那么最终会在客户端中会生成 LVM 写入错误,因为在您过度使用共享资源池时没有实际的块需要支持。

要克服这个问题,可以使用共享存储池的 alert 功能,让系统管路员了解共享存储池的硬盘使用超过了阈值限制。

清单 33. 在 VIOS A 上
$ alert -set -clustername demo1 -spname demosp -type threshold -value 75         
$ Pool freespace is 47 percent.
$ alert -list -clustername demo1 -spname demosp -type threshold                 
PoolName:         demosp                                                         
PoolID:           00000000097938230000000050E9B08C                               
ThresholdPercent: 75                                                             
$ alert -unset -clustername demo1 -spname demosp -type threshold                 
$

在查看了两个逻辑单元被映射到一个客户端的清单 31 之后,您可能会想到一个问题,如何在将多个逻辑单元提供给客户端的同时捕获快照。在存储方面,我们将这称为一致性组,在该组中,同时为一组卷创建快照,以保持一致性。在共享存储池中也可以这样做。

为了解释这个问题,我创建了一个快照,该快照是分配给 VIOS A 上 lparA 的两个逻辑单元。

清单 34. 在 VIOS A 上
$ snapshot -clustername demo1 -create datavgA_snap -spname demosp -lu lparA_lu1 lparA_lu2
datavgA_snap
$

$ lssp -clustername demo1 -sp demosp -bd
Lu Name          Size(mb)    ProvisionType    Lu Udid
lparA_lu1        20480       THIN             687f8420bbeee7a5264ce2c6e83d3e66
Snapshot                                                                       
datavgA_snap

lparA_lu2        51200       THICK            0ceaf03105d97f45ef4c595968f61cf7
Snapshot                                                                       
datavgA_snap

$

这样,我们可以通过同时创建快照来确保多个磁盘的一致性。


提示

  • 无法调整逻辑单元的大小,无论该逻辑单元是 thick-provisionin 的还是 thin-provisioning 的。您应该仅为客户端添加新逻辑单元。也许未来的版本可能会拥有调整逻辑单元大小的选项,但是 IBM 支持人员证实不会提供该选项。
  • lspv 输出中,共享存储池的磁盘仍然不能列作任何 VG(无)的一部分(参见清单 6)。
  • 您还可以使用具有双 VIOS 设置的 VIOS 共享存储池,以便拥有具有默认 AIX MPIO 的客户端的冗余。它提供的冗余要优于传统文件备份或 LV 备份存储。
  • 现在,您只能使用具有共享存储池的 VSCSI,而不能使用 NPIV。不知道未来是否会支持使用 NPIV。
  • 您可以使用逻辑单元 ID 而不是逻辑单元名称,因为在共享存储池中允许逻辑单元名称重复。
  • 我还没有充分测试 alert 功能,但是,如果它正常工作,将会是一个不错的功能。

结束语

在本文中,我详细介绍了共享存储池的功能,以及如何在您的基础架构中最佳地使用它。我认为使用共享存储池可以让在拥有大量数据工作负载系统的环境中工作变得更轻松。我没有对它使用任何基准。请在环境中最适合使用它的地方应用它。本文的目的并不是打算取代任何官方文档,而是充当快速入门指南,面向那些想要了解或测试共享存储池概念的系统管理员。

参考资料

学习

  • Power System 信息中心
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

讨论

  • 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=943563
ArticleTitle=VIOS 共享存储池和 thin-provisioning
publish-date=09052013