Shop
Support
Community
TechCenter
Home
Topics: All
Wikis
Forums
Blogs
Video
TechChat
Events
About
TechCenter
Dell Community
Search Options
Search Everything
Search Dell Storage Community
TechCenter
>
Dell Storage Community
>
Dell Storage Community - Wiki
>
Scripting on the MD3000 3000i
Join
Sign in
Scripting on the MD3000 3000i
Dell Storage Community
Home
Forum
Wiki
Group and Wiki Navigation
Loading...
Search
Article
History
Scripting on the MD3000 3000i
Dell Storage Community - Wiki
The Modular Disk Storage Manager (MDSM) software that is used to manage the Dell™ PowerVault™ MD3000 and PowerVault MD3000i storage arrays is a powerful GUI for creating disk groups, configuring hosts, and setting up Internet SCSI (iSCSI) parameters. It has a scripting component, the Storage Manager command-line interface (CLI) that enables the user to script actions that become tedious and error prone with the GUI, such as disk group/virtual disk creation, and to set parameters (such as disk group element size) that are not exposed through the GUI.
This note will describe how to use the Storage Manager CLI to script disk group/virtual disk creation.
Get the full PowerVault MD3000/MD3000i scripting document from
support.dell.com
for details (drill down to the PowerVault MD3000i on
support.dell.com
and look for user guides).
The Storage Manager CLI program is installed along with the PowerVault MD3000/MD3000i Modular Disk Storage Manager controller software (C:\Program Files (x86)\Dell\MD Storage Manager\client/smcli.exe on our systems). To automate disk group creation, use the MDSM GUI to create the first disk group on the PowerVault MD3000i.
Then, use Storage Manager CLI to store the PowerVault MD3000i configuration (r3md3000i resolves to the IP address of the management port on the first MD3000i controller):
C:\>smcli r3md3000i -c "save storagearray configuration file=\"c:\\md3000i_config_base.scr\";"
Performing syntax check...
Syntax check complete.
Executing script...
Script execution complete.
SMcli completed successfully
Here is
md3000i_config_base.scr
:
---------------------------------------------------------------------------------------------------
// Logical configuration information from Storage Array r3md3000i.
// Saved on November 2, 2007
// Firmware package version for Storage Array r3md3000i = 06.50.32.60
// NVSRAM package version for Storage Array r3md3000i = N133X-617890-015
//on error stop;
// Uncomment the two lines below to delete the existing configuration.
//show "Deleting the existing configuration.";
//clear storageArray configuration;
// Storage Array global logical configuration script commands
show "Setting the Storage Array user label to r3md3000i.";
set storageArray userLabel="r3md3000i";
show "Setting the Storage Array media scan rate to 15.";
set storageArray mediaScanRate=15;
// Uncomment the three lines below to remove default virtual disk, if exists, script command. NOTE: Default virtual disk name is always = "" (blank).
//on error continue;
//show "Deleting the default virtual disk created during the removal of the existing configuration.";
//delete virtualDisk[""];
//on error stop;
// Copies the hot spare settings
// NOTE: These statements are wrapped in on-error continue and on-error stop statements to
// account for minor differences in capacity from the physical disk of the Storage Array on which the
// configuration was saved to that of the physical disks on which the configuration will be copied.
//on error continue;
show "Creating hot spare at Enclosure 2 Slot 14.";
set physicalDisk[2,14] hotSpare=true;
//on error stop;
show "Setting the Storage Array cache block size to 4.";
set storageArray cacheBlockSize=4;
show "Setting the Storage Array to begin cache flush at 80% full.";
set storageArray cacheFlushStart=80;
show "Setting the Storage Array to end cache flush at 80% full.";
set storageArray cacheFlushStop=80;
show "Creating RAID 1 Virtual Disk SQLData1 on new Disk Group 1.";
// This command creates the Disk Group and the initial Virtual Disk on that group.
// NOTE: For Disk Groups that use all available capacity, the last Virtual Disk on this group is
// created using all remaining capacity by omitting the capacity= virtual disk creation parameter.
create virtualDisk physicalDisks=(0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4) raidLevel=1 userLabel="SQLData1" owner=0 segmentSize=128 capacity=730251814400 Bytes;
show "Setting additional attributes for Virtual Disk SQLData1.";
// Configuration settings that can not be set during Virtual Disk creation.
set virtualDisk["SQLData1"] cacheFlushModifier=10;
set virtualDisk["SQLData1"] cacheWithoutBatteryEnabled=false;
set virtualDisk["SQLData1"] mirrorEnabled=true;
set virtualDisk["SQLData1"] readCacheEnabled=true;
set virtualDisk["SQLData1"] writeCacheEnabled=true;
set virtualDisk["SQLData1"] mediaScanEnabled=true;
set virtualDisk["SQLData1"] consistencyCheckEnabled=true;
set virtualDisk["SQLData1"] readAheadMultiplier=1;
set virtualDisk["SQLData1"] modificationPriority=high;
---------------------------------------------------------------------------------------------------
Next, modify the script, remove other statements, and add additional create virtualDisk commands for additional disk groups:
The result,
md3000i_create_LUNs.scr
, looks like this:
---------------------------------------------------------------------------------------------------
show "Creating RAID 1 Virtual Disk SQLData1 on new Disk Group 1.";
create virtualDisk physicalDisks=(0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4) raidLevel=1 userLabel="SQLData1" owner=0 segmentSize=128 capacity=680.1GB;
set virtualDisk["SQLData1"] cacheFlushModifier=10;
set virtualDisk["SQLData1"] cacheWithoutBatteryEnabled=false;
set virtualDisk["SQLData1"] mirrorEnabled=true;
set virtualDisk["SQLData1"] readCacheEnabled=true;
set virtualDisk["SQLData1"] writeCacheEnabled=true;
set virtualDisk["SQLData1"] mediaScanEnabled=true;
set virtualDisk["SQLData1"] consistencyCheckEnabled=true;
set virtualDisk["SQLData1"] readAheadMultiplier=1;
set virtualDisk["SQLData1"] modificationPriority=high;
show "Creating RAID 1 Virtual Disk SQLData2 on new Disk Group 2.";
create virtualDisk physicalDisks=(0,5 0,6 0,7 0,8 0,9 1,5 1,6 1,7 1,8 1,9) raidLevel=1 userLabel="SQLData2" owner=1 segmentSize=128 capacity=680.2GB;
set virtualDisk["SQLData2"] cacheFlushModifier=10;
set virtualDisk["SQLData2"] cacheWithoutBatteryEnabled=false;
set virtualDisk["SQLData2"] mirrorEnabled=true;
set virtualDisk["SQLData2"] readCacheEnabled=true;
set virtualDisk["SQLData2"] writeCacheEnabled=true;
set virtualDisk["SQLData2"] mediaScanEnabled=true;
set virtualDisk["SQLData2"] consistencyCheckEnabled=true;
set virtualDisk["SQLData2"] readAheadMultiplier=1;
set virtualDisk["SQLData2"] modificationPriority=high;
show "Creating RAID 1 Virtual Disk SQLData3 on new Disk Group 3.";
create virtualDisk physicalDisks=(0,10 0,11 0,12 0,13 0,14 1,10 1,11 1,12 1,13 1,14) raidLevel=1 userLabel="SQLData3" owner=0 segmentSize=128 capacity=680.3GB;
set virtualDisk["SQLData3"] cacheFlushModifier=10;
set virtualDisk["SQLData3"] cacheWithoutBatteryEnabled=false;
set virtualDisk["SQLData3"] mirrorEnabled=true;
set virtualDisk["SQLData3"] readCacheEnabled=true;
set virtualDisk["SQLData3"] writeCacheEnabled=true;
set virtualDisk["SQLData3"] mediaScanEnabled=true;
set virtualDisk["SQLData3"] consistencyCheckEnabled=true;
set virtualDisk["SQLData3"] readAheadMultiplier=1;
set virtualDisk["SQLData3"] modificationPriority=high;
show "Creating RAID 1 Virtual Disk SQLData4 on new Disk Group 4.";
create virtualDisk physicalDisks=(2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 2,9) raidLevel=1 userLabel="SQLData4" owner=1 segmentSize=128 capacity=680.4GB;
set virtualDisk["SQLData4"] cacheFlushModifier=10;
set virtualDisk["SQLData4"] cacheWithoutBatteryEnabled=false;
set virtualDisk["SQLData4"] mirrorEnabled=true;
set virtualDisk["SQLData4"] readCacheEnabled=true;
set virtualDisk["SQLData4"] writeCacheEnabled=true;
set virtualDisk["SQLData4"] mediaScanEnabled=true;
set virtualDisk["SQLData4"] consistencyCheckEnabled=true;
set virtualDisk["SQLData4"] readAheadMultiplier=1;
set virtualDisk["SQLData4"] modificationPriority=high;
show "Creating RAID 1 Virtual Disk SQLLogs on new Disk Group 5.";
create virtualDisk physicalDisks=(2,10 2,11 2,12 2,13) raidLevel=1 userLabel="SQLLogs" owner=0 segmentSize=128;
set virtualDisk["SQLLogs"] cacheFlushModifier=10;
set virtualDisk["SQLLogs"] cacheWithoutBatteryEnabled=false;
set virtualDisk["SQLLogs"] mirrorEnabled=true;
set virtualDisk["SQLLogs"] readCacheEnabled=true;
set virtualDisk["SQLLogs"] writeCacheEnabled=true;
set virtualDisk["SQLLogs"] mediaScanEnabled=true;
set virtualDisk["SQLLogs"] consistencyCheckEnabled=true;
set virtualDisk["SQLLogs"] readAheadMultiplier=1;
set virtualDisk["SQLLogs"] modificationPriority=high;
--------------------------------------------------------------------------------------------------------
Finally, run the script and watch the disk groups and virtual disks being created:
C:\>smcli r3md3000i -f md3000i_create_LUNs.scr
Performing syntax check...
Syntax check complete.
Executing script...
Creating RAID 1 Virtual Disk SQLData1 on new Disk Group 1.
Creating RAID 1 Virtual Disk SQLData2 on new Disk Group 2.
Creating RAID 1 Virtual Disk SQLData3 on new Disk Group 3.
Creating RAID 1 Virtual Disk SQLData4 on new Disk Group 4.
Creating RAID 1 Virtual Disk SQLLogs on new Disk Group 5.
Script execution complete.
SMcli completed successfully.