3 мин чтения#infrastructure#engineering

Need for Proxmox Backup Server или заметки про NFS

В прошлом посте написал «Поехали» — первый запуск резервного копирования этой ночью. Утром открыл панель управления и интерфейс не загружается :)


SSH

Сервер на связи, пинг проходит, SSH работает. Но uptime говорит:

load average: 26.29, 24.46, 23.54

На Xeon 2388G нагрузка 26 — это не рабочий режим, это уже прилегли отдохнуть все основные сервисы. Три воркера pveproxy сидят в D-state с 02:59. D-state — ядро ждёт ответа от I/O и не отдаёт поток никому, SIGKILL не помогает.

В логах:

100.64.0.4:/volume1/pve-backups ... hard,fatal_neterrors=none,timeo=600,retrans=2

В логах tailscale от 03:36:

netcheck: UDP is blocked, trying HTTPS
timeout opening TCP 100.64.0.5 => 100.64.0.4:111

Что случилось

→ Резервное копирование стартовало в 03:00 → В 03:36 — tailscaled пропустил WireGuard keepalive под нагрузкой активного бэкапа → UDP-подключение зависло: NAT на домашнем маршрутизаторе сломался → Tailscale переключился на DERP-relay по HTTPS → DERP работает на той же физической машине (I know) → Монтаж hard + fatal_neterrors=none: процессы ждут бесконечно, ошибок не получают → Нагрузка растёт → headscale VM грустит → DERP деградирует → Tailscale не может переподключиться → Выхода нет, зависнем

NFS поверх Tailscale с DERP-реле на той же машине — это не просто неудачная конфигурация. Это архитектура, которая гарантированно зависнет при любом UDP-сбое. Не просто «может зависнуть», а гарантированно зависнет.

Итог: 16 процессов в D-state, нагрузка 29, pveproxy не отвечает, headscale-VM не отвечает по SSH. VMID 9000 (465 МБ) успел дописаться до .vma.zst в 03:01. VMID 1013001 — 15 ГБ незавершённого .vma.dat из 500 ГБ.


Как починил

reboot -f не отработал — SSH не успел передать команду под такой нагрузкой. Пришлось через SysRq:

echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

После перезагрузки — перебрал схему подключения.

Tailscale убран из пути резервного копирования. MikroTik пробрасывает TCP 2049 на Synology, источник — только публичный IP московской машины. Два правила в firewall: accept с него, drop со всего остального на этот порт, RouterOS конечно уан лав.

Заработало.

В storage.cfg:

options vers=4,soft,timeo=30,retrans=3

vers=4 — portmapper не нужен, только порт 2049. soft — три неудачи за 3 секунды, процесс получает ошибку и выходит. Бэкап прерывается чисто, хост продолжает работать.


Запустил вручную. VMID 9000 — 55 секунд, 473 МБ. VMID 1013001 пошёл с нуля: 225 МБ/с с ZFS, ZSTD жмёт на лету перед отправкой.


hard NFS-монтаж поверх любого туннеля — не отказоустойчивость, а «зависну навсегда вместо того, чтобы упасть» → DERP-relay на той же машине, что NFS-клиент — как запасной выход через ту же стену → WireGuard keepalive под нагрузкой — грусть, причём это поведение UDP, а не баг → NFSv4 не нужен portmapper. Один порт 2049 — достаточно!

Вчера эта серия записок закончилась на «Поехали». Сегодня заканчивается на «Работает».

Читать по теме