Archive

Archive for the ‘Uncategorized’ Category

HOWTO: Detecting and Automating Exchange 2010 DAG Activation

October 16, 2013 Leave a comment

An Exchange 2010 Database Availability Group (DAG) requires that each DB has more than one DB, which can be active only on one sever in the Mailbox DAG.  Various events can cause these DAG’s to become active on the opposite node – failure of hardware, load of hardware, failure of quorum, etc.  In these cases, there are ways to automate the discovery of this event.  However, it would be nice if there was a way to automate the rebalance of this event as well.  Turns out – there is.

All DAG’s and DB’s in Exchange 2010 have an “Activation Preference”.  This determines which Mailbox node is preferred, in which order.  This can be seen in the GUI as such:

clip_image001

Here we can see that A2J and EXEC are set to be Activation Preference 1 on SERVERMBX1, and K2Z is set as Activation Preference 2.  The opposite is true for SERVERMBX2.

It turns out, that since Exchange 2010 SP2, there have been built in scripts to deal with this, found in the <DRIVE>:\Program Files\Microsoft\Exchange Server\V14\Scripts folder.   Two scripts exist that are relevant here:

1) Identify the DAG status:

[PS] E:\Program Files\Microsoft\Exchange Server\V14\Scripts>.\RedistributeActiveDatabases.ps1 -ShowDatabaseDistributionByServer | ft

ServerName           TotalDbs      ActiveDbs     PassiveDbs PreferenceCoun     MountedDbs  DismountedDbs DagName

                                                            tList

———-           ——–      ———     ———- ————–     ———-  ————- ——-

SERVERMBX2                 3              1              2 {1, 2}                      1              0 SERVERvxdag2

SERVERMBX1                 3              2              1 {2, 1}                      2              0 SERVERvxdag2

-or-

[PS] E:\Program Files\Microsoft\Exchange Server\V14\Scripts>.\RedistributeActiveDatabases.ps1 -ShowDatabaseCurrentActives | ft

***************************************

Balance DAG DBs

Friday, October 11, 2013 11:08:51 PM

***************************************

Dag                                :   SERVERvxdag2

ServerCount                        :   2

DatabaseCount                      :   3

CopiesCount                        :   6

—————————-

Starting Server Distribution

—————————-

ServerName  TotalDbs ActiveDbs PassiveDbs PreferenceCountList MountedDbs DismountedDbs DagName

———-  ——– ——— ———- ——————- ———- ————- ——-

SERVERMBX1        3         2          1 {2, 1}                       2             0 SERVERvxdag2

SERVERMBX2        3         1          2 {1, 2}                       1             0 SERVERvxdag2

DbName            ActiveOnPreferen ActiveServerAtSt ActiveOnPreferen ActiveServerAtEn IsOnMostPreferre       MoveStatus

                         ceAtStart art              ceAtEnd          d                           dCopy

——            —————- —————- —————- —————- —————-       ———-

Mailboxes K2Z New                1 SERVERMBX2                                                    True  NoMoveAttempted

Mailboxes A2J New                1 SERVERMBX1                                                    True  NoMoveAttempted

Mailboxes EXEC                   1 SERVERMBX1                                                    True  NoMoveAttempted

—————-

Summary of Moves

—————-

Successfully moved      : 0

Moved to less preferred : 0

Failed to move          : 0

Not moved               : 3

Start time              : Friday, October 11, 2013 11:08:49 PM

End time                : Friday, October 11, 2013 11:08:51 PM

Duration                : 00:00:01.7628226

2) Correct the DAG status:

[PS] E:\Program Files\Microsoft\Exchange Server\V14\Scripts>.\RedistributeActiveDatabases.ps1 -DAGName SERVERvxdag2 -BalanceDBsByActivationPreference -whatif

***************************************

Balance DAG DBs

Friday, October 11, 2013 11:12:41 PM

***************************************

Dag                                :   SERVERvxdag2

ServerCount                        :   2

DatabaseCount                      :   3

CopiesCount                        :   6

—————————-

Starting Server Distribution

—————————-

ServerName  TotalDbs ActiveDbs PassiveDbs PreferenceCountList MountedDbs DismountedDbs DagName

———-  ——– ——— ———- ——————- ———- ————- ——-

SERVERMBX1        3         1          2 {2, 1}                       1             0 SERVERvxdag2

SERVERMBX2        3         2          1 {1, 2}                       2             0 SERVERvxdag2

———————–

Starting Database Moves

———————–

Considering move of ‘Mailboxes EXEC’ from ‘SERVERMBX2’ (AP = 2) to ‘SERVERMBX1’ (AP = 1)…

Database ‘Mailboxes EXEC’ successfully moved from ‘SERVERMBX2’ to ‘SERVERMBX1’.

ServerName  ActiveDbs PassiveDbs

———-  ——— ———-

SERVERMBX1         2          1

SERVERMBX2         1          2 `n

—————-

Summary of Moves

—————-

Successfully moved      : 1

Moved to less preferred : 0

Failed to move          : 0

Not moved               : 2

Start time              : Friday, October 11, 2013 11:12:39 PM

End time                : Friday, October 11, 2013 11:12:41 PM

Duration                : 00:00:01.9033464

DbName                    : Mailboxes A2J New

ActiveOnPreferenceAtStart : 1

ActiveServerAtStart       : SERVERMBX1

ActiveOnPreferenceAtEnd   : 1

ActiveServerAtEnd         : SERVERMBX1

IsOnMostPreferredCopy     : True

MoveStatus                : NoMoveAttempted

DbName                    : Mailboxes EXEC

ActiveOnPreferenceAtStart : 2

ActiveServerAtStart       : SERVERMBX2

ActiveOnPreferenceAtEnd   : 1

ActiveServerAtEnd         : SERVERMBX1

IsOnMostPreferredCopy     : True

MoveStatus                : MoveSucceeded

DbName                    : Mailboxes K2Z New

ActiveOnPreferenceAtStart : 1

ActiveServerAtStart       : SERVERMBX2

ActiveOnPreferenceAtEnd   : 1

ActiveServerAtEnd         : SERVERMBX2

IsOnMostPreferredCopy     : True

MoveStatus                : NoMoveAttempted

                Here you can see that if we run the command with the “-whatif” parameter, we see that it wants to move the EXEC DB, which is in fact activated on the incorrect server.  Regardless of what it displays, PowerShell “-whatif” only SHOWS the same output of IF the command ran.  Rerun the command with “-confirm:$False” instead of “-whatif”.   This will run the command without any prompt for confirmation – such as if you wanted to run it in an automated script periodically. 

NOTE: Changing the DAG Activation status of a DB may cause a password prompt on Outlook clients that are highly active and/or not in “cached” mode.  As such, it is recommended that this level of automation only be run outside of normal business hours (eg: 7PM – 5AM).  Automating the activation of the script may require including additional parameters to let the proper Exchange PowerShell modules to load in a non-interactive session. 

NOTE: This does not, of course, remove the need to determine the root cause of the issue and/or prevent it from occurring in the first place. 

It is worth noting that there is a wealth of built in Microsoft provided Exchange scripts, that are worthy of exploration as your time permits:

clip_image002

Particularly “StartDagServerMaintenance” and “StopDagServerMaintenance” which handle preventing the automated rebalance during maintenance instead of failure (eg: when the DAG activation status is intentional).

Categories: Uncategorized

HOWTO: Obtain DNS information from NIC’s via PowerShell

October 14, 2013 Leave a comment

Recently we have had a need to confirm DNS settings on various Windows Servers to ensure that they are pointed to the correct servers and not fully dependant on servers in a remote site, incorrectly.  In order to do so, one needs to be able to get a report on all the current settings in use and locate the errors.

A few years ago I came across a blog post (http://deinfotech.blogspot.ca/2011/11/i-was-given-task-to-change-dns-server.html) that had a similar requirement and even went a step further to programmatically update the DNS entries.  For our needs here, we will focus only on obtaining the report.

===== DNSReport.PS1 =====

$servers = Get-Content MyServers.txt

Add-Content DNSInfo.csv "ServerName,IPAddresses,NICIndex,NICName,ExistingDNSSettings"

foreach($server in $servers)

{
$error.clear()
try
{

$nicConfigs = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $server -ErrorAction Stop | Where{$_.IPEnabled -eq "TRUE"}
foreach($nicConfig in $nicConfigs)

{
$nic = Get-WmiObject Win32_NetworkAdapter -ComputerName $server -ErrorAction Stop | Where{$_.DeviceID -eq $nicConfig.Index}
$nicName = $nic.NetConnectionID
$nicIndex = $nicConfig.Index
$nicIP = $nicConfig.IPAddress
$currentDNS = $nicConfig.DNSServerSearchOrder
Write-Host "$server,$nicIP,$nicIndex,$nicName,$currentDNS"
Add-Content DNSInfo.csv "$server,$nicIP,$nicIndex,$nicName,$currentDNS"
}
}
catch [system.exception]
{
Write-Host "Error: $server" $error
Add-Content DNSInfoError.txt "Error: $server $error"
}
}

===== DNSReport.PS1 =====

The report assumes that in the folder it is run from, that a list of servers exists as a file called “MYSERVERS.TXT”.  There are many ways to build this file, I’ll let you use whatever tools work to your satisfaction (eg: dump from “net view”, using “dsquery” to pull from AD, a ping sweep, etc)

This will get you a CSV file with information that looks like:

ServerName,IPAddresses,NICIndex,NICName,ExistingDNSSettings

SERVERKEL1,172.226.0.5,10,Ethernet,172.226.0.6 172.21.1.20 172.21.1.21

SERVERKIT1,172.21.1.110,7,Local Area Connection,172.21.1.20 172.21.1.21

SERVERLANG1,172.7.0.11 fe80::d03d:824e:4846:5deb,7,Local Area Connection,172.21.1.20 172.21.0.5

SERVERLBR1,172.229.0.5,13,Team 1,172.21.1.21 172.22.0.5

SERVERMHA1,172.4.0.5,1,Local Area Connection,172.22.0.6 172.21.1.20 172.21.0.5 172.21.1.21 172.22.0.6

One thing that could be done, at the command line (if you wish to avoid Excel) is to filter and look for only the incorrect entries (eg: 172.21.0.5 and 172.22.0.6).  However, doing so here can get false positives as you are scanning the entire network vs just one site (depending on how you built MYSERVERS.TXT), and some servers SHOULD likely legitimately use those addresses.   When you import it, you’ll find that the “ExistingDNSSettings” column is space delimited, and thus you should highlight this column and do a “text to columns” to make it one DNS per column.

This turns the CSV into:

ServerName

IPAddresses

NICIndex

NICName

DNSSettings

       

SERVERKEL1

172.226.0.5

10

Ethernet

172.226.0.6

172.21.1.20

172.21.1.21

   

SERVERKIT1

172.21.1.110

7

Local Area Connection

172.21.1.20

172.21.1.21

     

SERVERLANG1

172.7.0.11

7

Local Area Connection

172.21.1.20

172.21.0.5

     

SERVERLBR1

172.229.0.5

13

Team 1

172.21.1.21

172.22.0.5

     

SERVERMHA1

172.4.0.5

1

Local Area Connection

172.22.0.6

172.21.1.20

172.21.0.5

172.21.1.21

172.22.0.6

You can now:

· Filter the IPAddresses field for the IP range of the site in question (eg: STARTS WITH TEXT = “172.21.1”)

· Filter the ExistingDNSSettings by the IP’s you’re looking for (eg: 172.21.0.5 and 172.22.0.6) for each column.  If you do all columns, then you will catch ONLY the records that use ONLY those IP’s and not those that might use one of those IP’s for one of many DNS entries – which would be acceptable.

The Blog posting does have a script for how to take the CSV and then update the remote sites.  This is programmatically difficult as depending on which NIC it is, you need to specify the command different.  This is why the script captures the “NICIndex”, to solve this issue.

Note that of course this only works for systems that will allow PowerShell in some manner.  Older Windows OS’s may not, infrastructure devices will not, etc.  So there are still a lot of places where manual intervention is required.  But this process can at least process a good number of them in bulk.  Also, if the PowerShell can NOT obtain the information it does not output to the CSV.  Instead, at the command line you will see:

SERVEREDMINF2,172.22.0.243 fe80::5f1:3782:9552:b10b,10,Ethernet,172.22.0.5 172.21.1.20

SERVEREDMMDM1,172.22.17.61 fe80::80db:27ec:ff46:f864,7,Local Area Connection,172.21.1.20 172.21.1.21 172.22.0.6 172.21.0.5

Error: SERVEREDMOSSV1 The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

Error: SERVEREDMSAN3 The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

Error: SERVEREDMTEST1 The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

Error: SERVEREDMTF1 The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

SERVEREDMVR1,172.22.17.21 fe80::7441:2dc4:eb8f:3cf7,7,Local Area Connection,172.21.1.20 172.21.1.21

Error: SERVEREDMVRANGER The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

SERVERFMM1,172.212.0.7,2,Local Area Connection 2,172.21.0.5 172.22.0.6

SERVERFSJ1,172.35.0.5,7,Local Area Connection,172.35.0.8 172.21.1.20

SERVERFSJ1,169.254.95.120,13,Local Area Connection 3,

Error: SERVERFSJ1-OLD The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

Error: SERVERFSJ3 The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

Error: SERVERFTP1 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

SERVERINV1,0.0.0.0,1,Local Area Connection 2,

SERVERINV1,172.21.0.5,2,Local Area Connection,172.21.0.5 172.22.0.6

So don’t assume that the output is all inclusive.  Also, it may be prudent to go find out WHY it’s failing, as it likely is indicative of some other larger error.  (Many of the above are obsolete servers showing 0x000706BA are in fact no longer present on the network).

Categories: Uncategorized

NetApp: OnTAP VOL Move and Relocation Procedures – CIFS Volumes – VOL MOVE METHOD

August 20, 2013 5 comments

I recently upgraded to NetApp OnTAP v8.1.3 on some production controllers.  The primary benefit to us for this version is the ability to transparently deal with 32bit and 64bit objects on NetApp.  Prior to v8.1, objects (eg: Vol/LUN/etc) on a 32bit aggregate could not be relocated, moved, Volume SnapMirror (block based) to a 64bit aggregate – be it either local or remote.  Because of this, we could not migrate data between some aggregates locally, and we were limited as to Source and Destinations for VSM relationships.  Post v8.1+, this issue has gone away.  As such, we are now relocating data to better place it on the system, as non-disruptively as possible.

There are many ways to migrate the data, but by far, the easiest is the built in “vol move” command.  This command automates the following high level tasks:

  • Creates a new temporary volume matching the source (locally)
  • Marks the volume ‘restricted’ so that it can be a VSM destination
  • Creates the VSM relationship to the temporary volume and performs the initial transfer (eg: 100GB)
  • After the initial transfer, it performs a catch-up sync of any changes that occurred during the first sync (eg: 10GB)
  • It then performs incremental catch-up sync’s quicker and quicker to get to a 0-time point (eg: 1GB, then 100MB, then 1MB, etc)
  • It then does a “cutover”, performs the last sync.  Renames the old volume, renames the new volume to the old name, deletes the old volume, and cleans up the VSM relationship it used.
  • To the system, the new volume is in the new location with the existing name, all snapshots, etc.

However, there is work to be done to make this happen, along with some caveats:

  • VOL MOVE cannot be used on NFS or CIFS exported volumes.  These require a manual procedure of a VSM and manual cutover.
    • The default on our NetApp’s is TO CREATE NFS and CIFS auto-export/auto-shares.  This is frustrating in that it makes this process a little more difficult.  LUN based VOL’s, and VSM/QSM/SV destination volumes likely should not be shared off.  If they are, they’re for us to use administratively (eg: to quickly view the share and see what is there), so they can have CIFS broken off temporarily.  Long term, this options should be disabled.
    • The VOL MOVE process CAN be used IF it is acceptable to stop the CIFS or NFS sharing on the volume for the period of the migration.  This would be a DISRUPTIVE migration, or at least a much longer duration than the method that will be described here.
  • A controller can only perform a single VOL MOVE at any time.
  • This process CAN also be done with volumes containing SnapVault, but I will cover that separately (and also covers OSSV)

There are two methods to be used here:
Option 1 – Use VOL MOVE, similar to any other non-CIFS share.  This is a largely automated move, but still has manual steps.  The CIFS share will be OFFLINE for the entire duration of the work.
Option 2 – Manually perform a Volume SnapMirror (VSM).  This process is 100% manual, but the CIFS share can be online except for a brief (~2-5 minute) period during cutover, which can be managed as to when it occur.

And there are two scenarios:
Scenario 1 – CIFS Share, volume IS NOT replicated to another NetApp
Scenario 2 – CIFS Share, volume IS replicated to another NetApp (eg: VSM/QSM/SV)

As these are complicated procedures and put data both at risk and/or an outage, I will be creating multiple documents to describe each time of movement.  This will prevent documentation that contains many “if…” “sometimes….” or other wording.  You will be able to choose the appropriate HOWTO and follow it through start to finish.

IF YOU HAVE NOT PERFORMED THIS TASK ON TEST VOLUMES, WITH REPLICATION,  YOU SHOULD NOT PERFORM THIS TASK IN PRODUCTION.  THERE ARE MANY MOVING PARTS HERE, THAT REQUIRE ATTENTION TO DETAIL AND EXPERIENCE.

OPTION 1 – DISRUPTIVE METHOD, USING VOL MOVE TO AUTOMATE MIGRATION, WITH or WITHOUT A VOLUME SNAPMIRROR RELATIONSHIP

  1. Identify a destination AGGREGATE with sufficient space for your volume to move to.

    On the FILER> run “aggr show_space <aggr>”

    CONTROLLERA> aggr show_space aggr1

    Aggregate ‘aggr1’

        Total space    WAFL reserve    Snap reserve    Usable space       BSR NVLOG           A-SIS          Smtape

      10831120000KB    1083112000KB             0KB    9748008000KB             0KB      19893840KB             0KB

    Space allocated to volumes in the aggregate

    Volume                          Allocated            Used       Guarantee

    vol0                          264199884KB      82748964KB          volume

    VOL_CIFS_03                  1755527744KB    1731532708KB            none

    SM_VOL_SERVER_DB4_SMSQL        21665848KB      21139136KB            none

    SM_VOL_SERVER_DB1_SMSQL       379584568KB      88907220KB          volume

    SM_VOL_SERVER_DB4_MDF         562387320KB     555229264KB            none

    SM_VOL_SERVER_DB1_SMSQLMOUNT     227750764KB     196552504KB          volume

    SM_VOL_SERVER_DB1_SP2010_MDF     168704284KB     119878260KB          volume

    SM_VOL_SERVER_INFDB2_SMSQL      60088504KB      59479840KB            none

    ndm_dstvol_1376588545           8081740KB       4306004KB    (restricted)

    Aggregate                       Allocated            Used           Avail

    Total space                  3447990656KB    2859773900KB    6,279,819,496KB

    Snap reserve                          0KB             0KB             0KB

    WAFL reserve                 1083112000KB     117340548KB     965771452KB

    The highlighted portion shows the available space on the destination aggregate.  I have also added the ‘000 separator of “,” for readability.  We can see that “aggr1” has 6.2TB free, roughly.

  2. Identify the size of the volume to be moved, by performing the same task on the source aggregate – “aggr4” in this example:

    CONTROLLERA> aggr show_space aggr4

    Aggregate ‘aggr4’

        Total space    WAFL reserve    Snap reserve    Usable space       BSR NVLOG           A-SIS          Smtape

      12150265344KB    1215026532KB     546761940KB   10388476872KB             0KB           384KB             0KB

    Space allocated to volumes in the aggregate

    Volume                          Allocated            Used       Guarantee

    SM_VOL_SERVER_DB1_MDF        1028051932KB     279,358,528KB          volume

    SM_VOL_SERVER_INFDB2_MDF      305358308KB     302,311,992KB            none

    Aggregate                       Allocated            Used           Avail

    Total space                  1333410240KB     581670520KB    8930637892KB

    Snap reserve                  546761940KB             0KB     546761940KB

    WAFL reserve                 1215026532KB     255693876KB     959332656KB

    Both of the volumes listed are around 300GB.  These will easily fit into the 6.2TB free on aggr1.

  3. If the VOL in question, is a VOLUME SNAPMIRROR (VSM) Primary folder, we must break the relationship to the secondary while we perform our tasks:

    On the SECONDARY filer:

    Snapmirror update <secondary_filer>:<secondary_vol>

    snapmirror quiesce <secondary_filer>:<secondary_vol>

    snapmirror break <secondary_filer>:<secondary_vol>

    Example:

    snapmirror update CONTROLLERA:SM_VOL_AVW_TEST1

    snapmirror quiesce CONTROLLERA:SM_VOL_AVW_TEST1

    snapmirror break CONTROLLERA:SM_VOL_AVW_TEST1

  4. We need to obtain the CIFS information for the VOLUME.  We can obtain this by searching through the \\<FILER>\C$\ETC\CIFSCONFIG_SHARE.CFG file:

    Q:\etc>find /i “VOL_AVW_TEST1” \\CONTROLLERA\c$\etc\cifsconfig_share.cfg

    ———- \\CONTROLLERA\C$\ETC\CIFSCONFIG_SHARE.CFG

    cifs shares -add “VOL_AVW_TEST1$” “/vol/VOL_AVW_TEST1” -comment “Purge Sept 1”

    cifs access “VOL_AVW_TEST1$” everyone Full Control

    cifs access “VOL_AVW_TEST1$” S-1-5-XX-544 Read

    cifs access “VOL_AVW_TEST1$” S-1-5-XX-xxxxxxxx-118882789-1848903544-53248 Full Control

    However – note that there is both “CIFS SHARES –ADD” command which contains the volume name “VOL_AVW_TEST1” and “CIFS ACCESS” which contains the share name.  In the above example, the CIFS share name matches that of the volume – this will NOT always be the case.  If the share has other names, or there are QTree’s or other subdirectories shared, they may show all details:

    Q:\etc>find /i “VOL_AVW_TEST1” \\CONTROLLERA\c$\etc\cifsconfig_share.cfg

    ———- \\CONTROLLERA\C$\ETC\CIFSCONFIG_SHARE.CFG

    cifs shares -add “VOL_AVW_TEST1$” “/vol/VOL_AVW_TEST1” -comment “Purge Sept 1”

    cifs access “VOL_AVW_TEST1$” everyone Full Control

    cifs access “VOL_AVW_TEST1$” S-1-5-32-544 Read

    cifs access “VOL_AVW_TEST1$” S-1-5-21-xxxxxxxx-118882789-1848903544-53248 Full Control

    cifs shares -add “TEST_AVW_ADMIN1” “/vol/VOL_AVW_TEST1/Admin” -comment “Purge Sept 1”

Here you can see that a second share DOES exist, but you do not see the “cifs shares” commands for it.  So the recommendation then is:

  1. Look for the “VOL_NAME” in the file and look for ONLY “CIFS SHARES –ADD” commands:

    Q:\etc>find /i “VOL_AVW_TEST1” \\CONTROLLERA\c$\etc\cifsconfig_share.cfg | find /i “cifs shares -add”

    cifs shares -add “VOL_AVW_TEST1$” “/vol/VOL_AVW_TEST1” -comment “Purge Sept 1”

    cifs shares -add “TEST_AVW_ADMIN1” “/vol/VOL_AVW_TEST1/Admin” -comment “Purge Sept 1”

  2. Look for the “SHARE NAME” to get the “CIFS ACCESS” commands:

    Q:\etc>find /i “VOL_AVW_TEST1$” \\CONTROLLERA\c$\etc\cifsconfig_share.cfg | find /i “cifs access”

    cifs access “VOL_AVW_TEST1$” everyone Full Control

    cifs access “VOL_AVW_TEST1$” S-1-5-32-544 Read

    cifs access “VOL_AVW_TEST1$” S-1-5-21-xxxxxxxx-118882789-1848903544-53248 Full Control

    Q:\etc>find /i “TEST_AVW_ADMIN1” \\CONTROLLERA\c$\etc\cifsconfig_share.cfg | find /i “cifs access”

    cifs access “TEST_AVW_ADMIN1” everyone Full Control

    cifs access “TEST_AVW_ADMIN1” S-1-5-21-xxxxxxxx-118882789-1848903544-53248 Full Control

You now have ALL of the CIFS commands and configuration for the volume in question.  Each “CIFS ACCESS” contains one user or group setting.   Once we have the above details we can recreate only the relevant portions of the CIFS commands:

cifs shares -add “VOL_AVW_TEST1$” “/vol/VOL_AVW_TEST1” -comment “Purge Sept 1”
cifs access “VOL_AVW_TEST1$” everyone Full Control
cifs access “VOL_AVW_TEST1$” S-1-5-32-544 Read
cifs access “VOL_AVW_TEST1$” S-1-5-21-xxxxxxxx-118882789-1848903544-53248 Full Control
cifs shares -add “TEST_AVW_ADMIN1” “/vol/VOL_AVW_TEST1/Admin” -comment “Purge Sept 1”
cifs access “TEST_AVW_ADMIN1” everyone Full Control
cifs access “TEST_AVW_ADMIN1” S-1-5-21-xxxxxxxx-118882789-1848903544-53248 Full Control

  1. In order for VOL MOVE to work, the VOL must not be a CIFS share or NFS export.  So we will need to REMOVE the shares – which is why we got the commands above.

    To remove the shares we run a “CIFS SHARES –DELETE <SHARE_NAME>”.  Using the above example:

    cifs shares -delete “VOL_AVW_TEST1$”
    cifs shares -delete “TEST_AVW_ADMIN1”

The CIFS shares for the folder are now removed, and CIFS access to the shares is terminated.  USERS ARE NOW OFFLINE.

There exists the possibility that the share is exported via NFS as well – as this is a default.   As this is not required, we will remove this as well:

exportfs -z /vol/VOL_AVW_TEST1

  1. We then run the VOL MOVE:

    # We perform the actual “vol move” – this will vary in time based on how much data is being moved and

    # how busy the controller is.  Because it returns control to the console, we cannot perform the next

    # steps via script until the process is done.

    vol move start VOL_AVW_TEST1 aggr1

    The “vol move” can be checked via a “vol move status” or a “snapmirror status”.  Samples for another volume are shown below:

    CONTROLLERA> vol move status

    Source                    Destination                     CO Attempts    CO Time     State

    VOL_AVW_TEST1             aggr1                           3              60          setup

    CONTROLLERA> snapmirror status VOL_AVW_TEST1

    Snapmirror is on.

    Source                              Destination                           State          Lag        Status

    127.0.0.1:VOL_AVW_TEST1  CONTROLLERA:ndm_dstvol_1376588545     Uninitialized  –          Transferring  (23 GB done)

  1. Immediately following the volume indicating successful:

    Fri Aug 16 11:16:57 MDT [CONTROLLERA:vol.move.End:info]: Successfully completed move of volume VOL_AVW_TEST1 to aggr aggr1.

    Run the CIFS commands we obtained in step 4 – this will recreate the Shares and Share Security.

    cifs shares -add “VOL_AVW_TEST1$” “/vol/VOL_AVW_TEST1” -comment “Purge Sept 1”
    cifs access “VOL_AVW_TEST1$” everyone Full Control
    cifs access “VOL_AVW_TEST1$” S-1-5-32-544 Read
    cifs access “VOL_AVW_TEST1$” S-1-5-21-xxxxxxxx-118882789-1848903544-53248 Full Control
    cifs shares -add “TEST_AVW_ADMIN1” “/vol/VOL_AVW_TEST1/Admin” -comment “Purge Sept 1”
    cifs access “TEST_AVW_ADMIN1” everyone Full Control
    cifs access “TEST_AVW_ADMIN1” S-1-5-21-xxxxxxxx-118882789-1848903544-53248 Full Control

As the Volume Name is not changed, only the location, these commands transfer over.

The CIFS shares for the folder are now re-added, and CIFS access to the shares is available.  USERS ARE NOW ONLINE, but have been offline for the duration of the VOL MOVE command.

  1. Resync the original VSM relationship from the Primary:

    On the SECONDARY filer:

    snapmirror resync –S <primary_filer>:<primary_vol> <secondary_filer>:<secondary_vol>

    Example:

    snapmirror resync -S CONTROLLERB:VOL_AVW_TEST1 SM_VOL_AVW_TEST1

    You may be prompted to delete changed snapshots. Review the list, but what you’ll find is that the snapshots on the Destination are older than the Source, and the source likely has deleted some due to age in your migration window. If acceptable, continue.

  1. Troubleshooting steps:

    The only real issue I’ve seen is that the “cutover” attempt which normally tries 3 times with a 60 second cutover time, times out.  If the task is performed at night, when the controller(s) are busier with background tasks (eg: DeDupe, Replication, Backups, etc) then some processes will take longer, and 60 seconds may not be quick enough.  If the VOL being moved was a LOCAL LUN (eg: for an SQL server) then >60 seconds might be a concern to do live, and we’d have to make it work.  But for a VSM Secondary Destination folder, we don’t care if it takes 300 seconds to complete, as the VSM is “broken-off” until it’s done anyway.  Theory says that there should be no net-new data coming in anyway, so the cutover should be able to complete.

    In the event that this occurs try:

    # VOL MOVE with 5 retries and 300 second cutover.

    vol move start VOL_AVW_TEST1 aggr1 –r 5 –w 300

  2. Logging:

    If you are looking for logs, the easiest way is to map a drive to the C$ share of the controller.  Then, you can browse the “messages” log and search for “vol.move”.  Example:

    Q:\etc\log>find /i “vol.move” \\CONTROLLERA\c$\etc\log\messages | find /i “SP2010”

    Thu Aug 15 08:32:27 MDT [CONTROLLERA:vol.move.Start:info]: Move of volume SM_VOL_SERVER_DB1_SP2010_MDF to aggr aggr1 started

    Thu Aug 15 08:33:16 MDT [CONTROLLERA:vol.move.transferStart:info]: Baseline transfer from volume SM_VOL_SERVER_DB1_SP2010_MDF to ndm_dstvol_1376577147 started.

    Thu Aug 15 08:50:37 MDT [CONTROLLERA:vol.move.transferStatus:info]: Baseline transfer from volume SM_VOL_SERVER_DB1_SP2010_MDF to ndm_dstvol_1376577147 took 1032 secs and transferred 80961556 KB data.

    Thu Aug 15 08:50:39 MDT [CONTROLLERA:vol.move.transferStart:info]: Update from volume SM_VOL_SERVER_DB1_SP2010_MDF to ndm_dstvol_1376577147 started.

    Thu Aug 15 08:51:05 MDT [CONTROLLERA:vol.move.transferStatus:info]: Update from volume SM_VOL_SERVER_DB1_SP2010_MDF to ndm_dstvol_1376577147 took 19 secs and transferred 6920 KB data.

    Thu Aug 15 08:51:12 MDT [CONTROLLERA:vol.move.transferStart:info]: Update from volume SM_VOL_SERVER_DB1_SP2010_MDF to ndm_dstvol_1376577147 started.

    Thu Aug 15 08:51:39 MDT [CONTROLLERA:vol.move.transferStatus:info]: Update from volume SM_VOL_SERVER_DB1_SP2010_MDF to ndm_dstvol_1376577147 took 20 secs and transferred 216 KB data.

    Thu Aug 15 08:51:42 MDT [CONTROLLERA:vol.move.updateTimePrediction:info]: Expected time for next update from volume SM_VOL_SERVER_DB1_SP2010_MDF to ndm_dstvol_1376577147 is 1 secs to transfer 64 KB data.

    Thu Aug 15 08:51:47 MDT [CONTROLLERA:vol.move.cutoverStart:info]: Cutover started for vol move of volume SM_VOL_SERVER_DB1_SP2010_MDF to aggr aggr1.

    Thu Aug 15 08:52:09 MDT [CONTROLLERA:vol.move.cutoverEnd:info]: Cutover finished for vol move of volume SM_VOL_SERVER_DB1_SP2010_MDF to aggregate aggr1 – time taken 21 secs

    Thu Aug 15 08:52:18 MDT [CONTROLLERA:vol.move.End:info]: Successfully completed move of volume SM_VOL_SERVER_DB1_SP2010_MDF to aggr aggr1.

    These are the same messages that appear on the console screen, interrupting your work.  Looking at them in the messages log allows you to filter and make them more readable. 

By changing the filters:

Q:\etc\log>find /i “vol.move” \\CONTROLLERA\c$\etc\log\messages | find /i “Baseline”

Tue Aug 13 17:03:12 MDT [CONTROLLERA:vol.move.transferStart:info]: Baseline transfer from volume VOL_AVW_TEST1 to ndm_dstvol_1376434956 started.
Tue Aug 13 17:04:24 MDT [CONTROLLERA:vol.move.transferStatus:info]: Baseline transfer from volume VOL_AVW_TEST1 to ndm_dstvol_1376434956 took 68 secs and transferred 6318532 KB data.
Tue Aug 13 17:22:19 MDT [CONTROLLERA:vol.move.transferStart:info]: Baseline transfer from volume VOL_AVW_TEST1 to ndm_dstvol_1376436098 started.
Tue Aug 13 17:41:17 MDT [CONTROLLERA:vol.move.transferStatus:info]: Baseline transfer from volume VOL_AVW_TEST1 to ndm_dstvol_1376436098 took 1131 secs and transferred 31618820 KB data.
Thu Aug 15 11:20:25 MDT [CONTROLLERA:vol.move.transferStart:info]: Baseline transfer from volume SM_VOL_SERVER_INFDB2_SMSQL to ndm_dstvol_1376587157 started.
Thu Aug 15 11:32:02 MDT [CONTROLLERA:vol.move.transferStatus:info]: Baseline transfer from volume SM_VOL_SERVER_INFDB2_SMSQL to ndm_dstvol_1376587157 took 685 secs and transferred 59376696 KB data.
Thu Aug 15 11:43:08 MDT [CONTROLLERA:vol.move.transferStart:info]: Baseline transfer from volume SM_VOL_SERVER_INFDB2_MDF to ndm_dstvol_1376588545 started.

You can start to collect other details.  But looking for “Baseline” we can see each baseline transfer, with their # of seconds and # of KB transferred, which could help us for statistics to use to estimate future transfers.  As we see both the “Started” and “completed” time, we can also get a bearing on when the transfers occurred, if we’re trying to compare to logs for other reasons.                                                                                                                                                             

Categories: FAS3040, NetApp, Uncategorized

HOWTO: Install Dell SupportAssist v1.2.0 – part of Dell OME Open Manage Essentials v1.2

July 31, 2013 Leave a comment

In a previous HOWTO (HOWTO: Installing Dell Open Manage Essentials (OME) v1.2 on Windows 2012) I covered the installation of Dell OME v1.2.  This installs other additional components – one of which is Dell SupportAssist v1.2.0, used for sending support requests as a “phone home” to Dell Support with details about any hardware failures it finds. This document covers the simple installation of that product.

1)  The Dell SupportAssist setup will launch:

clip_image002

Click OK.

2) Click I AGREE when it launches:

clip_image004

3) Accept the licence agreement, and click NEXT:

clip_image006

4) On the registration screen, enter the appropriate information for Dell to contact us when an event occurs:

image

Click NEXT.

5) On the READY TO INSTALL screen, click INSTALL:

clip_image010

6) On the INSTALL WIZARD COMPLETE screen, click FINISH.

clip_image012

7) When you restart the Dell OME login, the SupportAssist screen will pop up.  Click GO TO SETTINGS.

clip_image014

8) When the SETTINGS window comes up:

image

Enter the Device Type credentials.  The first will be:

DEVICE TYPE = SERVER

CREDENTIAL TYPE = WINDOWS

USERNAME = NETWISE\svcautomation (or some other appropriate service account)

PASSWORD = the appropriate password.

Change:

FREQUENCY = WEEKLY (from MONTHLY)

RECUR EVERY = 1 Week on SUNDAY at 12:00AM.

Click SAVE CHANGES.

clip_image018

There are a few other device types, so do the same for ESX/ESXi and the IDRAC7 (RMU).

clip_image020

clip_image022

You can now continue or close Dell OME/SupportAssist if you wish.

Categories: Dell, OME, Uncategorized

HOWTO: Dell iDRAC Standardization using RACADM.EXE

July 14, 2013 Leave a comment

I have been looking into reconfiguring the Dell iDRAC’s to be more standard.  This included renaming from *-idrac to *-rmu (our company standard – we’re an IBM/Dell shop now) and to set the root password similar to the RMU’s.   I noticed a few other things that may still be outstanding, I’d have to check them all just to be sure.  These include:

· E-mail alert monitoring

· AD login capability

· -IDRAC vs –RMU naming and consistency

· Root user password not matching – and not meeting complexity.  If we’re going to change these, there is an argument to be made to changing them all as the current RMU password isn’t meeting complexity and is likely old.

What I have managed to do I think will be great going forward.   I have used the “racadm” program in the past, but only in spot locations and never in depth.  If you login via SSH to the iDRAC, you can run commands against it, including standardizing it.  There is also a CLI based “racadm” which will work remotely, but I’m having issues making it connect, I believe related to SSL.

You can obtain the RACADM program either via the DRAC Tools package (http://www.dell.com/support/drivers/us/en/04/DriverDetails/Product/poweredge-r620?driverId=K7F2N&osCode=WS8R2&fileId=3196045542&languageCode=en&categoryId=SM)  or in the OMSA Managed Node package (http://www.dell.com/support/drivers/us/en/04/DriverDetails/Product/poweredge-r620?driverId=WYD5G&osCode=WS8R2&fileId=3195924439&languageCode=en&categoryId=SM).  These can be installed on any workstation or management station, but the OMSA Managed Node will install the OMSA Web Server used for connecting to other remote OMSA Nodes (eg: ESXi hosts with no web server).

The point of all this is that it would now be possible to configure the iDRAC via text file.   One can either SSH to the iDRAC and enter “racadm” at the “admin-1/>” prompt and then enter commands shown below under “SSH Config”.  Alternatively, this can be done via the RACADM.EXE which is installed to “C:\Program Files\Dell\SysMgt\idrac\racadm.exe”.  Using RACADM.exe will require the use of command line parameters to tell it how to connect:

Racadm -r fsrvcloesxi1-rmu –u root –p <password>

-or-

Racadm r fsrvcloesxi-rmu -I

The “-I” will interactively ask for the password.

Samples are below for both SSH and RACADM.EXE configurations.  Note that RACADM.EXE will be far easier to use programmatically – for example using an input CSV file and a FOR loop, one could reconfigure all IDRAC’s to match in short time.  The SSH method does not accept variables, and has some issues pasting in more than a few lines at a time.

It would be fairly trivial to use a for loop and feed a CSV of hostnames to the RACADM.EXE version and have it walk through all of them.  It’s a little slow in processing, especially if you have an untrusted/default SSL cert.  But…. you can set it and forget it and walk away, and come back later, so really – who cares how slow it might be.

By the way, if anyone has a suggestion or feedback on how I can better format “code” using WordPress and/or LiveWriter, or something otherwise – DO let me know!

 

===== Dell iDRAC RACADM SSH Config =====

putty nw-esxi01-idrac
racadm
#
#
ftp://ftp.dell.com/Manuals/all-products/esuprt_ser_stor_net/esuprt_poweredge/poweredge-m1000e_Developer’s%20Guide6_en-us.pdf
#
# Modify the hostname
racadm config -g cfgLanNetworking -o cfgDNSRacName nw-esxi01-rmu
racadm config -g cfgLanNetworking -o cfgNicEnable 1
racadm config -g cfgLanNetworking -o cfgNicIPv4Enable 1
# Modify the IP Address
racadm config -g cfgLanNetworking -o cfgNicIpAddress 10.0.0.241
racadm config -g cfgLanNetworking -o cfgNicNetmask 255.255.255.0
# Modify the IP Gateway, if applicable
racadm config -g cfgLanNetworking -o cfgNicGateway 10.0.0.1
# Sets the iDRAC NIC to DEDICATED.
racadm config -g cfgLanNetworking -o cfgNicSelection 1
#racadm config -g cfgLanNetworking -o cfgNicVLanEnable 1
#racadm config -g cfgLanNetworking -o cfgNicVLanID 111
# Only works if the NICIPAddress comes from DHCP.
#racadm config -g cfgLanNetworking -o cfgDNSServersFromDHCP 1
racadm config -g cfgLanNetworking -o cfgDNSServer1 10.0.0.11
racadm config -g cfgLanNetworking -o cfgDNSServer2 10.0.0.13
racadm config -g cfgLanNetworking -o cfgDNSDomainName netwise.ca
racadm config -g cfgLanNetworking -o cfgDNSRegisterRac 1
racadm config -g cfgRemoteHosts -o cfgRhostsSyslogEnable 1
racadm config -g cfgRemoteHosts -o cfgRhostsSyslogServer1 syslog1.netwise.ca
racadm config -g cfgRemoteHosts -o cfgRhostsSyslogPort 514
racadm config -g cfgRemoteHosts -o cfgRhostsSmtpServerIpAddr ssmtp.focus.ca
racadm config -g cfgEmailAlert -i 1 -o cfgEmailAlertIndex 1
racadm config -g cfgEmailAlert -i 1 -o cfgEmailAlertEnable 1
racadm config -g cfgEmailAlert -i 1 -o cfgEmailAlertAddress alerts
@netwise.ca
racadm config -g cfgEmailAlert -o cfgEmailAlertCustomMsg -i 1 “This is a test!”
racadm config -g cfgOobSnmp -o cfgOobSnmpAgentEnable 1
racadm config -g cfgOobSnmp -o cfgOobSnmpAgentCommunity nw_public
racadm config -g cfgActiveDirectory -o cfgADEnable 1
racadm config -g cfgActiveDirectory -o cfgADAuthTimeout 60
racadm config -g cfgActiveDirectory -o cfgADType 2
racadm config -g cfgActiveDirectory -o cfgADDcSRVLookupEnable 1
racadm config -g cfgActiveDirectory -o cfgADDcSRVLookupbyUserdomain 1
racadm config -g cfgActiveDirectory -o cfgADDcSRVLookupDomainName netwise.ca
racadm config -g cfgActiveDirectory -o cfgADGcSRVLookupEnable 1
racadm config -g cfgActiveDirectory -o cfgADGcRootDomain netwise.ca
racadm config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupIndex 1
racadm config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupName “Domain Admins”
racadm config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupDomain netwise.ca
racadm config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupPrivilege 0x000001ff
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminIndex 2
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminUserName root
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminPassword <passwordhere>
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminEnable 1
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminPrivilege 0x000001ff
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminIpmiLanPrivilege 4
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminIpmiSerialPrivilege 4
racadm config -g cfgUserAdmin -i 2 -o cfgUserAdminSolEnable 1

===== Dell iDRAC RACADM SSH Config =====

===== Dell iDRAC RACADM CLI Config =====

set RAC_HOST=nw-esxi01-rmu
set RAC_USER=root
set RAC_PASS=<password>
set RAC_PASSNEW=<password>
set RAC_IPADDR=10.0.0.241
set RAC_IPMASK=255.255.255.0
set RAC_IPGW=10.0.0.1
set RAC_DNS1=10.0.0.11
set RAC_DNS2=10.0.0.13
set RAC_FQDN=netwise.ca
set RAC_SYSLOG=syslog1.netwise.ca
set RAC_SMTP=smtp.netwise.ca
set
RAC_ALERTEMAIL=alerts@netwise.ca
set
RAC_SNMPv2=nw_public
# Modify the hostname
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgDNSRacName $RAC_HOST
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicIPv4Enable 1
# Modify the IP Address
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicIpAddress %RAC_IPADDR%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicNetmask %RAC_IPMASK%
# Modify the IP Gateway, if applicable
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicGateway %RAC_IPGW%
# Sets the iDRAC NIC to DEDICATED.
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicSelection 1
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicVLanEnable 1
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgNicVLanID 111
# Only works if the NICIPAddress comes from DHCP.
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgDNSServersFromDHCP 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgDNSServer1 %RAC_DNS1%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgDNSServer2 %RAC_DNS2%
# Only works if the NICIPAddress comes from DHCP.
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgDNSDomainNameFromDHCP 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgDNSDomainName %RAC_FQDN%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgLanNetworking -o cfgDNSRegisterRac 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsSyslogEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsSyslogServer1 %RAC_SYSLOG%
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsSyslogServer2
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsSyslogServer3
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsSyslogPort 514
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsFwUpdateTftpEnable 1
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsFwUpdateIpAddr 0.0.0.0
#racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsFwUpdatePath
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgRemoteHosts -o cfgRhostsSmtpServerIpAddr %RAC_SMTP%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgEmailAlert -i 1 -o cfgEmailAlertIndex 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgEmailAlert -i 1 -o cfgEmailAlertEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgEmailAlert -i 1 -o cfgEmailAlertAddress %RAC_ALERTEMAIL%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgEmailAlert -o cfgEmailAlertCustomMsg -i 1 “This is a test!”
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgOobSnmp -o cfgOobSnmpAgentEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgOobSnmp -o cfgOobSnmpAgentCommunity %RAC_SNMPv2%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADAuthTimeout 60
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADType 2
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADDcSRVLookupEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADDcSRVLookupbyUserdomain 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADDcSRVLookupDomainName %RAC_FQDN%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADGcSRVLookupEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgActiveDirectory -o cfgADGcRootDomain %RAC_FQDN%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupIndex 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupName “Domain Admins”
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupDomain %RAC_FQDN%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgStandardSchema -i 1 -o cfgSSADRoleGroupPrivilege 0x000001ff
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminIndex 2
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminUserName root
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminPassword %RAC_PASSNEW%
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminEnable 1
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminPrivilege 0x000001ff
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminIpmiLanPrivilege 4
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminIpmiSerialPrivilege 4
racadm -r %RAC_HOST% -u %RAC_USER% -p %RAC_PASS% config -g cfgUserAdmin -i 2 -o cfgUserAdminSolEnable 1

===== Dell iDRAC RACADM CLI Config =====

Categories: Dell, Hardware, IDRAC, Uncategorized

vSphere v5.1 and Windows 2012–Updates You May Need!

September 6, 2012 Leave a comment

UPDATED SEPT 29 2012!  Check under DELL below.

By now, everyone must be well aware of both VMware and Microsoft’s recent product announcements.  Of course with new products, comes new products which support those ecosystems – both from the vendors themselves and from 3rd parties.  I wanted to try to make a list of these updates, to help folks keep in mind what they need to look for.

VMware Workstation v9.0:

Workstation 9 – of course this brings support both for running on top of Windows 8 and 2012 as a host, as well as support for both OS’s as guests running virtualized.  As with the last few releases, nested virtualization is supported – making it an excellent way to run a “lab in a box” and try out new features of the Microsoft and VMware releases.

VMware vSphere and vCloud Suite v5.1:

Bits for these releases are supposed to be posted and available on Sept 11 2012.  Expect many links that night…

Windows 2012 and Windows 8:

Windows Server 2012 Try It
Various trial versions of the Server 2012 OS and virtual hosted labs for trying out new features.  You can also just recently find the final/RTM version on MSDN.

Windows 8 is also still not yet ‘launched’, so various trial options aren’t available just yet.  The final/RTM version is available via the MSDN site though.

Windows Management Framework 3.0
The Framework includes updates to PowerShell, WMI and WinRM v3.0 for Windows 7, 2008, & 2008 R2

Update for Windows Server Update Services 3.0 SP2 (KB2734608)
Update for Windows Server Update Services 3.0 SP2 for x64-based Systems (KB2734608)
WSUS is of course going to need updates to support updating the new operating systems.

Windows Server 2012 Hyper-V Component Architecture Poster and Companion References
My IT Directory today tweeted a link to these posters, calling them “Tech Porn” – I cannot disagree!  I’ve always liked any vendor’s architecture posters, they’re great for “at a glance” understanding and discussion.  Even better when you happen to be working for someone with high speed plotters and large format printers….

Dell PowerEdge:

I haven’t found any updates yet, as all of my lab servers are Dell PowerEdge 1950 or 2950 class.  Perhaps after both releases go public.

DELL vSphere Hypervisor 5.1 – note that this is indicated as only for for reinstallation on SD and USB based installations.  I would suspect that you would otherwise simply use the VMware ISO and install the OMSA Extension/VIB’s as required (https://vnetwise.wordpress.com/?s=omsa for instructions on how..).    But we also have an updated OMSA v7.1 VIB for ESXi v5.1!

There is also an urgent update for PowerEdge 2950 DRAC5’s and BIOS 10G that you should install ASAP.

 

IBM X-Series and Blades:

I’ve reached out to my local IBM reps, but at this time there isn’t yet an IBM Customized ESXi v5.1 ISO (net-new or upgrade) available.  Soon, I’m hoping, as I’m anxious to get this upgrade in.  Though, hopefully, we’ll be able to do it with VUM alone – assuming no VIB/CIM/etc compatibility issues.

HP Servers:

I’ve only just started trying to reach out and find a local HP rep for our local VMUG – but I’m looking for the same customized ISO and/or VIB/CIM updates

NetApp:

NetApp Simplifies Storage and Data Management with Support for Windows Server 2012
Bringing support for Windows 2012, there are updated version of SnapDrive v6.5, SnapManager for SQL v6.0, and SnapManager for Hyper-V v1.2.  OnCommand Plug-In for Microsoft v3.2 which enables SCOM2012 SP1 integration is useful for both Microsoft and VMware shops using SCOM to see an end to end view of their systems and requiring visibility into the NetApp storage portions.  Also OnTAP v8.2 Beta is now public, so if you’d like to get the jump on those features, this would be the time.

UPDATE – Still waiting on SMSQL v6.0 and SD v6.5, unfortunately.

Virtual Storage Console (VSC) for VMware vSphere v4.1 is just coming out of beta, and should be GA/Public in the next week or two.  As soon as I get an update from our NetApp reps, I’ll be sure to update this post.

UPDATE – I understand there were a couple of kinks found for compatibility with ESXi v5.1 and there is one more round of beta to confirm they’re fixed.  I find no fault in a vendor who admits these things and is honest!

Equallogic:

Dell EqualLogic PS Series Firmware – v6.0.1
I haven’t had an opportunity to review all the notes here, but the v6.x firmware is out as of Sept 2012, and I’m sure this brings support for both Windows Server 2012 and vSphere v5.1

I think that covers everything for now, but as I get more updates, I’ll be sure to share!

Categories: Uncategorized

StarWind v5.8 Testing–SSD on PERC6/I with DeDupe

July 7, 2012 Leave a comment

So I had an opportunity to look at testing StarWind v5.8 on my SAN. Specifically, on a 4x120GB SSD RAID5 on a PERC6/I, with DeDepe enabled. I could afford the SSD’s, but obviously they don’t provide a lot of space. If I can use DeDupe, then the home lab can get a heck of a boost. Also in a lab, most of the VM’s are clones with very little added other than roles or features, but the base is largely the same.

So first we’ll start with a clone of my 2008 R2 SP1 x64 template:

clip_image001

Here we see the NW-TEST1 VM, powered off, so there is no logging, etc, going on. 44.12GB provisioned, 17.71GB used on disk.

clip_image002

Datastore browser would be inclined to agree.

clip_image003

Not quite as much sense is being made here. 12.4GB on disk? That’s nice, but not what I’d expect. Note which files have grown.

Now I’m going to copy another VM. This copy will be FROM StarWind to StarWind, partly to see how it copes with read/write simultaneously. Then we’ll look at DeDupe. I’m cloning the SAME NW-TEST1 to NW-TEST2. To be complete, I’ll use a Customization Profile, let it join the domain, do its thing, then I will shut it down.

clip_image004

Note though – this ALSO doesn’t make much sense. We agree 45GB is provisioned. But 299-277=22GB. This neither matches the 17GB in vSphere, nor the 12GB reported on the StarWind host, nor the 18GB or so on the Datastore – it might, if it included vSwap, but the VM isn’t running.

NW-ESXi1 is the host, and while it’s cloning I’ll grab some screen shots:

clip_image005

Only using 3x1GbE ISCSI. No Jumbo Frames.

clip_image006

3x1GbE on the Initiator, 4x1GbE on the Target = 12 connections. Set to Round Robin, and IOPS=1

clip_image007

Or so I thought, set to IOPS=1. Turns out the StarWind LUN is a “eui.xxxxx” vs “naa.xxxxx” which my script sets. NOW, I have changed it to IOPS=1 However, based on the chart, it still doesn’t seem to be using the extra NIC’s from the host. Perhaps I need to rescan.

So the VM is finished cloning, and booting up to run the first time OOBE and join the domain. While it is doing that, let’s check the datastore:

clip_image008

Makes sense, and there’s the .vswp we expect if the VM is powered on.

clip_image009

Not really what I expected. You’ll note we’ve gone from 277GB free at the beginning of the clone, to 263GB – a difference of 14GB. Except that the VM is 17GB, and with the .vswp it should be more. Plus, while StarWind DeDupe’s, I would expect VMware to be very blissfully ignorant of the disk usage as it doesn’t know if it is Thin, Reclaimed, DeDuped, Compressed, etc. Only the layer between the LUN and Disks should know that.

clip_image010

So now we’re down to 241GB – 22GB. Still strange, but let’s go with it.

clip_image011

Not entirely expected, but who’s to complain.

Based on this, I now have 3 copies of a 44GB Provisioned, 17GB Allocated VM, taking up 13.5GB. I’m going to make an NW-TEST4 just to be complete.

clip_image012

So we’re getting good usage of our NICs, so the ISCSI is working right.

clip_image013

219GB free – 80GB used for 4x17GB VM’s, with some overhead. This makes sense.

clip_image014

Looks like because they’re exact clones, they DeDupe pretty well. Shocking J

clip_image015

Can’t complain too much. Perhaps the trick is to create a 1TB DeDupe volume and then monitor it.

So now let’s do a little testing inside the VM – this is only one VM running, but on a volume where 4 of them are now DeDuped. Tests are with HD Tune Trial, with no changes from defaults:

clip_image016

Not so bad.

clip_image017

Above from NW-TEST5 on NW-SAN2-SAS

clip_image018

Above from NW-VC1 on NW-IX2-200D with 1x1GbE NIC and no mirroring (to get the full 2x1TB data space on the little box)

NW-TEST4 on NW-SAN2-SSDDD volume:

clip_image019

NW-TEST5 on NW-SAN2-SAS volume:

clip_image020

NW-VC1 on NW-IX2-200D:

clip_image021

I’m not entirely sure I get the similarities between the two StarWind volumes – I’d expect the SSD to be much faster than the SAS – or the SAS to be slower, whichever. But they’re both on the same PERC6/I controller, so perhaps that is the limiting factor (to SSD being faster) or where both get a bump due to caching and policies.

For completeness, I decided to run Atto Bench32:

clip_image022 clip_image023 clip_image024

Really kind of interesting. If you look at Atto benchmarks, which are only showing maximum sequential throughput, you’re going to determine that the SSD “just isn’t worth it” in almost all cases. Except for when you go back up and take a look at the IOPS provided at the lower block sizes, especially the 4K block size. Heck, if you look at the IX2, you might even think that in the 0.5-2K, it’s ‘better’.

clip_image025

Also take a look at the Read/Write latency. We can also see that the SAS vs SSD is just about twice in the maximum, and close to the same in the average. Over the long term, with many running VM’s, you’ll feel that.

clip_image026

What THIS shows me, is that we’re probably only seeing one NIC’s total worth of traffic between the host and the SAN. That poor IX2 L What I don’t understand is how the host sees only this much traffic to the datastore, but Atto can report so much more. HD Tune is showing > 120MB/sec on the File Tests as well, at the higher block sizes. Perhaps the VMware chart is blunting it based on polling frequency?

So my next test will be to take my existing VM’s, and *clone* them to the NW-SAN1-SSD volume. This way if it runs out of space or anything, I’m good to go. I can also afford to have them all turned off to do so. IF everything looks good, I can turn them on and purge the old. What I want to see though is total size of VM’s vs total size of disk on the StarWind DeDupe volume. To do so though, I’ll be purging the existing volume and making a new LUN that is larger than the size of the physical volume on the StarWind size.

What StarWind needs, based on this observation and my last few months with the full version:

· A “click here to apply TCP settings” box – one shouldn’t need to get it from a forum

· Similar, a list of “best practices settings” for ESXi hosts.

· Details on what they like on or off in the switching fabric. Not all vendors play the same.

· Reference architecture with 1 switch, 2 separate switches, 2 switches stacked, 1-4 1GbE NIC’s, etc would be very handy.

· The ability to grow a LUN – so far as I can tell, this isn’t there yet – but maybe I havne’t found it.

· STATS! There should be some ability to pull better statistics out of the console. What is my DeDupe ratio?

· Notification for drive space. I had an issue with a previously DeDupe’d LUN that I don’t know if it was StarWind or not – likely not. But it sure would be nice if you could set StarWind up to warn you when its about to see a volume filling and/or have some sort of graceful shut down while you still have some space to play. I think this would need VAAI though from the ESXi side – which they also need.

Categories: Uncategorized