利用 UNIX 脚本来管理 DS4000 磁盘阵列系统

为什么使用 Unix 脚本来管理 DS4000
作为一个测试工程师,在我的日常工作中我经常要花费大量的时间去完成一些很简单但是很耗时的工作 。例如,一次我想在 DS4000 上创建 200 个磁盘 。但是由于 DS4000 没有能够批量创建磁盘的功能,我花费了 4 个小时一个一个地去创建 。这次的经历使我有一种想法去创建一个能够可以批量地创建磁盘的工具 。经过我一段时间的研究,我发现 IBM Storage Manager 支持 CLI(Command Line Interface)功能,这就意味着我可以利用 UNIX 系统的脚本功能来创建一个可以被 IBM Storage Manager 使用的脚本 。通过在 IBM Storage Manager 运行这个被创建的脚本,可以在无需人机交互的情况下批量的创建磁盘 。但是作者并不保证本方法在任何情况下总是可以成功,请读者在验证本文的例子时注意做好相应的备份,最好在实验环境上进行操作 。
例子脚本介绍
那么如何创建 IBM Storage Manager 可使用的脚本呢?IBM Storage Manager 有它自己的脚本格式 。只有脚本的变量值改变而格式并不改变 。所以,UNIX 脚本需要能够让用户能够定制的输入自己的所对应的值,如需要创建磁盘的数量,HBA 卡的 WWPNs 值,来生成 IBM Storage Manager 能够使用的脚本文件 。可以设计一个配置文件来让用户输入自己对应的变量值 。下面就是个配置文件的例子:LunNumber:30 #30 个 LUNs
ArrayNumber:1 # 这些 LUNs 创建在 array 1 上
LunName:sunx325b # 这些 LUNs 的名字将为 sunx325b_0, sunx325b_1 ...
Capacity:0.5GB # 每个 LUNs 的容量是 0.5GB
HostGroupName:sunx325b_group # 这个主机组的名字为 sunx325b_group
HostName:sunx325b # 这个主机名为 sunx325b
Port0:210000e08b0e934d # 第一个 HBA 卡的 wwpn 值
Port1:210000e08b0e6e50 # 第二个 HBA 卡的 wwpn 值
HostType:8 # 主机类型
完成了对配置文件的定义以后,Unix 脚本可以把配置文件中用户定义的值解析出来,并且组织成为 IBM Storage Manager 可以使用的脚本 。一个比较好的解析配置文件的工具是 SED 编辑器,这是一个流式的编辑器 。SED 编辑器将需要处理的文本作为输入,经过一系列操作以后,输出经过修改的文本 。SED 编辑器的典型应用就是通过模式的匹配来提取文件中的一部分内容或者是把文件中的多个相同的字符串进行替换 。UNIX 脚本可以通过使用 SED 编辑器从配置文件中得到需要的数值,并把这些值添加到能够被 IBM Storage Manager 使用的脚本中去 。
例如,下面展示了如何使用 UNIX 脚本从配置文件中获取磁盘数量这个值 。这个脚本从配置文件获取 LunNumber 这个值,然后把这个值赋给脚本中的对应变量 LunNumber 。sed -n '/LunNumber:/'p $ConfigFile >tmp
lunNumber=`sed 's/LunNumber://' tmp`
例子脚本的详细说明
下面的例子是展示如何使用 SED 编辑器生成一个 IBM Storage Manager 可以使用的脚本 。这个例子中,脚本从配置文件中获得了 ArrayNumber,LunName 和 Capacity 的值,用于生成 IBM Storage Manager 使用的生成磁盘的命令,然后把这个命令添加到 IBM Storage Manager 的脚本(crtlun.cmd)文件 。x=0
while [ $x -lt $lunNumber ]
do
y=`expr $x % 2`
if [ $y -eq 0 ]
then
echo "create logicalDrive array=$arrayNumber userLabel="${lunName}_${x}"
capacity=$capacity owner=a;" >> crtlun.cmd
else
echo "create logicalDrive array=$arrayNumber userLabel="${lunName}_${x}"
capacity=$capacity owner=b;" >> crtlun.cmd
fi
x=`expr $x1`
done
这个 Unix 工具的内容是不是很简单?但是它却帮助了我把原来需要几个小时的工作减少为只需要几分钟就可以完成 。下面让我对我的 UNIX 脚本文件的内容做个比较详细的介绍 。这个名字为 ds4kscript.sh 的脚本文件可以运行在 UNIX(AIX,Solaris,Linux 等)上,用于产生一个可以在 IBM Storage Manager 上运行的脚本 。它可以用于在 DS4000 系列上创建和删除 Lun、host group、host、host port,映射 Lun 等功能 。

推荐阅读