요즘은 vMotion 을 vMotion TCP/IP Stack 에 위치해서 많이 사용하시는 것으로 보입니다만 이전에 설치했던 시스템을 보면 Defualt TCP/IP Stack 에 되어 있는것을 볼 수 있습니다.
특히 다른 대역의 데이터센터와 vMotion 을 하기위해서는 routing 이 되어야 하는데 이전에는 static routing 으로 설정해서 사용했었지만, vMotion TCP/IP Stack 이 생긴 이후로는 routing 이 필요한 경우에는 vMotion TCP/IP Stack 을 사용하라고 가이드되어 있습니다.

다만 이미 vMotion vmkenel 이 생성이 되었다면 TCP/IP Stack 을 변경할 수 없고, 기존 vmk 를 삭제 후 다시 만들때 vMotion TCP/IP Stack 을 선택해서 생성을 해야합니다.
기존에 vSwitch0 에 구성이 되어있었고, 일부는 vMotion NetStack 을 사용하고 있는 환경에서 작성된 스크립트입니다. 그대로 사용하기보다는 각자의 환경에 맞춰서 수정해서 사용하시는것을 권장드립니다.
$alltasks = @() $vMotionMTU = '9000' $taskhosts = Get-Cluster | Get-VMHost | Sort-Object Parent.Name, Name $Startdates = Get-Date foreach ($taskhost in $taskhosts) { Write-Host "##########################################################################################" -ForegroundColor Cyan Write-Host "############" $taskhost.Name" 의 작업을 시작합니다. #####################" -ForegroundColor Cyan Write-Host "##########################################################################################" -ForegroundColor Cyan $task = @() $vMotionvmk = @() $vMotionPG = @() $vMotionstack = @() $task = "" | Select ClusterName, HostName, ASIS_vMotionvmk, ASIS_vMotionNetStack, ASIS_vMotionNetStackGW, ASIS_vMotionIP, ASIS_vMotionSubnet, ASIS_vMotionMTU, ASIS_vSwitch, ASIS_vSwitchMTU, ASIS_PortGroup, ASIS_PortGroupVLAN, TOBE_vMotionvmk, TOBE_vMotionNetStack, TOBE_vMotionNetStackGW, TOBE_vMotionIP, TOBE_vMotionSubnet, TOBE_vMotionMTU, TOBE_vSwitch, TOBE_vSwitchMTU, TOBE_PortGroup, TOBE_PortGroupVLAN $vMotionvmk = $taskhost | Get-VMHostNetworkAdapter | ?{$_.VMotionEnabled -eq "True"} $vMotionPG = $taskhost | Get-VirtualPortGroup -Name $vMotionvmk.PortGroupName #vMotion 설정된 vmk 가 없을 경우 에러발생함 $vMotionstack = Get-VMHostNetworkStack -VMHost $taskhost | ?{$_.id -eq "vmotion"} $vMotionIPSplit = $vMotionvmk.IP.Split('.') $vMotionGW = $vMotionIPSplit[0]+"."+$vMotionIPSplit[1]+"."+$vMotionIPSplit[2]+".1" $task.ClusterName = $taskhost.Parent.Name $task.HostName = $taskhost.Name $task.ASIS_vMotionvmk = $vMotionvmk.Name $task.ASIS_vMotionNetStack = $vMotionvmk.ExtensionData.Spec.NetStackInstanceKey #vMotion 이 Enabled 되어 있는 NetSatck $task.ASIS_vMotionNetStackGW = $vMotionstack.Gateway #vMotion TCP/IP NetStack 의 Gateway $task.ASIS_vMotionIP = $vMotionvmk.IP $task.ASIS_vMotionSubnet = $vMotionvmk.SubnetMask $task.ASIS_vMotionMTU = $vMotionvmk.Mtu $task.ASIS_vSwitch = $vMotionPG.VirtualSwitch.Name $task.ASIS_vSwitchMTU = $vMotionPG.VirtualSwitch.Mtu $task.ASIS_PortGroup = $vMotionPG.Name $task.ASIS_PortGroupVLAN = $vMotionPG.VLanId if ($vMotionvmk -eq $null) { Write-Host "vMotion 이 설정된 vmkernel이 존재하지 않습니다."$taskhost.Name"호스트는 SKIP 됩니다." -ForegroundColor Red $task.ASIS_vMotionvmk = 'Null, Need to Check' } else { ## vSwitch0 가 MTU 9000 이 아닌 경우 변경 ## if ($vMotionPG.VirtualSwitch.Mtu -ne $vMotionMTU) { Write-Host $taskhost.Name"의 vMotion 을 사용하는"$vMotionPG.VirtualSwitch.Name"의 MTU가"$vMotionPG.VirtualSwitch.Mtu"이기 때문에" $vMotionMTU"로 변경합니다." -ForegroundColor Green $vMotionPG.VirtualSwitch | Set-VirtualSwitch -Mtu $vMotionMTU -Confirm:$false | Out-Null } else {} ## vMotion NetStack 작업## if ($vMotionvmk.ExtensionData.Spec.NetStackInstanceKey -eq 'vmotion') { ## vMotion NetStack이 vMotion 이고, MTU 가 9000이 아니면 9000으로 변경## if ($vMotionvmk.Mtu -ne $vMotionMTU) { Write-Host $taskhost.Name"의 vMotion 의"$vMotionvmk.Name"의 MTU가"$vMotionvmk.Mtu"이기 때문에" $vMotionMTU"로 변경합니다." -ForegroundColor Green $vMotionvmk | Set-VMHostNetworkAdapter -Mtu $vMotionMTU -Confirm:$false | Out-Null } else {} ## vMotion NetSatck이 vMotion 이 아니면, 지우고, MTU 9000 으로 생성 및 VLAN 설정 ## } else { Write-Host "vMotion이"$vMotionvmk.ExtensionData.Spec.NetStackInstanceKey"입니다."$taskhost.Name"호스트의"$vMotionvmk.Name"을 삭제후 재생성합니다." -ForegroundColor Green $vMotionvmk | Remove-VMHostNetworkAdapter -Confirm:$false | Out-Null $vMotionPG | Remove-VirtualPortGroup -Confirm:$false | Out-Null New-VMHostNetworkAdapter -VMHost $taskhost -VirtualSwitch $vMotionPG.VirtualSwitch -NetworkStack $vMotionstack -PortGroup $vMotionvmk.PortGroupName -IP $vMotionvmk.IP -SubnetMask $vMotionvmk.SubnetMask -Mtu $vMotionMTU | Out-Null $taskhost | Get-VirtualPortGroup -Name vMotion | Set-VirtualPortGroup -VLanId $vMotionPG.VLanId | Out-Null } ## vMotion NetSatck GW 작업 ## if ($vMotionstack.Gateway -ne $vMotionGW) { Write-Host $taskhost.Name"의"$vMotionstack.Name"의 Gateway가"$vMotionstack.Gateway"이기 때문에"$vMotionGW "로 변경합니다." -ForegroundColor Green $vMotionstack | Set-VMHostNetworkStack -VMKernelGateway $vMotionGW | Out-Null } else {} } # Line45 $vMotionvmk = @() $vMotionPG = @() $vMotionstack = @() $vMotionvmk = $taskhost | Get-VMHostNetworkAdapter | ?{$_.VMotionEnabled -eq "True"} $vMotionPG = $taskhost | Get-VirtualPortGroup -Name $vMotionvmk.PortGroupName $vMotionstack = Get-VMHostNetworkStack -VMHost $taskhost | ?{$_.id -eq "vmotion"} $task.TOBE_vMotionvmk = $vMotionvmk.Name $task.TOBE_vMotionNetStack = $vMotionvmk.ExtensionData.Spec.NetStackInstanceKey $task.TOBE_vMotionNetStackGW = $vMotionstack.Gateway $task.TOBE_vMotionIP = $vMotionvmk.IP $task.TOBE_vMotionSubnet = $vMotionvmk.SubnetMask $task.TOBE_vMotionMTU = $vMotionvmk.Mtu $task.TOBE_vSwitch = $vMotionPG.VirtualSwitch.Name $task.TOBE_vSwitchMTU = $vMotionPG.VirtualSwitch.Mtu $task.TOBE_PortGroup = $vMotionPG.Name $task.TOBE_PortGroupVLAN = $vMotionPG.VLanId $task $alltasks += $task } $enddates = get-date -Format yyyyMMdd $TaskTime = $enddates-$Startdates $TaskNum = $enddates+"_"+$TaskTime.Minutes+"Min" $alltasks | Export-Csv "C:\Users\administrator\Documents\vMotion_$TaskNum.csv" -NoTypeInformation
'VMware > PowerCLI' 카테고리의 다른 글
VMware PowerCLI 10.1.0 설치 (0) | 2018.04.29 |
---|---|
호스트 성능 정보 추출 (0) | 2016.03.07 |
VMware PowerCLI 시작 (0) | 2016.02.11 |