ProxmoxのホストとVMに繋がらなくなる

知り合いから古いNUC(NUC5i5RYH)を譲っていただき、Proxmoxをインストールして遊んでいました。

3日~7日ぐらい起動するとどうもVMどころかホスト機にも疎通できなくなる現象が発生していました。

問題の概要

発生していた症状

  • 疎通断の発生
    • 3~7日ぐらいで不定
    • OSがハングしていたわけではない
    • ホスト機のネットワークサービスを再起動すると疎通できるようになる

環境

  • Proxmox VE 8.4.6
  • Intel NUC5i5RYH
  • 物理ネットワークアダプタ: Intel® Ethernet Connection I218-V

調査

最初は10年前のNUCなのでOSがハングしているのかなと思いましたが、別にそういうわけではなかったです。 コンソール接続を行ったところ、普通に操作ができました。

試しにホスト機のnetworking.serviceを再起動してみると疎通が取れるようになったので、ホスト機のネットワーク系の何かしらが原因というところまでわかりました。

ボケーっとdmesg叩いたら

Detected Hardware Unit Hang

という出力がされていたので、適当にググったところ、TCP Segmentation Offloadという機能が悪さしていそうだなというところまで判明しました。

原因の特定

TCP Segment Offload(TSO)とは

  • ネットワークカードがTCPセグメンテーションをハードウェアで処理する機能
  • パフォーマンス向上が期待されるが、環境によっては問題を引き起こす

解決方法

TSOの無効化

TSOを無効化すればよいです。パフォーマンスは多少下がりますがハングアップするよりかはマシです。 どうせHome Assistantなど内向きのサービスしか立てない予定なので、パフォーマンスなんかどうでもいいというのもあります。

ethtool -K eth0 tso off

永続的な設定

ethtoolだけでは設定の永続化ができないので、interfacesに直接書いてあげます。 post-upで起動ごとに無効化します。 もう少しいい感じの設定はないんだろうか。

root@euphoria:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface enp0s25 inet manual
        post-up /usr/sbin/ethtool -K enp0s25 tso off gso off gro off

auto vmbr0
iface vmbr0 inet static
        address 192.168.1.190/24
        gateway 192.168.1.1
        bridge-ports enp0s25
        bridge-stp off
        bridge-fd 0

iface wlp2s0 inet manual

source /etc/network/interfaces.d/*
root@euphoria:~#

まとめ

2週間ほど放置してみましたが、問題なさそうなのでこれで運用することにします。 Proxmox基盤つくって思ったけど、メモリー無限にほしいな。