Дупликация MAC адреса на хосте VMM; Event 16945 источник - MsLbfoSys

vmm-00

Недавно заметил подобные ивенты на хостах виртуализации.

Спасибо добрым людям, рассказали что к чему. При создании Hyper-V свича через VMM процесс можно изобразить следующим образом

vmm-01

На хосте имеется некоторое количество сетевых карт, Вы создаете свитч через VMM и ставите галочку наследовать настройки от родительской системы

vmm-04

Происходит создание свича

vmm-02

И собственно то самое “сохранение настроек родительской системы”

vmm-03

В результате которого vNIC менеджмент сети получает MAC адрес хоста.

Workaround:

Помните, что в результате изменений настроек vNIC соединение по сети будет разорвано на непродолжительный период (до нескольких минут)

#Получаем MAC пул из VMM
$MACPool = Get-SCMACAddressPool "имя MAC пула" 
#Получаем vNIC хоста
$VMHostNIC = Get-SCVirtualNetworkAdapter -VMHost "FQDN хоста" | ? {$_.PortClassification -match "Hоst Management"}
#Смена MAC адреса для vNIC хоста в VMM
$NewMACAddress = (Grant-SCMACAddress -MACAddressPool $macpool -VirtualNetworkAdapter $VMHostNIC).Address
#Присваиваем MAC адрес адаптеру
$AdapterName = $VMHostNIC.Name
Invoke-Command -ComputerName "FQDN хоста" -ScriptBlock {
       $MgmtNIC = Get-NetAdapter | where-object  {$_.Name -match $USING:AdapterName -and $_.InterfaceDescription -match 'Hyper-V Virtual Ethernet Adapter'}
       $MgmtNIC | Set-NetAdapter -MacAddress $USING:NewMACAddress -confirm:$false
}

Runbook для SMA

Workflow Set-MgmtvNICMACAddress
{
    param(
    [Parameter(Mandatory=$true)]
    [STRING]$VMMServer,

    [Parameter(Mandatory=$true)]
    [STRING]$VMHostName,

    [Parameter(Mandatory=$false)]
    [STRING]$PortClassification="Host management",

    [Parameter(Mandatory=$false)]
    [STRING]$MACAddressPool="Default MAC address pool"
    )

    $HostMgmtCred = Get-AutomationPSCredential -Name "Host Access Account"
    $VMMMgmtCred = Get-AutomationPSCredential -Name "SCVMM Access Account"

    $NewNICInfo = InlineScript
    {
        $macpool = Get-SCMACAddressPool $USING:MACAddressPool
        $VMHostNIC = Get-SCVirtualNetworkAdapter -VMHost $USING:VMHostName | ? {$_.PortClassification -match "$USING:PortClassification"}
        $NewMACAddress = (Grant-SCMACAddress -MACAddressPool $macpool -VirtualNetworkAdapter $VMHostNIC).Address
        $NICInfo = New-Object -TypeName PSObject -Property @{
            "VMHostNICName" = $VMHostNIC.Name
            "NewMACAddress" = $NewMACAddress
        }
        $NICInfo
    } -PSComputerName $SCVMMServer -PSCredential $VMMMgmtCred

    InlineScript
    {
        $AdapterName = ($USING:NewNICInfo).VMHostNICName
        $NewMACAddress = ($USING:NewNICInfo).NewMACAddress
        $MgmtNIC = Get-NetAdapter | ? {$_.Name -match "$AdapterName" -and $_.InterfaceDescription -match 'Hyper-V Virtual Ethernet Adapter'}
        $MgmtNIC | Set-NetAdapter -MacAddress $NewMACAddress -confirm:$false
    } -PSComputerName $VMHostName -PSCredential $HostMgmtCred
}
Written on July 14, 2014