Обратился ко мне за советом постоянный читатель: помоги, говорит, с моим iSCSI-массивом NetApp. Пытаюсь вывести Get-SCSILunPath, так там ни имени датастора, ни IP-адреса “таргета” в SanId нет 🙁
Посмотрел – и действительно так: в отличие, например, от Huawei, NetApp не выводит IP-адрес IQN-Target в выводе атрибутов Get-SCSILunPath. Да и привязать CanonicalName вида naa.thebeststoragearray к датастору с первого взгляда не удается…
Дальше я погуглил и “вспомнил” про наличие крутого атрибута ExtensionData, в котором смог найти всю интересующую нас информацию и в Get-Datastore, и в Get-ScsiLunPath!
Тут выложен скрипт get-scsilunpath.ps1, позволяющий вывести список путей.
1 2 3 4 5 6 |
#Usage: get-scsilunpath.ps1 -Esx host1.domain.ru -Storage iqn.1992-08.com.netapp:sn.1234567890 param ($Esx, $Storage) $dict=@{} Get-Datastore | %{$dict[$_.extensiondata.info.vmfs.extent.diskname] = $_.name} Get-ScsiLun -VmHost $Esx | get-scsilunpath | ? {$_.SanID -like $Storage} | select name, sanid, @{N="IP";E={$_.extensiondata.transport.address}}, @{N='Datastore';E={$dict[$_.ScsiCanonicalName]}}, state |
Для сопоставления SCSICanonicalName и имени датастора использовалась хэш-таблица, так как она оптимизирована для быстрого поиска значения по ключу (ID LUN’a).
После запуска скрипта:
get-scsilunpath.ps1 -Esx hostname -Storage StorageId
вы получаете список путей к хранилищам с этого массива, с указанием адреса IQN-таргета (если это iSCSI), статуса и названия хранилища.
P.S. Если дойдут руки, я сделаю некий скрипт с аналитикой, который будет анализировать кластер (ы?) на предмет аномалий с этим массивом, а то вручную грустно смотреть на сотни путей…