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 — достаточно!
Вчера эта серия записок закончилась на «Поехали». Сегодня заканчивается на «Работает».