mophis
作者mophis·2011-12-15 09:58
软件开发工程师·杭州

PowerVM 共享存储池(Share Storage Pool)的功能与实现

字数 3292阅读 6793评论 0赞 3

前言

在 IT 技术中,虚拟化是对物理资源进行抽象的一种机制。它提供一种逻辑的方式,以便查看、共享有限的物理资源。IBM 长期以来一直致力于虚拟化技术的推广。从上世纪 60 年代在大型主机上实现虚拟化技术至今,IBM 已经建立起一套完备的虚拟化解决方案。其中在 Power 平台上就是大家耳熟能详 PowerVM。PowerVM 是一个包含一系列硬件和软件特性的品牌,它使系统能够更灵活地适应各种工作负载。它包含微分区、逻辑分区、虚拟 I/O、微码技术、活动分区迁移、动态内存扩展等众多特性。这些新特性几乎可以将服务器上所有的物理资源虚拟化,并为客户提供更好的高可用性和资源利用率。

2010 年 10 月 7 日,IBM 发布了新一代基于 VIOS 2.2.0.11 FP24 SP1 版本的 PowerVM。在这一版本中,增强了对一些新虚拟化特性的支持,其中包括:Suspend/Resume、VIOS grouping、Share Storage Pool 和 Thin provisioning。本文将介绍共享存储池的原理,实现前提和详细配置步骤。

Share Storage Pool 技术简介

基于最新的 VIOS 2.2.0.11 FP24 SP1 版本,PowerVM 可以提供共享存储池的新特性。共享存储池是一个 SAN 存储设备的池,这些设备可以跨多个 VIO 服务器。共享存储池是由 2 部分构成的:1,VIO 服务器群集;2,一个带有全局命名空间的分布式数据对象库。分布式数据对象库使用专门为 VIO 服务器存储虚拟化功能开发的群集文件系统。它提供了 redirect-on-write 的快照能力和很高的可扩展性。分布式数据对象库是其他高级存储虚拟化特性的基础,例如:Thin Provisioning。其他更多高级的特性将在未来的版本中加入进来为云计算技术提供更好的虚拟化技术基础。


图 1. 共享存储池架构图
图 1. 共享存储池架构图

当 VIO 服务器启用共享存储池的时候,VIO 服务器通过逻辑单元(logical units)来使用存储池中的空间,并将逻辑单元映射给客户端分区使用。逻辑单元是一个基于文件的存储设备。在客户端分区则将其识别为一个虚拟 SCSI 磁盘。逻辑单元包含了虚拟块和一个虚拟块地址空间。共享存储池使用的物理卷被视为一些物理块的聚合,这些物理块通过物理卷上的元数据进行管理。共享存储池中的物理卷包含了物理块和一个物理块地址空间。系统通过 VATL(Virtual Address Translation Look aside) 来处理从虚拟块地址到物理块地址的转换。

共享存储池带来的益处

共享存储池的最大益处在于通过对存储的虚拟化来达到共享存储空间,提高存储设备的利用率,降低系统对物理存储空间需求的目的。共享存储池本身是具有瘦供(Thin Provisioning)特性的设备。瘦供的逻辑单元在创建时按照用户所需的尺寸创建,在客户端分区表现为客户指定尺寸的一个 SCSI 盘。但是,瘦供的逻辑单元只有在逻辑块被使用的时候才会从共享存储池中分配物理块。如下图 2 所示,客户端分区分配的 2 个磁盘实际使用的块分别为 5 个和 2 个,则在共享存储池中实际占用的空间总共仅为 7 块。


图 2. 共享存储池的瘦供(Thin Provisioning)特性
图 2. 共享存储池的瘦供(Thin Provisioning)特性

和传统的存储管理方式相比,共享存储池能够极大地降低实际存储空间的占用,从而帮助客户达到提高现有存储的利用率,降低设备采购费用的目的。

共享存储池的实现前提

用户如果希望在自己的环境中实现 Share Storage Pool 功能,需要满足一系列硬件、固件和软件方面的前提条件,包括:

·Power6 以上的服务器

·PowerVM 标准版或企业版

·VIOS 2.2.0.11 FP24 SP01,至少一颗物理 CPU

·客户端分区的操作系统支持:AIX 5.3 或更高

·对象库所在的 SAN 盘最小 20G,共享存储池中的 SAN 盘最小 20G

其他更多的前提请参考红皮书:sg247940 2.7.2 小节。

共享存储池的实现步骤

1. 创建存储池

1.a 以 padmin 用户登录 VIOS,并如下图 3 所示执行 lspv –free 命令,列示当前空闲的磁盘。例如,本例中的 hdisk4,5,6。lspv –free 命令对于存在 VG 信息的磁盘将不予输出,因此本系统中已经使用的或曾经使用的磁盘 hdisk0,2,3 没有显示出来。


图 3. 列示当前系统中空闲的磁盘
图 3. 列示当前系统中空闲的磁盘

1.b 通过执行 cluster –create 命令创建群集,如下图 4 所示。所涉及的参数为:

群集名:clusterTest

对象库所在的物理盘:hdisk4

存储池名:poolTest

存储池中的物理盘:hdisk5 hdisk6

群集中节点的主机名:p74014vio1


图 4. 创建群集
图 4. 创建群集

群集创建完毕后通过 lspv 命令可以看到原先空闲的磁盘 hdisk4,5,6 现在已经被使用了,如下图 5 所示:


图 5 空闲磁盘已经被使用
图 5 空闲磁盘已经被使用

1.c 检查存储池中的磁盘。如下图 6 所示,通过 lspv –clustername clusterTest –sp poolTest 命令检查


图 6. 检查共享存储池中的磁盘
图 6. 检查共享存储池中的磁盘

2. 映射逻辑单元

2.a 通过运行命令:lssp –clustername 命令检查当前存储池的使用和映射情况。如下图 7 所示,当前的存储池名为 poolTest,大小为 61184MB,空余大小为 60746MB,当前映射的逻辑单元为 0 个。


图 7. 当前存储池的使用和映射情况
图 7. 当前存储池的使用和映射情况

2.b 创建逻辑单元,如下图 8 所示,运行 mkbdsp 命令在 clusterTest 的 poolTest 存储池中分配 5GB 的逻辑单元 luTest01。


图 8. 创建逻辑单元
图 8. 创建逻辑单元

2.c 将逻辑单元 luTest01 映射到虚拟 SCSI 设备 vhost0 上,如下图 9 所示:


图 9. 将逻辑单元映射到虚拟 SCSI 设备
图 9. 将逻辑单元映射到虚拟 SCSI 设备

2.d 通过执行命令:lsmap –all 可以检查映射,如下图 10 所示,产生了一条全新的映射,将 luTest01 映射到 vhost0 上,VTD 名为 vtscsi0。


图 10. 新生成的 vSCSI 映射
图 10. 新生成的 vSCSI 映射

3. 验证瘦供特性

3.a 在逻辑单元创建和映射的过程中通过运行 lssp 命令检查。如下图 11 所示,在逻辑单元创建和映射的过程中,存储池的空闲空间始终保持不变。


图 11. 逻辑单元创建和映射中的瘦供特性
图 11. 逻辑单元创建和映射中的瘦供特性

3.b 检查资源池的使用情况,如下图 12 所示。左侧窗口内的 4 次 lssp 分别是在映射磁盘,创建卷组,创建文件系统和创建文件后收集的。不难发现映射磁盘后空闲空间没有减少。创建了 datavg 后空闲空间减少 2MB,在 datavg 中创建了 1GB 的文件系统后空闲空间减少了 33MB,在文件系统中创建了 300MB 的临时文件后,空闲空间才减少 305MB。由此不难看出共享存储池的瘦供特性。


图 12. 文件系统创建和使用中的瘦供特性
图 12. 文件系统创建和使用中的瘦供特性

共享存储池的已知限制

·在作者撰写本文章时,VIO 服务器的群集只能支持 1 个节点和 1 个共享存储池。

·目前使用共享存储池的客户端分区无法实现活动分区迁移( 因为支持活动分区迁移的分区不能将 rootvg 建立在逻辑单元对应的 vdisk 上,只能建立在 lun 盘对应的 vdisk 上)。

·每个 VIO 服务器支持的客户端分区数最大为 20。

·共享存储池中最多可包含 128 个物理 SAN 盘。

·共享存储池中最多可支持 200 个逻辑单元。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广