使用Dell工程师编写的WSMAN脚本对PowerEdge服务器进行远程RAID管理和配置

本节中,我们将讨论如何使用WSMAN脚本对戴尔服务器进行RAID的管理和配置。关于WSMAN的基本介绍,请参阅使用WSMAN管理戴尔服务器

首先我们要下载脚本包和脚本包的说明,并安装WINRM。关于如何下载和配置WINRM,请参阅在Windows上安装和配置WSMAN客户端 - winrm

对服务器进行RAID管理和配置,我们需要进行以下操作

  1. 查看PERC卡信息、硬盘信息、虚拟磁盘VirtualDisk的状态
  2. 创建VirtualDisk虚拟磁盘
  3. 添加HotSpare热备盘
  4. 执行任务并重启

查看PERC卡信息、硬盘信息和虚拟磁盘VirtualDisk的状态

在脚本包的16_RAID_Storage_Management目录下,包含了许多RAID管理和配置的脚本。16.1到16.11都是查看类型的脚本,其中Listing的脚本是列出所有相关实例的信息,Getting的脚本是列出单独某一个实例(Instance)的信息(例如,某一块PERC卡,某一个阵列等等)。16.1_Listing_the_RAID_Inventory_Enumeration_Class脚本可以用来遍历所有RAID相关实例的信息,由于输出项目太多,这里我们不使用。

本例中我们使用16.7_Listing_the_RAID_Inventory_ControllerView_Class、16.9_Listing_the_RAID_Inventory_PhysicalDiskView_Class、16.10_Listing_the_RAID_VirtualDiskView_Inventory三个脚本分别查看PERC控制器、物理磁盘、虚拟磁盘的信息。

使用16.7_Listing_the_RAID_Inventory_ControllerView_Class [iDRAC卡IP] [用户名] [密码]的脚本结果如下,输入的指令以红色下划线标记,实际执行的命令以蓝色下划线标记:

我们可以看到RAID卡的类型是PERC H710P MiniCache的大小是1024MB,固件版本是21.1.0-0007,设备的完整描述名(FQDD)和实例ID(InstanceID) RAID.Integrated.1-1等信息。
执行16.9_Listing_the_RAID_Inventory_PhysicalDiskView_Class脚本可以查看物理磁盘的信息。
从输出中我们可以查看到所有物理磁盘的详细信息,其中包括每一块磁盘的剩余空间FreeSizeInBytes,总大小SizeInBytes,厂家、生产日期,热备状态HotSpareStatus,以及FQDD/InstanceID,此例中显示的是第一块磁盘,FQDD/InstanceID=Disk.Bay.0:Enclosure.Internal.0-1:RAID.Integrated.1-1。此实例号说明此硬盘是控制器RAID.Integrated.1-1Enclosure.Internal.0-1通道下的第一块磁盘Disk.Bay.0。本例中共有9块磁盘,FQDD/InstanceID依次是Disk.Bay.0:… 一直到Disk.Bay.8:Enclosure.Internal.0-1:RAID.Integrated.1-1。我们记录下此FQDD/InstanceID备用。
使用16.10_Listing_the_RAID_VirtualDiskView_Inventory脚本查看现有的虚拟磁盘信息:

此处我们可以看到,系统中已经存在了一个虚拟磁盘,FQDD/InstanceID为 Disk.Virtual.0:RAID.Integrated.1-1,从PhysicalDiskIDs可以看出此虚拟磁盘由0/1/2三块物理磁盘组成,由RAIDTypes可以看出此RAID的类型,其中:RAID 0 = 2,RAID 1 = 4,RAID 5 = 64,RAID 6 = 128,RAID 10 = 2048,RAID 50 = 8192,RAID 60 = 16384

PERC卡所支持的RAID级别可以用16.18.1_Getting_the_Available_RAID_levels_GetRAIDLevels脚本查看,详细信息请查看脚本包的说明文档中16.18.1节。

本例中为RAIDTypes=4,即RAID1。结合前面的物理磁盘状态,我们可以看到RAID1实际由Disk.Bay.0与Disk.Bay.1组成,Disk.Bay.2:Enclosure.Internal.0-1:RAID.Integrated.1-1是热备盘。

创建虚拟磁盘。本例中我们将使用3、4、5号磁盘创建一个RAID5

使用16.18.4_Creating_a_Single_Virtual_Disk_CreateVirtualDisk以及CreateVirtualDisk.xml配置文件可以创建虚拟磁盘。查看CreateVirtualDisk.xml文件,内容如下:

<p:CreateVirtualDisk_INPUT xmlns:p="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_RAIDService">
  <p:Target>RAID.Integrated.1-1</p:Target>
  <p:PDArray>Disk.Bay.0:Enclosure.Internal.0-0:RAID.Integrated.1-1</p:PDArray>
  <p:PDArray>Disk.Bay.1:Enclosure.Internal.0-0:RAID.Integrated.1-1</p:PDArray>
  <p:VDPropNameArray>RAIDLevel</p:VDPropNameArray>
  <p:VDPropNameArray>SpanDepth</p:VDPropNameArray>
  <p:VDPropNameArray>SpanLength</p:VDPropNameArray>
  <p:VDPropNameArray>Size</p:VDPropNameArray>
  <p:VDPropNameArray>VirtualDiskName</p:VDPropNameArray>
  <p:VDPropValueArray>4</p:VDPropValueArray>
  <p:VDPropValueArray>1</p:VDPropValueArray>
  <p:VDPropValueArray>2</p:VDPropValueArray>
  <p:VDPropValueArray>10</p:VDPropValueArray>
  <p:VDPropValueArray>vDiskNameHere</p:VDPropValueArray>
</p:CreateVirtualDisk_INPUT>

其中:

TARGET一项需要填入所要配置的PERC控制器的FQDD,本例中为RAID.Integrated.1-1。

PDArray项中需要填入用来创建RAID的所有物理磁盘。本例中我们需要填三行,分别是Disk.Bay.3:Enclosure.Internal.0-1:RAID.Integrated.1-1、Disk.Bay.4:Enclosure.Internal.0-1:RAID.Integrated.1-1、Disk.Bay.5: Enclosure.Internal.0-1:RAID.Integrated.1-1。

VDPropNameArray项中可以填入需要设置的RAID参数,可以设置的选项包括: Size, RAIDLevel, SpanDepth, SpanLength, StripeSize, ReadPolicy, WritePolicy, DiskCachePolicy, VirtualDiskName, Initialize等。详细信息请查看脚本包的说明文档中16.18.4节。

VDPropValueArray栏需要按顺序填入VDPropNameArray栏中所设置的参数的值。

本例中,第一项VDPropValueArray是RAIDLevel,需要设置为RAID5,因此对应的第一项VDPropValueArray应设置为64;第二项SpanDepth(条带的跨度),如果使用RAID 0/1/5/6请设置为1或者不设置,如果RAID10/50/60,最小设置为2;第三项SpanLength(每个条带的磁盘个数),本例中使用3块磁盘做RAID5,因此设置为3;第四项Size,设置虚拟磁盘的大小(以MB计算),如果不设置将默认采用全部物理磁盘空间,本例中设置为50000(50GB);最后一项VirtualDiskName,设置虚拟磁盘的名称,本例中设置为TEST RAID5。

本例中修改后的CreateVirtualDisk.xml配置文件如下所示:

执行16.18.4_Creating_a_Single_Virtual_Disk_CreateVirtualDisk脚本,使用CreateVirtualDisk.xml文件中的相关配置创建RAID虚拟磁盘。

注意此处输出中的InstanceID = DISK.Virtual.267386880:RAID.Integrated.1-1,配置完成后会略有变化。以及RebootRequired = Yes,意味着需要重启才能生效。

添加热备盘

本例中我们使用16.16.2_Assigning_the_Hot_Spare_AssignSpare脚本及AssignSpare.xml配置文件添加Disk8作为RAID5的热备盘。打开AssignSpare.xml文件,编辑如下:

<p:AssignSpare_INPUT xmlns:p="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_RAIDService">
  <p:Target>Disk.Bay.8:Enclosure.Internal.0-1:RAID.Integrated.1-1</p:Target>
  <p:VirtualDiskArray>Disk.Virtual.267386880:RAID.Integrated.1-1</p:VirtualDiskArray>
</p:AssignSpare_INPUT>

其中Target项设置成为Disk8的FQDD,VirtualDiskArray设置成为刚才创建的RAID5虚拟磁盘的InstanceID: Disk.Virtual.267386880:RAID.Integrated.1-1

执行任务并重启
使用16.14_Applying_the_Pending_Values_for_RAID_CreateTargetedConfigJob脚本以及CreateTargetedConfigJob_RAID.xml配置文件执行任务并重启系统。
配置CreateTargetedConfigJob_RAID.xml文件如下:

<p:CreateTargetedConfigJob_INPUT xmlns:p="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_RAIDService">
  <p:Target>RAID.Integrated.1-1</p:Target>
  <p:RebootJobType>1</p:RebootJobType>
  <p:ScheduledStartTime>TIME_NOW</p:ScheduledStartTime>
  <p:UntilTime>20130630200000</p:UntilTime>
</p:CreateTargetedConfigJob_INPUT>

其中RebootJobType可以设置为:1=PowerCycle – 关闭电源再重启;2 = Graceful Reboot without forced shutdown – 正常关机再重启;3 = Graceful reboot with forced shutdown – 强制关机再重启。ScheduledStartTime是计划执行此动作的时间,如果要立即执行,可以设置为TIME_NOW,或者可以设置为某一时刻,具体格式是“年年年年月月日日时时分分秒秒”。UntilTime是运行的时间窗口,如果超过此时间窗口,指令将不会被执行。UntilTime必须晚于当前时间。

运行16.14_Applying_the_Pending_Values_for_RAID_CreateTargetedConfigJob脚本结果如下:

我们可以使用10_Job_Control_Management目录下的脚本监控任务执行状态。详细请查看PDF脚本说明文件第10章节Job_Control_Management。本例中使用10.2.3_List_All_Jobs_In_JobStore脚本。我们可以看到RAID配置任务已被计划执行。

服务器重启进入Lifecycle Controller并自动进行配置。

配置的过程大约需要十几秒钟完成。

再次查看任务状况,显示任务正在执行中。

等待系统重新启动完毕后,再次使用10.2.3_List_All_Jobs_In_JobStore脚本查看任务执行状况,显示任务执行完毕。

配置完成后使用16.10_Listing_the_RAID_VirtualDiskView_Inventory脚本查看现有的虚拟磁盘的状态,可以看到新的虚拟磁盘已经被创建,FQDD/InstanceID= Disk.Virtual.1:RAID.Integrated.1-1。RAID类型是64(RAID5),使用3、4、5、8号磁盘,大小为50GB。从SpanDepth=1,SpanLength=3我们可以看出这是由3块磁盘组成的RAID。

使用16.9_Listing_the_RAID_Inventory_PhysicalDiskView_Class脚本,可以看到Disk8被配置成为HotSpare。

如果需要删除虚拟磁盘,可以使用16.18.7_Deleting_a_Virtual_Disk_DeleteVirtualDisk脚本与DeleteVirtualDisk.xml配置文件。详细设置请参考脚本包的说明文档。

更多脚本及配置,请参考脚本包的说明文档。

小结

使用16.7_Listing_the_RAID_Inventory_ControllerView_Class、16.9_Listing_the_RAID_Inventory_PhysicalDiskView_Class、16.10_Listing_the_RAID_VirtualDiskView_Inventory三个脚本分别查看PERC控制器、物理磁盘、虚拟磁盘的信息;
使用16.18.4_Creating_a_Single_Virtual_Disk_CreateVirtualDisk脚本创建虚拟磁盘;
使用16.16.2_Assigning_the_Hot_Spare_AssignSpare脚本设置热备盘;
使用16.14_Applying_the_Pending_Values_for_RAID_CreateTargetedConfigJob脚本应用更改

附件:

常见缩写

描述

BIOS

Basic Input / Output System

HW

Hardware

iDRAC

Integrated DELL Remote Access Controller

IPL

Initial Program Load

DUP

Dell Update Package

MOF

Managed Object File

CIM

Common Information Model

NIC

Network Interface Controller

RAID

Redundant Array of Independent Disks

FQDD

Fully Qualified Device Description

UEFI

Unified Extensible Firmware Interface

AMEA

Advanced Management Enablement Adapter

HII

Human Interface Infrastructure

WSMAN

WS-Management is a specification of a SOAP-based protocol for the management of servers, devices, applications and more