Skip to content


Gdy VM na Hyper-V R2 traci sieć

Po migracji maszyn do Hyper-V R2 wirtualne maszyny, których NIC są obciążone dużą ilością jednoczesnych połączeń (IIS, ISA itp.) często są dotknięte problemem, że połączenia do WM są zrywane a wirtualny NIC zmienia stan na “disabled”. Dzieje się tak w momencie dużego obciążenia wirtualnego switha, gdy jego bufor (odpowiednik tablicy przełączania) jest pełny w efekcie czego cześć pakietów jest gubiona, generowane są błędy i w efekcie wirtualny interfejs sieciowy zmienia stan na “disabled”.

Na wirtualnych maszynach w logach systemowych  pojawia się następująca informacja:

Event Type: Information
Event Source: netvsc
Event Category: None
Event ID: 4
Date: 2/17/2010
Time: 11:46:07 AM
User: N/A
Computer: MACHINENAME
Description:
The miniport ‘Microsoft Virtual Machine Bus Network Adapter’ reset.

Są trzy metody na rozwiązanie tego problemu:

  • Powiększenie wielkości bufrów VMBus wirtualnych maszyn na których występuje problem z 1MB do 2MB lub 4MB (w dalszej części opiszę to dokładniej). Uznaję to rozwiązanie za preferowane ze względu na najmniejszą inwazyjność fixa w infrastrukturę.
  • Instalacja patcha KB974909 o statusie testowym na maszynach z Hyper-V R2 na których działają maszyny z problemem (w przypadku klastra na wszystkich maszynach w klastrze gdzie wystąpił problem z VM).
  • Zmiana NIC wirtualnej maszyny z Synthetic na Legacy adapter. Rozwiązanie to obniża oczywiście parametry połączenia VM (między innymi jego prędkość do 100Mbps). Ze względu na obniżenie parametrów nie można go uznać za rozwiązanie zalecane w środowiskach produkcyjnych.

Aby powiększyć bufor VMBus wirtualnej maszyny na której występuje problem należy:

  • Przejść do gałezi rejestru: HKLM\SYSTEM\CurrentControlSet\Control\Class\{GUID}\{index}.
  • Aby zidentyfikować jaki GUID ma interfejs wirtualnej maszyny na którym występuje problem:

W przypadku VM na Windows Server 2008/2008 R2 jest to banalne):
Identyfikacja inerfejsu na Windows Server 2003 jest trochę trudniejsza:)

Należy przejśc do HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkCards\{numer} i odczytać wartość GUID. (rozwiązanie działa również na nowszych systemach).

W przypadku niemożności znalezienia GUID powyższą metodą: przejść do HKLM\SYSTEM\CurrentControlSet\Control\Class\ i wyszukać “Microsoft Virtual Machine Bus Network Adapter” (uwaga – może być kilka interfejsów).

  • Utworzyć dwie wartości DWORD o nazwach ReceiveBufferSize i SendBufferSize, nadać im wartość 0800 (hexadecimal) lub 2048 (decimal). Jest to wartość bufora w KB, przy braku tych wpisów wielkość buforów jest domyślna i wynosi 1024KB.
  • Wykonać restart wirtualnej maszyny aby ustawienia zostały wprowadzone.

Jeśli po wykonaniu powyższych kroków problem wciąż występuje (w moim przypadku miałem tą sytuację z jedna najbardziej obciążoną maszyną z IIS) należy jako wartość wprowadzić 1000 (hexadecimal) lub 4096 (decimal). Maksymalna możliwa wartość bufora to 4096KB.

źródła poza własnym doświadczeniem:

Increase VMBus buffer sizes to increase network throughput to guest VMs – Windows Server Performance Team Blog

KB 974909 – Microsoft Support

Network Adapter disabled, Event ID 4 Netvsc, miniport reset – TechNet Forums

Posted in Hyper-V, tech, Windows Server, Windows Server 2008 R2.

Tagged with , , , , , , , , .


3 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Tadzislaw says

    A jednak nie jest to tylko mój problemn 😀 😐

  2. Saguś says

    Ostatnio walczyłem z czymś podobnym, ale problem dotyczył kiepskich sterowników do czteroportowych kart w HP ML 370. Dopiero driver z 9 lutgo rozwiązywał problem.

  3. Karol Stilger says

    @Tadzisław: Na jakim serwerze (jakie role) miałeś ten problem?
    @Saguś: W ML 370 spotkaliśmy się z dziwnymi rzeczami przy ustawieniu teamingu na czteroportowej karcie.



Some HTML is OK

or, reply to this post via trackback.



Skip to toolbar