요즘은 vMotion 을 vMotion TCP/IP Stack 에 위치해서 많이 사용하시는 것으로 보입니다만 이전에 설치했던 시스템을 보면 Defualt TCP/IP Stack 에 되어 있는것을 볼 수 있습니다.

특히 다른 대역의 데이터센터와 vMotion 을 하기위해서는 routing 이 되어야 하는데 이전에는 static routing 으로 설정해서 사용했었지만, vMotion TCP/IP Stack 이 생긴 이후로는 routing 이 필요한 경우에는 vMotion TCP/IP Stack 을 사용하라고 가이드되어 있습니다.

 

 

https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vcenterhost.doc/GUID-3B41119A-1276-404B-8BFB-A32409052449.html

다만 이미 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
Posted by hdywis
,