Welcome to MSDN Blogs Sign in | Join | Help

Storage Area Networking

Windows Core OS Development Team
FAQ : Determining if a drive is connected via iSCSI

 

Q: How do I determine if a disk is connected via iSCSI?

A: The easiest way to determine this, is by using diskpart, using the commands below. In the “Type” field if it lists iSCSI, then the disk is an iSCSI connected disk.

 

Diskpart

Select Disk X (Where X is the desired disk to check)

Detail disk

image

iSCSI Initiator Boot Deployment Guide now available

Our iSCSI Boot guide is now available. This provides information on iSCSI boot, as well as stepping through the process of creating and deploying iSCSI boot images:

http://technet.microsoft.com/en-us/library/ee619733(WS.10).aspx

MPIO Step-By-Step guide for Windows Server 2008 R2

Our MPIO Guide for Windows Server 2008 R2 is now available in our Storage area on TechNet for Windows Server 2008 R2 at the link below:

http://technet.microsoft.com/en-us/library/ee619778(WS.10).aspx

Updated storage documentation for Windows Server 2008 R2 and Windows 7

At the link below, you will find information about what has changed for the iSCSI Initiator, and MPIO in Windows 2008 R2.

Also, the first in the series of our new configuration and step-by-step guides is available at the same location, which covers the configuration and usage of the iSCSI Initiator for both R2 and Windows 7.

http://technet.microsoft.com/en-us/library/ee344838(WS.10).aspx

Bruce Langworthy
Senior Program Manager - Enterprise Storage Networking, iSCSI, FC, MPIO, Core Storage
Windows Core OS Division

Updated SAN Boot Whitepaper is now available

The Windows Boot from SAN whitepaper has been updated, and is available via the link below, this includes information on upgrading to Windows Server 2008 R2:

http://www.microsoft.com/downloads/details.aspx?FamilyID=f4095fae-553d-4700-aafa-1cce38b5618f&displaylang=en

MPIO WMI Classes Documentation

Hello Everyone,

Just wanted to post a note that we’ve updated the WMI class information for MPIO, including information on the MPIO Health class information that was added for Windows Server 2008 R2:

 http://msdn.microsoft.com/en-us/library/ee239136.aspx

Updated MPIO Whitepaper is now available

We have released an updated version of the Windows Server High Availability with Microsoft MPIO whitepaper and couldn’t wait to let everyone know as there is a lot of new content in this update. 

You can download the updated Whitepaper directly using the link below:

Windows Server High Availability with Microsoft MPIO

Windows Server 2008 R2 Beta Available for Download

 

Microsoft Windows Server 2008 R2 Beta will be the next version of the Windows Server operating system from Microsoft. Building on the features and capabilities of the current Windows Server 2008 release version, Windows Server 2008 R2 allows you to create solutions that are easier to plan, deploy, and manage than previous versions of Windows Server.

http://www.microsoft.com/downloads/details.aspx?FamilyID=85cfe4c9-34de-477c-b5ca-75edae3d57c5&displaylang=en

iSCSI WMI Class Structures

We have updated our documentation on the WMI classes supported by the iSCSI Initiator. You can see the update at the link below:

Link to iSCSI WMI Classes

Thanks,

The Storage Area Networking Team

Scripting Example: How to set the MPIO LB policy

The following scripting example shows how to set the MPIO Load Balancing policy via a script calling WMI:

Just to expand on the information below,

FOO Failover Only
RR Round Robin
RRwS Round Robin with Subset
LQD Least Queue Depth
WP Weighted Paths

'-----------------------------------------------------------------------------

'

' SET_LBP.vbs

'

' WScript which can be used to change MPIO Load Balance Policies on Windows 2008

'

' USAGE:

'

' SET_LBP.vbs <FOO | RR | RRwS | LQD | WP>

' Change to FOO: SET_LBP.vbs FOO

' Change to RR: SET_LBP.vbs RR

' Change to RRwS: SET_LBP.vbs RRwS

' Change to LQD: SET_LBP.vbs LQD

' Change to WP: SET_LBP.vbs WP

'

' Return value:

' Success: 0

' Failure: -1

'

'

'-----------------------------------------------------------------------------

'

' Function returning ALUA or nonALUA flag

'

Function aluaflag(theInstance)

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")

Set objShare = objWMIService.Get("DSM_QueryLBPolicy_V2.InstanceName=" & _

"'"&theInstance&"'")

For Each objDsmPath in objShare.LoadBalancePolicy.DSM_Paths

aluaflag = objDsmPath.ALUASupport

Exit for

Next

End Function

Dim Usage

Usage = "USAGE:" & vbCrLf & _

" SET_LBP.vbs <FOO | RR | RRwS | LQD | WP>" & vbCrLf

'

' Make sure we have the correct number of arguments.

'

If ( WScript.Arguments.Count <>1 ) Then

WScript.StdOut.Write Usage

WScript.Quit -1

End If

'

' Extract the arguments.

'

Dim bFlag, BOOL, LBP, LBPath, LBPolicy, foo, rr, rrws, lqd, wp

Dim fooValue, rrValue, rrwsValue, lqdValue, wpValue

LBP = WScript.Arguments(0): foo = "FOO" : rr = "RR" : rrws = "RRwS" : lqd = "LQD" : wp = "WP"

fooValue = StrComp(LBP, foo, 1)

rrValue = StrComp(LBP, rr, 1)

rrwsValue = StrComp(LBP, rrws, 1)

lqdValue = StrComp(LBP, lqd, 1)

wpValue = StrComp(LBP, wp, 1)

' ----------FOO---------

If ( 0 = fooValue) Then

LBPolicy = 1

End If

' ----------RR---------

If ( 0 = rrValue ) Then

LBPolicy = 2

End If

' ----------RRwS---------

If ( 0 = rrwsValue ) Then

LBPolicy = 3

End If

' ----------LQD---------

If ( 0 = lqdValue ) Then

LBPolicy = 4

End If

' ----------WP---------

If ( 0 = wpValue ) Then

LBPolicy = 5

End If

If ( Err.Number = 0 ) Then

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")

'

' Locate device

'

Set colSWbemObjectSet = objWMIService.InstancesOf("DSM_QueryLBPolicy_V2")

'

' Loop through all devices

'

For Each objSWbemObject In colSWbemObjectSet

'

' Set the boolean flag to FALSE

'

BOOL = 0

WScript.StdOut.Write "InstanceName= "& objSWbemObject.InstanceName & vbCrLf

'

' Flag for ALUA LUN

'

bFlag = aluaflag(objSWbemObject.InstanceName)

'

' If ALUA=True and LBPolicy=RoundRobin, don't apply the change

'

Do

if LBPolicy = 2 Then

if bFlag > 0 Then Exit Do:

End if

'

' Set boolean flag to TRUE if ALUA

'

if bFlag > 0 Then

BOOL = 1

End if

'

'Assign each WbemObject to LBPolicy object

'

Set objLBPolicy = objSWbemObject

'

' Obtain an instance of the the class using a key property value.

'

Set objShare = objWMIService.Get("DSM_LB_Operations.InstanceName=" & _

"'"&objSWbemObject.InstanceName&"'")

'

' Obtain an InParameters object specific to the method we are going to call.

'

Set objInParam = objShare.Methods_("DsmSetLoadBalancePolicyALUA").inParameters.SpawnInstance_()

'

' set to user-defined LB Policy

'

objLBPolicy.LoadBalancePolicy.LoadBalancePolicy = LBPolicy

Dim count

count = 0

'

' If LB Policy is set to FOO

'

' If it is the 1st path, Set to A/O

' If is is not the 1st Path, Set to A/U if ALUA or S/B if not ALUA

'

'

' else LB Policy is set to other than FOO

'

' If It is ALUA

' If TargetPortGroup State is A/O

' Set the associated paths to A/O

' If TargetPortGroup State is A/U

' Set the associated paths to A/U

'

' else It is not ALUA

' Set all paths to A/O

'

'

For Each objDSMPath In objLBPolicy.LoadBalancePolicy.DSM_Paths

if LBPolicy = 1 Then

if count = 0 Then

objDSMPath.PrimaryPath = 1

else

if BOOL = 1 Then

objDSMPath.OptimizedPath = 0

objDSMPath.PrimaryPath = 1

else

objDSMPath.OptimizedPath = 1

objDSMPath.PrimaryPath = 0

End if

End if

else

if BOOL = 1 Then

if objDSMPath.TargetPortGroup_State = 0 Then

objDSMPath.OptimizedPath = 1

objDSMPath.PrimaryPath = 1

else

objDSMPath.OptimizedPath = 0

objDSMPath.PrimaryPath = 1

End if

else

objDSMPath.PrimaryPath = 1

End if

End if

count = count + 1

Next

objInParam.Properties_.item("LoadBalancePolicy") = objLBPolicy.LoadBalancePolicy

WScript.StdOut.Write "DSM_LB_Operations.InstanceName=" & "'"& _

objSWbemObject.InstanceName & "'" & vbCrLf & vbCrLf

Set objOutParams = objWMIService.ExecMethod("DSM_LB_Operations.InstanceName=" & _

"'"&objSWbemObject.InstanceName&"'","DsmSetLoadBalancePolicyALUA", objInParam)

Loop Until True:

Next

If (LBPolicy = 5) Then

WScript.StdOut.Write "LB Policy has successfully changed to WP" & vbCrLf

End If

If (LBPolicy = 4) Then

WScript.StdOut.Write "LB Policy has successfully changed to LQD" & vbCrLf

End If

If (LBPolicy = 3) Then

WScript.StdOut.Write "LB Policy has successfully changed to RRwS" & vbCrLf

End If

If (LBPolicy = 2) Then

If(BOOL = 0) Then

WScript.StdOut.Write vbCrLf & "Found no applicable device for RR" & vbCrLf

else

WScript.StdOut.Write "LB Policy has successfully changed to RR" & vbCrLf

End If

End If

If (LBPolicy = 1) Then

WScript.StdOut.Write "LB Policy has successfully changed to FOO" & vbCrLf

End If

WScript.Quit 0

Else

'

' Something went wrong.

'

WScript.StdOut.Write "Failed to change LB Policy" & Err.Description & vbCrLf

WScript.Quit -1

End If

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

How to add the iSCSI Initiator User Interface to Windows Server 2008 Server Core edition

The following steps will allow you to access the User Interface (UI) for the iSCSI Initiator on a Windows Server 2008 Server Core installation, as an alternative to using ISCSCLI from the CMD line to configure the Microsoft iSCSI Initiator settings.

There are two important caveats:

1. This is strictly speaking, unsupported, since this functionality did not ship with Server Core

2. Since the files for the user interface did not ship with Server Core, they would not be updated by any future updates to these files since they are not expected to exist on Server Core.

Copy the following files, from a GUI version of the Same SKU of 2008.

For example, if you are using Windows Server 2008 Enterprise server core, then copy these from a Windows 2008 Server Enterprise GUI version of the same processor type, they will need to be copied to the same location on the server core machine.

1.    c:\windows\system32\iscsicpl.dll
2.    c:\windows\system32\iscsicpl.exe

3.    c:\windows\system32\en-us\iscsicpl.dll.mui
4.    c:\windows\system32\en-us\iscsicpl.exe.mui

5.    To access the iSCSI control panel, run “iscsicpl.exe” from the CMD prompt.

iSCSICLI Batch file to quickly connect to an iSCSI target

This script can be run from the command line including Server Core to quickly connect to an iSCSI target

Pre-Requisites:

  1. Windows host running the Microsoft iSCSI Software Initiator  (You can check the iSCSI initiator location guide on how to get the initiator here:  

http://blogs.msdn.com/san/archive/2008/07/28/microsoft-iscsi-software-initiator-location-guide.aspx

      2. Pre-configured iSCSI target. You will first need to create a LUN on your iSCSI target. A list of supported targets   is here:  http://blogs.msdn.com/san/archive/2008/08/04/logo-listings-for-enterprise-storage-arrays.aspx

@ECHO OFF

SETLOCAL

setlocal EnableDelayedExpansion

REM - Batch file quick connect to an iSCSI Target.

REM - 1. First add portal for the IP address that has been entered. 

REM - 2. List Targets.

REM - 3. If only one target is listed, then logon.

REM - 4. Mark it persistent.

REM - 5. Done.

SET ipaddress=%1

echo "Trying to add target %1 for discovery"

iscsicli QAddTargetPortal %ipaddress%

REM – Find out the number of Targets discovered for the portal address

SET _count=0

FOR /F "usebackq skip=1" %%G IN (`iscsicli ListTargets`) DO (

SET _cmp=%%G

SET _result=!_Cmp:~0,4!

REM - Get a valid IQN Name.

IF !_RESULT!==iqn. (

set TargetName=!_cmp!

SET /a _count = _count + 1

)

)

REM - Check if there is only one target.

if !_count! equ 1 (

echo "Found A Target - %TargetName%: Attempt to login"

iscsicli QLoginTarget %TargetName%

Echo “Mark the target as a persistent target”

iscsicli PersistentLoginTarget %TargetName% * * * * * * * * * * * * * * * *

) ELSE (

echo "Did not find a single Target to login"

)

Suzanne Morgan

Microsoft Corporation

Senior Program Manager Lead - Storage Networking Interconnects, iSCSI, Fibre Channel, MPIO, Core Storage

Windows Core OS Division

sumorgan@microsoft.com

Hyper-V Server Website is now live

 

www.microsoft.com/hvs

www.microsoft.com/hyper-vserver

www.microsoft.com/hyper-v-server

Microsoft Hyper-V Server 2008 provides a simplified, reliable, and optimized virtualization solution, enabling improved server utilization and reduced costs. Since Hyper-V Server is a dedicated stand-alone product, which contains only the Windows Hypervisor, Windows Server driver model and virtualization components, it provides a small footprint and minimal overhead. It easily plugs into customers’ existing IT environments, leveraging their existing patching, provisioning, management, support tools, processes, and skills.

Key Benefits

  • Improved server utilization
  • Small footprint
  • Minimal overhead

IT Pros can easily to leverage their existing knowledge and skills with Microsoft virtualization products, as well as the collective knowledge of the community, minimizing any learning curve. In addition, with Microsoft providing comprehensive support for Microsoft applications and heterogeneous guest operating systems, customers can virtualize with confidence and peace of mind.

 

Suzanne Morgan

Microsoft Corporation

Senior Program Manager Lead - Storage Networking Interconnects, iSCSI, FC, MPIO, Core Storage

Windows Core OS Division

sumorgan@microsoft.com

Portal Hopping
 

The Microsoft iSCSI Software Initiator implements a number of key features in the initiator to protect against loss of connectivity to an iSCSI target.  These include support for Microsoft MPIO, (MCS) multiple connections per session, portal hopping,  as well as advanced error recovery. 

The loss of connection to an iSCSI target portal could be due to one of the following reasons:

1. Connection drops unexpectedly without notification from the target which can result from transient network errors or other conditions

2. Unexpected connection loss without prior notification from the target.

3. Connection loss as  a result of an iSCSI target dropping connections through an async logout

If multiple portals are available for the target, portal hopping is designed to the try establishing a connection to alternate portals automatically

Configuring portal hopping:

 

image

 

 

 

 

 

This feature can be enabled or disabled via the Advanced setting of the "Logon to the Target" page in the Microsoft iSCSI GUI.

 

Steps:

Portal hopping operates by default without requiring user configuration.  When you're creating the connection to the iSCSI target from the initiator UI, just make sure  "default" in "Target Portal" list is used.    To disable this feature, specify a specific target portals instead.  With Portal Hopping disabled, the Microsoft Initiator will only try to attempt to recover the iSCSI session via the target portal used in the original iSCSI login.

There are situations where using Portal Hopping is not desirable.  For example, in a configuration that has multiple physical networks or multiple VLANs, it is possible that some of the target portals are not accessible to a given host.  In this situation, SendTargets responses sent by the iSCSI target will advertise some addresses which may not be accessible by the host. 

If the number of inaccessible target portals advertised in the SendTargets response is large, Portal Hopping may cause a  delay to recover the iSCSI session.  After the initial attempt to connect to the original target portal fails, the Microsoft Initiator attempts to connect to other target portals which are not accessible.  It may take a long time for the Microsoft Initiator to cycle through the list of inaccessible target portals before it makes another attempt to the original target portal.

Recommendation:

If multiple ports exist, it's better to use MPIO or MCS and use explicit addresses for both initiator & target to ensure alignment between the virtual connection and the physical link.  This offers a more deterministic approach to redundancy.   Portal hopping does offer a good solution to ensure continuous IO flow for single port environments and configurations that don't use MPIO or MCS.

 

Suzanne Morgan

Microsoft Corporation

Senior Program Manager - Storage Networking Interconnects, iSCSI, FC, MPIO, Core Storage

Windows Core OS Division

Logo Listings for Enterprise Storage arrays

Windows Server supports a broad ecosystem of SAN storage arrays and enterprise class storage devices. The Windows Server tested products catalog includes listing for hardware devices which have been qualified using the Windows Logo tests to validate interoperability with the Windows Server platform.

 

Home Page for Windows server tested products

 

http://www.windowsservercatalog.com/results.aspx?bCatID=1338&cpID=0&avc=10&OR=1

There are 2 categories which include listings for storage arrays (iSCSI, Fibre Channel & SAS) which have passed applicable tests.    These include small, medium and enterprise class arrays from a wide variety of our ecosystem partners including EMC, NetApp, Dell/Equallogic, Compellent, HP/Lefthand Networks, HDS, LSI Logic, iStor, NEC, IBM, Fujitsu Siemens, 3Par, XIOtech, Intransa to name a few ..... 

Category  1: RAID Storage

 

http://www.windowsservercatalog.com/results.aspx?&bCatID=1354&cpID=0&avc=10&ava=0&avq=0&OR=1&PGS=25&ready=0

 

 

Category 2: Hardware based raid array

http://www.windowsservercatalog.com/results.aspx?&bCatID=1511&cpID=0&avc=10&ava=0&avq=0&OR=1&PGS=25&ready=0

 

 

Suzanne Morgan
Microsoft Corporation
Senior Program Manager Lead - Storage Networking Interconnects, iSCSI, FC, MPIO, Core Storage
Windows Core OS Division

sumorgan@microsoft.com

More Posts Next page »
Page view tracker