Stan wejściowy jest następujący. Mam świeżą instalację PROXMOX-a Virtual Environment w wersji 9.1.1

Ten sprzęt wcześniej obsługiwał również PVE, ale w wersji 6.2.4. Odbywało się to bezproblemowo, jak się łatwo domyśleć przez wiele lat. Mimo to zaledwie po paru godzinach pracy nowej instalacji, albo jak kto woli właśnie dlatego dostęp do wirtualnych maszyn z zewnątrz przestał być możliwy. Analogiczenie sytuacja wygląda z wnętrza samego PVE, czyli utracił on dostęp do internetu. Coś mnie tknęło i wykonałem komendę:
dmesg
moim oczom ukazała się następująca lista błędów:
[ 1255.181492] e1000e 0000:00:19.0 nic0: Detected Hardware Unit Hang:
TDH <c4>
TDT <ec>
next_to_use <ec>
next_to_clean <c3>
buffer_info[next_to_clean]:
time_stamp <1000e8b60>
next_to_watch <c4>
jiffies <1000e9140>
next_to_watch.status <0>
MAC Status <80083>
PHY Status <796d>
PHY 1000BASE-T Status <3800>
PHY Extended Status <3000>
PCI Status <10>

By środowisko wirtualnych maszyn odzyskało kontakt ze światem wystarczy odłaczyć fizycznie i ponownie podłączyć patchcord karty sieciowej. Oczywiście na dłuższą metę to rozwiązanie jest bez sensu, ale jako punkt identyfikacyjny problemu oraz obchodzący go choć na kilka minut, godzin lub ewentualnie dni sprawdza się. Co ciekawe nie jest to pierwszy raz kiedy zetknąłem się z tym zjawiskiem więc postanowiłem się nad nim pochylić. Na podstawie forów stwierdziłem, że problemem z przepełnienim bufora UDP kart sieciowych e1000 firmy INTEL został naprawiony od wersji jądra 4.15, ale zanim to zrobiono to błąd ten spowodował nałożenie ograniczenia segmentacji po przez parametry funkcji sterownika (TSO segmentacja TCP oraz GSO segmentacja ogólna). Pomimo, że wcześniejsze obejście tematu powodowało ograniczenie przepustowości łącza i jak widać z powyższego przykładu generuje również krytyczne przerwy w komunikacji sieciowej to nadal jest są włączone. Reasymując należy je wyłączyć. By to uczyń możemy skorzystać z poniższej komendy:
ethtool -K vmbr0 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off
To rozwiązanie ma jednak zasadniczą wadę. Po ponownym uruchomieniu systemu przestaje działać. By uniknąć tej niedogodności powinniśmy zmodyfikować plik konfiguracyjny kart sieciowych /etc/network/interfaces dodając do poszczególnych w nim zawartych interfejsów PVE (nie poszczególnych wirtualnych maszyn) następującą linikę:
post-up ethtool -K vmbr0 tso off gso off

Gdzie vmbr0 należy ewentualnie podmienić w zależności od nazwy interfejsu we własnym systemie PVE. Po restarcie serwera możemy sprawdzić wartości parametrów sterownika komendą:
ethtool -k vmbr0
Jeśli pakiet ethtool nie jest zainstalowany to oczywiście wystarczy:
apt install ethtool
Opracowane na podstawie:
- [SOLVED] pve kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang: - https://forum.proxmox.com/threads/solved-pve-kernel-e1000e-0000-00-1f-6-eno1-detected-hardware-unit-hang.172564/
- e1000 driver hang - https://forum.proxmox.com/threads/e1000-driver-hang.58284/
- Intel e1000e NIC Offloading Fix - https://community-scripts.github.io/ProxmoxVE/scripts?id=nic-offloading-fix
- Detected Hardware Unit Hang - https://forum.proxmox.com/threads/detected-hardware-unit-hang.178800/
- Help - eno1: Detected Hardware Unit Hang - https://forum.proxmox.com/threads/help-eno1-detected-hardware-unit-hang.117305/
- I had my first "hang" today (ve 9.0.10) - eno1: Detected Hardware Unit Hang: - https://forum.proxmox.com/threads/i-had-my-first-hang-today-ve-9-0-10-eno1-detected-hardware-unit-hang.172830/
- Network Configuration - https://pve.proxmox.com/wiki/Network_Configuration