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 , , , , , , , , .


0 Responses

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



Some HTML is OK

or, reply to this post via trackback.



Skip to toolbar