본문 바로가기
VMware

ESXi 에 스토리지 LUN 할당 해제 사전 작업

by 도경다경 2023. 3. 16.
반응형

아래 내용은 모두 정정한다.

온라인 상태에서 LUN 스토리지에서 할당 해제하고 vCenter에서 스토리지 다시 검색(Device, HBA 포함)하는 것이 제일 빠르다.(물론 사전에 삭제할 LUN이 구성된 Datastore는 모두 인벤토리에서 삭제해야 한다.)

vCenter, ESXi에서 사전에 디바이스 미리 제거하려고 시도하면 LUN당 5분이 넘게 걸리기도 한다.(2TB 기준)

이걸로 고생한 걸 생각하면 이가 갈린다.

 

 

E0SXi 에 스토리지 LUN을 할당 해제할 때 스토리지에서 무작정 해제해버리면 에러가 발생한다.

ESXi에서도 상태체크하고 SPD 같은 이벤트를 다량 뿌려버리므로 적절한 방법은 아니다.

심지어 ESXi 에서 스캔 시 해제한 볼륨이 남은것처럼 보이기도 한다.

깨끗하게 스캔하려면 vCenter에서 스토리지 다시검색해야 한다.

 

작업 전에 LUN을 분리시켜놓고 작업하는게 여러모로 좋다.

보통은 클러스터에 공통으로 LUN을 할당하므로 스크립트를 통해 일괄 해제해주도록 하자.

 

스토리지 디바이스에서 보이는 LUN ID 중 해제할 LUN을 다음 스크립트와 같은 경로에 lunid.txt 로 저장하고 아래 스크립트를 저장 및 실행하면 된다.

사전에 powercli가 설치되어 있고 해당 vCenter에 접속해 있어야 하며, $Clustername에 정확한 클러스터 이름을 입력해야 한다.

 

# PowerCLI Script for detaching luns from a cluster

$LunIDs = Get-Content -Path .\lunid.txt
$Clustername = "MY-Cluster"

function Detach-Disk {
    param(  [VMware.VimAutomation.ViCore.Impl.V1.Inventory.VMHostImpl]$VMHost, [string]$CanonicalName    )

    $storSys = Get-View $VMHost.Extensiondata.ConfigManager.StorageSystem
    $lunUuid = (Get-ScsiLun -VmHost $VMHost | where {$_.CanonicalName -eq $CanonicalName}).ExtensionData.Uuid
    $storSys.DetachScsiLun($lunUuid)
}

$ClusterHosts = Get-Cluster $Clustername | Get-VMHost

Foreach($VMHost in $ClusterHosts)
{
    Foreach($LUNid in $LunIDs)
    {
        Write-Host "Detaching" $LUNid "from" $VMHost -ForegroundColor "Yellow"
        Detach-Disk -VMHost $VMHost -CanonicalName $LUNid
    }
}

 

 

반응형

댓글