Automation

 View Only
  • 1.  How to certain disable iSCSI paths

    Posted Sep 27, 2017 06:28 PM

    I have a few hosts with an iSCSI initiator and several luns from a couple different SANs. I'm trying to find as way to disable selected paths but can't get anything to work by piecing together what I've found online.

    I don't mind hard coding a target or vmbha number and running the script a few times.

    If you refer to the attached picture, I need to disable certain targets for a given runtime name. In this example, I need to disable targets ending in .72 or .172 on all the C0 paths and disable all the .71 and .171 targets on the C1 paths. (for a different array thre will be different IPs but the C0/C1 stuff remains the same)

    To do it manually it's easy as I just sort by runtime name and then look at the target field and disable accordingly but doing it via powercli is proving elusive for me.

    The only thing I can guarantee is the IP address in the target and the C0/C1 part of the runtime name. Everything else might change, ie. the order of the paths.

    Anyone ever do something like this before and can share some code?

    Thanks



  • 2.  RE: How to certain disable iSCSI paths
    Best Answer

    Posted Sep 27, 2017 09:10 PM

    Would something like this do the trick?

    Note this is only for C0 and IP ending in 71.

    $esxName = 'MyEsx'

    foreach($hba in Get-VMHostHba -VMHost $esxName -Type IScsi){

        foreach($path in Get-ScsiLun -Hba $hba | Get-ScsiLunPath){

            if($path.Name -match "^$($hba.Device):C0:" -and $path.ExtensionData.Transport.Address -match "71:3260$"){

                Set-ScsiLunPath -ScsiLunPath $path -Active:$false -Confirm:$false

            }

        }

    }



  • 3.  RE: How to certain disable iSCSI paths

    Posted Sep 27, 2017 09:43 PM

    Yes indeed! That works! I just copy/pasted the IF statement to do all the combos I wanted and had to put the full ip address as it seemed to disable more paths for one particular SAN since I think the match was picking up more than I wanted.

    Thank you very much. You saved me a ton of manual clicks :smileyhappy:



  • 4.  RE: How to certain disable iSCSI paths

    Posted Apr 04, 2018 04:42 PM

    Hi LucD,

    I've been using your code quite successfully but I've run into a little issue. When I add a new datastore it takes a long time to go through all the paths again when I want to target just 1 datastore on each host to disable certain paths.

    In looking around the best I can come up with is maybe modifying the if statement to add a $path.extensiondata.lun -match and then hard coding the value what I find manually by running this little snipnet of code:

    $temp = Get-ScsiLun -Hba $hba | Get-ScsiLunPath

    $temp.extensiondata.lun

    Am I missing something to be able to easily target just 1 datastore on a given host to disable certain paths?



  • 5.  RE: How to certain disable iSCSI paths

    Posted Apr 04, 2018 04:53 PM

    If we assume a "standard" use of LUN and datastore, meaning only 1 extent (LUN) per datastore, then yes, your code should do the trick.