Linux – Bacula, Fatal error: No Job status returned from FD.

Podczas wykonywania się kopi zapasowej w logach Baculi pojawia się błąd o następującej treści:

05-May 04:05 backup-dir JobId 2380: Fatal error: Network error with FD during Backup: ERR=Connection reset by peer.
05-May 04:05 backup-dir JobId 2380: Fatal error: No Job status returned from FD.

Pojawia się tylko kiedy kopiowane są duże ilości danych. Czyli np. kiedy wykonywany jest backup wszystkich danych, ale już dla kopii przyrostowych, które są znacznie mniejsze backup wykonuje się bezbłędnie. Ponadto widać, że po zakończeniu kopiowania danych cały proces zatrzymuje się i dopiero po upływie godziny lub więcej dostajemy komunikat o błędzie. Ten komunikat również jest specyficzny bo widać w nim, że dane do serwera SD zostały przesłane natomiast potwierdzenia z FD już nie. Przykładowo wygląda to tak:

FD Files Written: 0
SD Files Written: 181,081
FD Bytes Written: 0 (0 B)
SD Bytes Written: 13,444,072,231 (13.44 GB)

Rozwiązanie:

W moim wypadku problemem okazał się za długi czas TCP keep-alive, zazwyczaj w systemach linuxowych to 7200s. Należało go znacznie skrócić. Ja ograniczyłem go do 60sek i to zarówno po stronie klienta jak i serwera baculi

Dla testu po stronie serwera baculi (SD) z wiersza poleceń wykonujemy (oczywiście komenda restartu usługi jest dla Debiana dla innych dystrybucji może być inna):

sysctl -w net.ipv4.tcp_keepalive_time=60
service bacula-sd restart

Następnie po stronie klienta (FD).

sysctl -w net.ipv4.tcp_keepalive_time=60
service bacula-fd restart

I teraz możemy sprawdzić czy kolejny backup zakończy się sukcesem. Jeżeli tak to należało by jeszcze spowodować żeby zmiana TCP keep-alive była stała. W tym celu modyfikujemy lub dodajemy wpis “net.ipv4.tcp_keepalive_time=60” do/w pliku “/etc/sysctl.conf” lub analogicznym jeśli używany innego systemu niż Debian.

Dodaj komentarz