<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Troubleshooting | przeqpiciel's site</title><link>https://przeqpiciel.com/tags/troubleshooting/</link><description>Blog techniczny o homelabie, Linuxie i innych ciekawych tematach</description><generator>Hugo</generator><language>pl</language><managingEditor>przeqpiciel</managingEditor><webMaster>przeqpiciel</webMaster><lastBuildDate>Thu, 09 Jul 2026 21:35:04 +0200</lastBuildDate><atom:link href="https://przeqpiciel.com/tags/troubleshooting/index.xml" rel="self" type="application/rss+xml"/><item><title>Jak zmienić nazwę klastra Proxmox</title><link>https://przeqpiciel.com/posts/rename-proxmox-cluster/</link><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><author>przeqpiciel</author><guid>https://przeqpiciel.com/posts/rename-proxmox-cluster/</guid><description>&lt;h2 id="wstęp"&gt;Wstęp&lt;/h2&gt;
&lt;p&gt;Zakładałeś klaster pewnie w pośpiechu - dwa, trzy node&amp;rsquo;y, trzeba było wybrać jakąś nazwę, więc powstało coś w stylu &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;pve-cluster&lt;/code&gt; albo, co gorsza, nazwa firmy, z której się w międzyczasie wyprowadziłeś. Miesiące później nazwa razi w oczy przy każdym &lt;code&gt;pvecm status&lt;/code&gt;, a Ty otwierasz dokumentację w nadziei na proste &lt;code&gt;pvecm rename&lt;/code&gt;. Nie znajdziesz takiej komendy. Oficjalna &lt;a href="https://pve.proxmox.com/pve-docs/chapter-pvecm.html"&gt;dokumentacja Proxmox&lt;/a&gt; wprost mówi o nazwie klastra: &lt;em&gt;&amp;ldquo;Use a unique name for your cluster. This name cannot be changed later.&amp;rdquo;&lt;/em&gt; Krótko: nie da się. A jednak - da się, tylko nie przyciskiem w GUI, tylko ręczną edycją configu i zrozumieniem, co się dzieje pod maską. W tym wpisie pokażę jak to zrobić w miarę bezpiecznie, dlaczego Proxmox tego nie ułatwia i na co uważać, zanim wydasz pierwsze &lt;code&gt;systemctl restart corosync&lt;/code&gt;.&lt;/p&gt;</description><content:encoded>&lt;h2 id="wstęp"&gt;Wstęp&lt;/h2&gt;
&lt;p&gt;Zakładałeś klaster pewnie w pośpiechu - dwa, trzy node&amp;rsquo;y, trzeba było wybrać jakąś nazwę, więc powstało coś w stylu &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;pve-cluster&lt;/code&gt; albo, co gorsza, nazwa firmy, z której się w międzyczasie wyprowadziłeś. Miesiące później nazwa razi w oczy przy każdym &lt;code&gt;pvecm status&lt;/code&gt;, a Ty otwierasz dokumentację w nadziei na proste &lt;code&gt;pvecm rename&lt;/code&gt;. Nie znajdziesz takiej komendy. Oficjalna &lt;a href="https://pve.proxmox.com/pve-docs/chapter-pvecm.html"&gt;dokumentacja Proxmox&lt;/a&gt; wprost mówi o nazwie klastra: &lt;em&gt;&amp;ldquo;Use a unique name for your cluster. This name cannot be changed later.&amp;rdquo;&lt;/em&gt; Krótko: nie da się. A jednak - da się, tylko nie przyciskiem w GUI, tylko ręczną edycją configu i zrozumieniem, co się dzieje pod maską. W tym wpisie pokażę jak to zrobić w miarę bezpiecznie, dlaczego Proxmox tego nie ułatwia i na co uważać, zanim wydasz pierwsze &lt;code&gt;systemctl restart corosync&lt;/code&gt;.&lt;/p&gt;
&lt;div class="hint hint--danger"&gt;
 &lt;span class="hint-icon"&gt;🚨&lt;/span&gt;
 &lt;div class="hint-content"&gt;
 To jest procedura nieoficjalna i niewspierana przez Proxmox. Działa, jest opisywana i stosowana przez społeczność (m.in. na &lt;a href="https://forum.proxmox.com/threads/rename-a-cluster-not-a-node.34442/"&gt;forum Proxmox&lt;/a&gt;), ale robisz to na własną odpowiedzialność. Na produkcji rób to w oknie serwisowym i miej pewność, że backup &lt;code&gt;/etc/pve&lt;/code&gt; oraz konfiguracji VM-ek jest aktualny.
 &lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="dlaczego-to-nie-jest-proste"&gt;Dlaczego to nie jest proste&lt;/h2&gt;
&lt;p&gt;Nazwa klastra w Proxmox nie jest osobnym ustawieniem gdzieś w bazie - to parametr &lt;code&gt;cluster_name&lt;/code&gt; w sekcji &lt;code&gt;totem&lt;/code&gt; pliku &lt;code&gt;/etc/pve/corosync.conf&lt;/code&gt;. Ten plik żyje w &lt;a href="https://pve.proxmox.com/pve-docs/chapter-pvecm.html"&gt;pmxcfs&lt;/a&gt; - specjalnym systemie plików opartym o bazę SQLite, który w czasie rzeczywistym replikuje konfigurację klastra do wszystkich node&amp;rsquo;ów. Corosync odpowiada za komunikację między node&amp;rsquo;ami i ustalanie kworum, a &lt;code&gt;cluster_name&lt;/code&gt; jest jego identyfikatorem klastra używanym w tym protokole.&lt;/p&gt;
&lt;p&gt;Problem w tym, że każda zmiana w &lt;code&gt;corosync.conf&lt;/code&gt; musi być zsynchronizowana wszędzie naraz, a &lt;code&gt;config_version&lt;/code&gt; w pliku to jedyny mechanizm, który mówi node&amp;rsquo;om &amp;ldquo;to jest nowsza wersja configu, zaakceptuj ją&amp;rdquo;. Jeśli zmienisz nazwę i zrestartujesz corosync tylko na części node&amp;rsquo;ów, przez chwilę będziesz mieć dwie grupy demonów corosync, które nie chcą się ze sobą dogadać, bo każda widzi inną tożsamość klastra w pamięci procesu, dopóki nie przeładuje configu. W praktyce trwa to sekundy, ale przy klastrze z HA i uruchomionymi maszynami lepiej to zrobić świadomie niż na hura.&lt;/p&gt;
&lt;p&gt;Stąd ostrożność w oficjalnej dokumentacji - to nie jest funkcja, której ktoś w Proxmox testował na wszystkich możliwych topologiach (QDevice, wiele linków corosync, HA), więc zamiast ją wspierać połowicznie, wolą napisać &amp;ldquo;nie da się&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="zanim-zaczniesz"&gt;Zanim zaczniesz&lt;/h2&gt;
&lt;p&gt;Kilka rzeczy do sprawdzenia przed edycją:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Masz dostęp SSH do każdego node&amp;rsquo;a&lt;/strong&gt; w klastrze - zmianę trzeba wprowadzić wszędzie, nie tylko tam, gdzie akurat jesteś zalogowany.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Klaster ma kworum&lt;/strong&gt; (&lt;code&gt;pvecm status&lt;/code&gt; pokazuje &lt;code&gt;Quorate: Yes&lt;/code&gt;). Nie baw się w to w trakcie awarii sieciowej czy przy martwym node&amp;rsquo;zie.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Masz kopię &lt;code&gt;/etc/pve/corosync.conf&lt;/code&gt;&lt;/strong&gt; na wszelki wypadek, np. &lt;code&gt;cp /etc/pve/corosync.conf ~/corosync.conf.bak&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Używasz QDevice?&lt;/strong&gt; Po zmianie nazwy będziesz musiał go usunąć i dodać ponownie - certyfikat QDevice jest powiązany ze starą nazwą klastra i po zmianie zacznie zgłaszać błędy o nieprawidłowym certyfikacie.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="krok-po-kroku-zmiana-nazwy-klastra"&gt;Krok po kroku: zmiana nazwy klastra&lt;/h2&gt;
&lt;h3 id="1-sprawdź-obecny-stan"&gt;1. Sprawdź obecny stan&lt;/h3&gt;
&lt;p&gt;Na dowolnym node&amp;rsquo;zie:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pvecm status
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /etc/pve/corosync.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zwróć uwagę na sekcję &lt;code&gt;totem&lt;/code&gt; i aktualny &lt;code&gt;config_version&lt;/code&gt; w sekcji &lt;code&gt;cluster&lt;/code&gt;. Będziesz go za chwilę potrzebować.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;totem {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cluster_name: stary-klaster
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config_version: 4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cluster {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config_version: 4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;W nowszych wersjach Proxmox &lt;code&gt;config_version&lt;/code&gt; bywa też osobno w bloku &lt;code&gt;cluster&lt;/code&gt; na końcu pliku - podbij obie wartości, jeśli obie występują.&lt;/p&gt;
&lt;h3 id="2-edytuj-corosyncconf"&gt;2. Edytuj corosync.conf&lt;/h3&gt;
&lt;p&gt;Plik &lt;code&gt;/etc/pve/corosync.conf&lt;/code&gt; wystarczy edytować &lt;strong&gt;na jednym node&amp;rsquo;zie&lt;/strong&gt; - to katalog &lt;code&gt;/etc/pve/&lt;/code&gt; jest tym magicznym, replikowanym przez pmxcfs, więc zmiana rozejdzie się sama, o ile jest poprawna składniowo i ma wyższy &lt;code&gt;config_version&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nano /etc/pve/corosync.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zmieniasz &lt;code&gt;cluster_name&lt;/code&gt; i podbijasz &lt;code&gt;config_version&lt;/code&gt; o dokładnie 1:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; totem {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ffa198;background-color:#490202"&gt;- cluster_name: stary-klaster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56d364;background-color:#0f5323"&gt;+ cluster_name: homelab-xl
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config_version: 4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56d364;background-color:#0f5323"&gt;+ config_version: 5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="hint hint--warning"&gt;
 &lt;span class="hint-icon"&gt;⚠️&lt;/span&gt;
 &lt;div class="hint-content"&gt;
 Nie skacz z &lt;code&gt;config_version&lt;/code&gt; o więcej niż 1 i nie zapomnij go podbić w ogóle - pmxcfs porówna wersję nowego pliku z lokalną kopią na każdym node&amp;rsquo;zie i &lt;strong&gt;odrzuci zmianę&lt;/strong&gt;, jeśli wersja nie jest wyższa. Zbyt duży skok też bywa problematyczny przy kolejnych edycjach, bo tracisz orientację, na jakiej wersji naprawdę jesteś.
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Zapisujesz plik. Jeśli składnia jest błędna albo &lt;code&gt;config_version&lt;/code&gt; się nie zgadza, pmxcfs po prostu zignoruje zmianę - sprawdź to od razu:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /etc/pve/corosync.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Jeśli widzisz nową nazwę - zmiana przeszła walidację i pmxcfs zaczął ją replikować do pozostałych node&amp;rsquo;ów. Możesz to potwierdzić, odpytując inny node w klastrze - zawartość &lt;code&gt;/etc/pve/corosync.conf&lt;/code&gt; powinna się tam zgadzać w ciągu kilku sekund.&lt;/p&gt;
&lt;h3 id="3-zrestartuj-corosync-na-każdym-nodezie"&gt;3. Zrestartuj corosync na każdym node&amp;rsquo;zie&lt;/h3&gt;
&lt;p&gt;Corosync trzyma nazwę klastra w pamięci od momentu startu procesu, więc sam zapis pliku jej nie zmieni w działającym demonie. Trzeba go zrestartować - &lt;strong&gt;na każdym node&amp;rsquo;zie z osobna&lt;/strong&gt;, jeden po drugim, nie równolegle:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl restart corosync
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Po restarcie na pierwszym node&amp;rsquo;zie sprawdź &lt;code&gt;pvecm status&lt;/code&gt; - node powinien nadal widzieć klaster (bo pozostałe wciąż działają na starym configu w pamięci, ale to ten sam &lt;code&gt;config_version&lt;/code&gt; z tożsamej bazy, więc się dogadają). Dopiero jak przejdziesz przez wszystkie node&amp;rsquo;y, cały klaster jednomyślnie operuje na nowej nazwie.&lt;/p&gt;
&lt;h3 id="4-zrestartuj-pve-cluster-i-pveproxy"&gt;4. Zrestartuj pve-cluster i pveproxy&lt;/h3&gt;
&lt;p&gt;Sama nazwa w GUI (i część wewnętrznych mechanizmów PVE, np. &lt;code&gt;pvestatd&lt;/code&gt;) czyta ją z pmxcfs, więc żeby zobaczyć efekt w interfejsie webowym, restartujesz jeszcze:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl restart pve-cluster
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl restart pveproxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zrób to na każdym node&amp;rsquo;zie. Odśwież przeglądarkę (najlepiej z czyszczeniem cache) - w lewym górnym rogu GUI powinieneś zobaczyć nową nazwę klastra.&lt;/p&gt;
&lt;h3 id="5-qdevice-jeśli-go-używasz"&gt;5. QDevice, jeśli go używasz&lt;/h3&gt;
&lt;p&gt;Jeśli masz skonfigurowany &lt;a href="https://pve.proxmox.com/pve-docs/chapter-pvecm.html"&gt;QDevice&lt;/a&gt; do głosowania w klastrach o parzystej liczbie node&amp;rsquo;ów, po zmianie nazwy zobaczysz błędy o nieprawidłowym certyfikacie - certyfikat QDevice jest generowany dla konkretnej nazwy klastra. Usuwasz go i dodajesz ponownie:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pvecm qdevice remove
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pvecm qdevice setup &amp;lt;adres_IP_QDevice&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="weryfikacja"&gt;Weryfikacja&lt;/h2&gt;
&lt;p&gt;Na koniec, na wszystkich node&amp;rsquo;ach:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pvecm status
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;corosync-cfgtool -s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;pvecm status&lt;/code&gt; powinien pokazywać nową nazwę w polu &lt;code&gt;Name&lt;/code&gt;, a &lt;code&gt;corosync-cfgtool -s&lt;/code&gt; - że wszystkie linki (&lt;code&gt;link: 0&lt;/code&gt;) są &lt;code&gt;connected&lt;/code&gt; na każdym node&amp;rsquo;zie. Jeśli klaster ma HA, sprawdź jeszcze &lt;code&gt;ha-manager status&lt;/code&gt;, żeby upewnić się, że menedżer HA nie zgubił się w międzyczasie.&lt;/p&gt;
&lt;h2 id="alternatywa-bez-restartu-corosync"&gt;Alternatywa bez restartu corosync&lt;/h2&gt;
&lt;p&gt;W sieci krąży też wariant bez restartu &lt;code&gt;corosync&lt;/code&gt; na wszystkich node&amp;rsquo;ach naraz - edycja bezpośrednio w bazie pmxcfs przez &lt;code&gt;sqlite3&lt;/code&gt; na pliku &lt;code&gt;/var/lib/pve-cluster/config.db&lt;/code&gt;, a potem restart usług &lt;code&gt;pvestatd&lt;/code&gt;, &lt;code&gt;pvedaemon&lt;/code&gt;, &lt;code&gt;pve-cluster&lt;/code&gt; i &lt;code&gt;corosync&lt;/code&gt; w jednej sekwencji. Wspominam o tym tylko dla kompletności - to jeszcze bardziej &amp;ldquo;za kulisami&amp;rdquo; niż edycja &lt;code&gt;corosync.conf&lt;/code&gt;, bo omija normalną walidację configu przez pmxcfs, a przy błędzie w zapytaniu &lt;code&gt;UPDATE&lt;/code&gt; łatwo o uszkodzenie bazy konfiguracyjnej całego klastra. Jeśli i tak wolisz iść tą drogą, zrób to najpierw na klastrze testowym.&lt;/p&gt;
&lt;h2 id="jeśli-wolisz-nie-ryzykować"&gt;Jeśli wolisz nie ryzykować&lt;/h2&gt;
&lt;p&gt;Jest jeszcze trzecia droga, najbezpieczniejsza: zamiast zmieniać nazwę istniejącego klastra, załóż nowy klaster pod docelową nazwą i &lt;a href="https://pve.proxmox.com/wiki/Cluster_Manager"&gt;przenieś do niego node&amp;rsquo;y i maszyny wirtualne&lt;/a&gt; jeden po drugim. Więcej roboty, zero ryzyka związanego z ręczną edycją &lt;code&gt;corosync.conf&lt;/code&gt; na żywym organizmie. Warta rozważenia, jeśli klaster jest mały albo migrujesz sprzęt i tak planujesz reinstalację node&amp;rsquo;ów.&lt;/p&gt;
&lt;h2 id="podsumowanie"&gt;Podsumowanie&lt;/h2&gt;
&lt;p&gt;Proxmox nie daje przycisku do zmiany nazwy klastra, bo to funkcja, której oficjalnie nie testują i nie wspierają - ale mechanizm jest prosty do zrozumienia: &lt;code&gt;cluster_name&lt;/code&gt; w &lt;code&gt;/etc/pve/corosync.conf&lt;/code&gt;, podbity &lt;code&gt;config_version&lt;/code&gt;, restart &lt;code&gt;corosync&lt;/code&gt; na każdym node&amp;rsquo;zie po kolei, a na końcu &lt;code&gt;pve-cluster&lt;/code&gt; i &lt;code&gt;pveproxy&lt;/code&gt; po nową nazwę w GUI. Cała trudność bierze się nie z samej edycji pliku, a z tego, że robisz to na żywym klastrze, gdzie kolejność i cierpliwość między krokami mają znaczenie. Rób to w oknie serwisowym, miej backup &lt;code&gt;corosync.conf&lt;/code&gt; pod ręką i przechodź przez node&amp;rsquo;y po kolei, a nie zaskoczy Cię nic więcej niż odświeżenie przeglądarki na końcu.&lt;/p&gt;</content:encoded></item><item><title>E1000e network card freeze</title><link>https://przeqpiciel.com/posts/e1000e-network-card-freeze/</link><pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate><author>przeqpiciel</author><guid>https://przeqpiciel.com/posts/e1000e-network-card-freeze/</guid><description>&lt;h1 id="zawieszenie-karty-sieciowej-e1000e"&gt;Zawieszenie karty sieciowej e1000e&lt;/h1&gt;
&lt;h2 id="wstęp"&gt;Wstęp&lt;/h2&gt;
&lt;p&gt;Czy zdarzyło Ci się kiedyś, że Twój serwer, który działał bez problemów przez wiele dni, nagle przestał odpowiadać na sieć? Maszyna się nie restartowała, uruchomione procesy nadal działały, ale jakby zniknęła z sieci. Dokładnie z taką sytuacją miałem do czynienia ostatniej nocy. Rano odkryłem, że serwer jest fizycznie włączony, ale kompletnie nie odpowiada na żadne zapytania sieciowe - ani ping, ani SSH, ani żadne inne usługi sieciowe.&lt;/p&gt;</description><content:encoded>&lt;h1 id="zawieszenie-karty-sieciowej-e1000e"&gt;Zawieszenie karty sieciowej e1000e&lt;/h1&gt;
&lt;h2 id="wstęp"&gt;Wstęp&lt;/h2&gt;
&lt;p&gt;Czy zdarzyło Ci się kiedyś, że Twój serwer, który działał bez problemów przez wiele dni, nagle przestał odpowiadać na sieć? Maszyna się nie restartowała, uruchomione procesy nadal działały, ale jakby zniknęła z sieci. Dokładnie z taką sytuacją miałem do czynienia ostatniej nocy. Rano odkryłem, że serwer jest fizycznie włączony, ale kompletnie nie odpowiada na żadne zapytania sieciowe - ani ping, ani SSH, ani żadne inne usługi sieciowe.&lt;/p&gt;
&lt;h2 id="odkrycie-problemu"&gt;Odkrycie problemu&lt;/h2&gt;
&lt;p&gt;Po sprawdzeniu fizycznego stanu maszyny i podłączeniu monitora oraz klawiatury, system operacyjny działał normalnie. Interfejs sieciowy jednak nie odpowiadał, nawet lokalne testy &lt;code&gt;ping&lt;/code&gt; do innych hostów w sieci kończyły się niepowodzeniem. Czas na śledztwo.&lt;/p&gt;
&lt;h3 id="diagnostyka-za-pomocą-journalctl"&gt;Diagnostyka za pomocą journalctl&lt;/h3&gt;
&lt;p&gt;Pierwszym krokiem w diagnostyce problemu z siecią w systemach Linux jest sprawdzenie logów jądra. Najlepszym narzędziem do tego celu jest &lt;code&gt;journalctl&lt;/code&gt; z odpowiednimi parametrami. Polecenie &lt;code&gt;journalctl -k -b -1&lt;/code&gt; pozwala sprawdzić logi jądra z poprzedniego boot&amp;rsquo;a systemu, co jest szczególnie przydatne, gdy problem wystąpił przed aktualnym uruchomieniem systemu.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;journalctl -k -b -1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Parametry tego polecenia oznaczają:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-k&lt;/code&gt; (lub &lt;code&gt;--dmesg&lt;/code&gt;) - wyświetla tylko logi jądra&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b -1&lt;/code&gt; - pokazuje logi z poprzedniego boot&amp;rsquo;a (boot -1 oznacza poprzedni boot, -2 poprzedni przed poprzednim, itd.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;W moim przypadku logi jądra ujawniły problem z kartą sieciową e1000e na interfejsie &lt;code&gt;enp0s25&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Jan 10 08:10:28 pve.localhost kernel: e1000e 0000:00:19.0 enp0s25: Detected Hardware Unit Hang:
 TDH &amp;lt;82&amp;gt;
 TDT &amp;lt;8e&amp;gt;
 next_to_use &amp;lt;8e&amp;gt;
 next_to_clean &amp;lt;81&amp;gt;
 buffer_info[next_to_clean]:
 time_stamp &amp;lt;101fda64e&amp;gt;
 next_to_watch &amp;lt;82&amp;gt;
 jiffies &amp;lt;102048d40&amp;gt;
 next_to_watch.status &amp;lt;0&amp;gt;
 MAC Status &amp;lt;80083&amp;gt;
 PHY Status &amp;lt;796d&amp;gt;
 PHY 1000BASE-T Status &amp;lt;3800&amp;gt;
 PHY Extended Status &amp;lt;3000&amp;gt;
 PCI Status &amp;lt;10&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Komunikat &amp;ldquo;Detected Hardware Unit Hang&amp;rdquo; wskazuje na zawieszenie jednostki sprzętowej karty sieciowej e1000e. Karta wielokrotnie próbowała wykryć i naprawić problem, jednak komunikaty powtarzały się co około 2 sekundy, co sugerowało, że problem nie został automatycznie rozwiązany.&lt;/p&gt;
&lt;h3 id="dlaczego-e1000e-ma-ten-problem"&gt;Dlaczego e1000e ma ten problem?&lt;/h3&gt;
&lt;p&gt;Sterownik e1000e obsługuje gigabitowe karty sieciowe Intel podłączane przez PCI Express (końcówka &amp;ldquo;e&amp;rdquo; w nazwie pochodzi właśnie od PCI Express, w odróżnieniu od starszego sterownika e1000 dla kart PCI). W moim przypadku problem był związany z funkcją &lt;strong&gt;EEE (Energy Efficient Ethernet)&lt;/strong&gt;. EEE to standard, który pozwala kartom sieciowym na zmniejszenie zużycia energii poprzez przełączanie się w tryb niskiego poboru mocy podczas bezczynności. Jednak implementacja tej funkcji może powodować problemy z niektórymi kartami lub przełącznikami sieciowymi, prowadząc do zawieszenia się karty.&lt;/p&gt;
&lt;h2 id="rozwiązanie-problemu"&gt;Rozwiązanie problemu&lt;/h2&gt;
&lt;h3 id="krok-1-sprawdzenie-ustawień-eee"&gt;Krok 1: Sprawdzenie ustawień EEE&lt;/h3&gt;
&lt;p&gt;Po zidentyfikowaniu problemu z logów jądra, sprawdziłem ustawienia EEE (Energy Efficient Ethernet) na interfejsie &lt;code&gt;enp0s25&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool --show-eee enp0s25
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wynik pokazał, że EEE było włączone, ale nieaktywne:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;EEE settings for enp0s25:
	EEE status: enabled - inactive
	Tx LPI: 17 (us)
	Supported EEE link modes: 100baseT/Full
	 1000baseT/Full
	Advertised EEE link modes: 100baseT/Full
	 1000baseT/Full
	Link partner advertised EEE link modes: Not reported
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="krok-2-wyłączenie-eee"&gt;Krok 2: Wyłączenie EEE&lt;/h3&gt;
&lt;p&gt;Na podstawie logów i statusu EEE, wyłączyłem funkcję Energy Efficient Ethernet:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool --set-eee enp0s25 eee off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Po wyłączeniu EEE, sprawdziłem ponownie status:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool --show-eee enp0s25
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wynik potwierdził wyłączenie:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;EEE settings for enp0s25:
	EEE status: disabled
	Tx LPI: 17 (us)
	Supported EEE link modes: 100baseT/Full
	 1000baseT/Full
	Advertised EEE link modes: 100baseT/Full
	 1000baseT/Full
	Link partner advertised EEE link modes: Not reported
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Po wyłączeniu EEE interfejs sieciowy zaczął działać normalnie, co potwierdziło, że to właśnie ta funkcja była przyczyną problemu.&lt;/p&gt;
&lt;h3 id="krok-3-wyłączenie-tso-gso-i-gro"&gt;Krok 3: Wyłączenie TSO, GSO i GRO&lt;/h3&gt;
&lt;p&gt;Jako dodatkowe zabezpieczenie, wyłączyłem również funkcje offloading&amp;rsquo;u TSO (TCP Segmentation Offload), GSO (Generic Segmentation Offload) i GRO (Generic Receive Offload):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ethtool -K enp0s25 tso off gso off gro off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Te funkcje mogą czasami powodować problemy ze stabilnością, szczególnie w połączeniu z EEE. Warto sprawdzić, czy ta zmiana poprawia stabilność karty.&lt;/p&gt;
&lt;p&gt;Funkcje te można włączyć ponownie poleceniem:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ethtool -K enp0s25 tso on gso on gro on
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="zapobieganie-problemom-z-kartą-e1000e"&gt;Zapobieganie problemom z kartą e1000e&lt;/h2&gt;
&lt;h3 id="krok-1-trwałe-wyłączenie-eee"&gt;Krok 1: Trwałe wyłączenie EEE&lt;/h3&gt;
&lt;p&gt;Aby upewnić się, że EEE pozostanie wyłączone po restarcie systemu, należy utworzyć skrypt, który będzie automatycznie wyłączał tę funkcję przy każdym starcie interfejsu sieciowego. W systemach używających &lt;code&gt;systemd-networkd&lt;/code&gt; możemy skorzystać z mechanizmu &lt;code&gt;networkd-dispatcher&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Utworzenie katalogu, jeśli nie istnieje&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /etc/networkd-dispatcher/routable.d
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Utworzenie skryptu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/networkd-dispatcher/routable.d/50-eee-off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zawartość skryptu:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-weight:bold;font-style:italic"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool --set-eee enp0s25 eee off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Nadanie uprawnień wykonywania:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chmod +x /etc/networkd-dispatcher/routable.d/50-eee-off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alternatywnie, jeśli &lt;code&gt;networkd-dispatcher&lt;/code&gt; nie jest dostępny, można użyć innych metod:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opcja A: Użycie &lt;code&gt;/etc/rc.local&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Edytuj plik /etc/rc.local (pamiętaj o dodaniu linii przed &amp;#34;exit 0&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/rc.local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dodaj przed &lt;code&gt;exit 0&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool --set-eee enp0s25 eee off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Opcja B: Użycie NetworkManager dispatcher&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Jeśli używasz NetworkManager:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /etc/NetworkManager/dispatcher.d
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/NetworkManager/dispatcher.d/50-eee-off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zawartość:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-weight:bold;font-style:italic"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;if&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#79c0ff"&gt;$1&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;==&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;enp0s25&amp;#34;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#79c0ff"&gt;$2&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;==&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;up&amp;#34;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt;; &lt;span style="color:#ff7b72"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ethtool --set-eee enp0s25 eee off
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chmod +x /etc/NetworkManager/dispatcher.d/50-eee-off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Opcja C: Utworzenie jednostki systemd&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Można również utworzyć jednostkę systemd, która będzie wykonywana po starcie sieci:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/systemd/system/disable-eee.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zawartość:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;[Unit]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Description&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;Disable EEE on enp0s25&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Wants&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;network-online.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;After&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;network-online.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;oneshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ExecStart&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;/usr/sbin/ethtool --set-eee enp0s25 eee off&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RemainAfterExit&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;[Install]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WantedBy&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;multi-user.target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Włączenie usługi:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl enable disable-eee.service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start disable-eee.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="krok-2-trwałe-wyłączenie-tso-gso-i-gro"&gt;Krok 2: Trwałe wyłączenie TSO, GSO i GRO&lt;/h3&gt;
&lt;p&gt;Jeśli wyłączenie TSO, GSO i GRO pomogło, warto również ustawić te parametry na stałe. Możemy to zrobić w ten sam sposób - dodając polecenia do skryptu wyłączającego EEE:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/networkd-dispatcher/routable.d/50-eee-off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Zaktualizowana zawartość:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-weight:bold;font-style:italic"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool --set-eee enp0s25 eee off
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool -K enp0s25 tso off gso off gro off
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="krok-3-weryfikacja-ustawień"&gt;Krok 3: Weryfikacja ustawień&lt;/h3&gt;
&lt;p&gt;Po zrestartowaniu systemu, warto sprawdzić, czy ustawienia zostały poprawnie zastosowane:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Sprawdzenie EEE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool --show-eee enp0s25
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Sprawdzenie TSO, GSO, GRO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ethtool -k enp0s25 | grep -E &lt;span style="color:#a5d6ff"&gt;&amp;#34;tso|gso|gro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Oczekiwany wynik dla EEE:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;EEE status: disabled
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dla TSO, GSO, GRO powinno być:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tcp-segmentation-offload: off
generic-segmentation-offload: off
generic-receive-offload: off
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="dlaczego-te-ustawienia-pomagają"&gt;Dlaczego te ustawienia pomagają?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;EEE (Energy Efficient Ethernet)&lt;/strong&gt; - może powodować problemy z synchronizacją między kartą a przełącznikiem, szczególnie przy niektórych modelach przełączników lub w określonych warunkach sieciowych&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TSO/GSO/GRO (Offloading)&lt;/strong&gt; - te funkcje przenoszą część przetwarzania pakietów z CPU na kartę sieciową. Chociaż mogą zwiększać wydajność, czasami mogą powodować problemy ze stabilnością, szczególnie w środowisku wirtualizacji lub przy niektórych kombinacjach sprzętowych&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jeśli problem nadal występuje po wyłączeniu EEE, warto spróbować również wyłączyć offloading, co często rozwiązuje problemy ze stabilnością kart e1000e.&lt;/p&gt;
&lt;h2 id="podsumowanie"&gt;Podsumowanie&lt;/h2&gt;
&lt;p&gt;Problem z zawieszeniem się karty sieciowej e1000e jest znaną usterką, która może wystąpić w systemach z kartami Intel korzystającymi z tego sterownika. W moim przypadku przyczyną była funkcja EEE (Energy Efficient Ethernet), która pomimo swoich zalet w zakresie oszczędzania energii, może powodować problemy ze stabilnością.&lt;/p&gt;
&lt;p&gt;Podstawową metodą diagnozy jest sprawdzenie logów jądra za pomocą &lt;code&gt;journalctl -k -b -1&lt;/code&gt;, co pozwala zobaczyć, co działo się w systemie przed jego ostatnim restartem. Komunikaty &amp;ldquo;Detected Hardware Unit Hang&amp;rdquo; jednoznacznie wskazują na problem z kartą sieciową.&lt;/p&gt;
&lt;p&gt;Rozwiązanie problemu polega na wyłączeniu funkcji EEE za pomocą &lt;code&gt;ethtool --set-eee enp0s25 eee off&lt;/code&gt;, a następnie skonfigurowaniu systemu tak, aby to ustawienie było trwałe. W przypadku gdy to nie wystarczy, warto również wyłączyć funkcje offloading&amp;rsquo;u TSO, GSO i GRO.&lt;/p&gt;
&lt;p&gt;Pamiętaj, że problemy z siecią mogą mieć różne przyczyny - zawsze warto sprawdzić logi systemowe i rozpocząć diagnostykę od podstawowych kroków, takich jak sprawdzenie połączenia fizycznego, konfiguracji sieciowej i logów jądra. W przypadku kart e1000e, wyłączenie EEE jest często pierwszym krokiem, który rozwiązuje problemy ze stabilnością.&lt;/p&gt;</content:encoded></item></channel></rss>