You can't spell 'smile' without SMI

To those of you deploying Microsoft Windows 2012, you may have noticed a new feature called 'Windows Storage Management Service". This feature lets a Server administrator do what have historically been storage manament functions directly from the windows Server Manager pane. I know, we already have MMCs for our applications and we already have complete command coverage in our PowerShell Toolkit but most storage vendors have not had the foresight to do this. This feature is about using a standards approach (in this case the SNIA SMI-S) to allow a common set of powershell commands to do common storage deployment tasks such as creating an aggregate, create a LUN, create a masking group, and map a LUN to that masking group.
The obvious advantage to you is that a common powershell script or application can request storage from multiple vendors storage without needing rewrite. 
So this post is a two part post, the first part will show how to deploy the SMI-S Agent, and how to connect it to a server. The second post will show some examples of creating an aggregate, creating a vol, a LUN, and mapping that LUN to a host.
Ok, lets jump in.
Step 1 is to create a fresh Virtual Machine with the following minimums.
     Processors: 2 (1 required)
     RAM: 2GB (1 required)
     Disk Space: 100GB (for OS, the agent needs only 4GB)
     OS: Windows2008r2 or Windows2012
Step 2 is to download and install the SMI-S Agent from the NOW site. This is a free download to all registered users.
     Software Name: Data ONTAP SMI-S Agent
     Version: 4.1
Step 3 Install the Software. Very quick process.
     Click Next, then Install, then Next, then Finish
Step 4 Check the installation and verify the CIM Server is now running
     Look for Data ONAP SMI-S Agent, and click. It will open a Command window.
Command Window
C:\Program Files (x86)\Ontap\smis\pegasus\bin> SMIS CIMSERVER STATUS

Data ONTAP SMI-S Agent is running.
Step 5 Create a windows account that will be used to connect to and manage the array.
In this step you will create a windows account that will be given permissions to access an array. You can also create a NetApp Controller account that will be used to allow access. The SMI-S Agent will accept commands from the windows account, and transmit those commands to the array using the array account. In this case I would create a user named SMIUser1 with a password of SMIPass1, and on the controller I would create an account called FASUser1 with the password FASPass1. Once these account exist, use the following command to make the connection.
Command Window
C:\Program Files (x86)\Ontap\smis\pegasus\bin> SMIS SMIUser1 SMIPass1 addsecure FASUser1 FASPass1
Returned Path   ONTAP_FilerData.Hostname="",Port=443
Step 6 Gather some data. Check to make sure that the SMI-S Agent is gathering data from the Target Device.
The simple command to list out the disks in the array can be issued. You should see a line for each disk in the system.
Command Window

C:\Program Files (x86)\Ontap\smis\pegasus\bin> SMIS SMIUser1 SMIPass1 disks



Step 7 Go to the Server you want to use the new SMI-S connection. Enable its SMI-S feature.
From the Windows 2012 server, you can either use Server Manager to add a new feature or even simpler use PowerShell comamnd window.

Windows PowerShell

Copyright (C) 2012 Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> Add-WindowsFeature WindowsStorageManagementService
Step 8 User the new Storage Module commands to connect this server to the SMI-S Server.
The act of connecting to the SMI-S Agent will in addition to saving the credentials for future use, it will also add the security certificate to the proper store and perform a cursory discovery of the enviornemnt.

Windows PowerShell

Copyright (C) 2012 Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> Register-SMISProvidor –connectionuri


WARNING: Failed: Certificate Authority not recognized.


Add certificate to Trusted certificate store

Do you want to add the following certificate to Trusted Certificate Store?


[Y] Yes  [N] No  [S} Suspend [?} Help (default is “Y”): y

PS C:\Users\Administrator>

Step 9 Use the Storage Module Commands to list your SMI-S Assets   
The command get-storageprovider to get a list of the available providers that are available. The SMI-S Agent that you are connected to (that we set up in previous steps) will be listed here. The command get-storagesubsystems can then be used to get a list of controllers that are currently available via that SMI-S controller. In the case above, we only have a single controller inventoried by an SMI-S Agent, but an agent could be used to inventory a farm of controllers. The output of those commands should look similar to the following.
Windows Powershell

PS C:\Users\Administrator> get-StorageProvider


Type       Name                                                                 Manufacturer

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

SMP       Storage Spaces Management Provider             Microsoft Corporation

SMI-S           NetApp Inc.


PS C:\Users\Administrator> get-StorageSubsystem


Friendly Name                                            HealthStatus      OperationalStatus

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

Storage Spaces on SMISConsumerType  Healthy               OK

FAS6240A                                                  Healthy               OK


PS C:\Users\Administrator>

Step 10 Increase the default discovery level from 0 to 2
The default discovery level of 0 will not let you see LUNs and Aggregates or create such. We need to increase the discovery level to allow us to get useful data and then to create assets on the target device.
The simple command to do this is.
     Update-StorageProviderCache –Name FAS6240A-DiscoveryLevel Level2
The Storage Service has an iterative, multi-level cache. Once objects are discovered, they can be operated upon efficiently. But deep discoveries can take a long time, depending on the number of managable objects! Each level is cumulative so a Level3 discovery gathers all of the level 0- 2 information plus more.
The response from a successful change is only a new command prompt with no status or error.
I will post part 2 of this by friday and show how we can deploy new storage using it.


Part 2?

I'd also like to see a part 2!