Files
obsidian-vault/family/how-to/time-machine.md
T

11 KiB
Executable File
Raw Blame History

Time Machine Backup — Kraken (RPi5)

Топология

Бэкап идёт по SMB на Кракен (RPi5). Samba на хосте, smb.conf управляется вручную (не Docker-контейнер, не OMV-плагин).

Destination: smb://timemachine@kraken/TimeMachine Бандл: mbp-black.sparsebundle Пользователь: timemachine (uid=1001), создан через omv-rpc Пароль: smbpasswd -a timemachine passdb.tdb персистентен на хосте — пароль не слетает при рестарте

Бандл лежит на локальном HDD Кракена: /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/timemachine/

Текущий статус (2026-09-24)

  • Бэкап работает (LAN): бандл 470 ГБ, последняя сессия 2026-09-24 13:20 — инкремент 1.73 ГБ, успешно.
  • Квота 800 ГБ (745 Gi): занято 470 Gi, до потолка ~275 Gi — дальше TM чистит старые снапшоты.
  • Диск Кракена: 1.8 ТБ, свободно 757 ГБ.
  • Не решено: SMB через WG вне дома — mount_smbfs Authentication error (см. History 2026-07-01).

Конфигурация Samba (вручную, не OMV)

Шара в /etc/samba/smb.conf, правится вручную: плагин openmediavault-samba НЕ установлен, omv-salt deploy этот файл не перезаписывает. В config.xml остался инертный остаток extraoptions (fruit:time machine max size = 0) — не применяется, не трогать. Порядок правки: scp-копия локально → правка → заливка → sudo testparm -s → sudo systemctl restart smbd.

[TimeMachine]
  path = /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/timemachine
  browseable = yes
  read only = no
  valid users = timemachine
  vfs objects = fruit streams_xattr
  fruit:time machine = yes
  fruit:time machine max size = 800000000000

Квота 800 ГБ (800000000000 байт, macOS видит 745 Gi) — установлена 2026-09-24. При заполнении квоты TM удаляет старые снапшоты. Бэкапы конфига: /etc/samba/smb.conf.bak-20260922, /etc/samba/smb.conf.bak-20260924.

Проверка доступа

mkdir -p /tmp/tm-test
mount_smbfs //timemachine:'timemachine'@kraken/TimeMachine /tmp/tm-test
ls /tmp/tm-test          # должен показать mbp-black.sparsebundle
umount /tmp/tm-test

Диагностика: почему бэкап не завершается

Просмотр логов backupd

backupd пишет логи в subsystem com.apple.TimeMachine. Ключевые команды:

# Все ошибки за последние N часов
log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 24h | grep -iE '(error|fail|cannot|could not|timeout|disconnect|BACKUP|thinning)'

# Прогресс копирования
log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 24h | grep "CopyProgress"

# Когда бэкап завершился/упал
log show --predicate 'subsystem == "com.apple.TimeMachine"' --info --last 24h | grep -E "backup completed|backup failed|BACKUP_FAILED|BackupFinishing|Finished backup|BackupCancelled"

Текущий статус

tmutil status
# BackupPhase может быть:
# - MountingDiskImage — монтирует sparsebundle (может висеть, если бандл повреждён)
# - PreparingSourceVolumes — собирает список изменений (файлы eventDB)
# - Copying — копирует файлы
# - ThinningPostCopy — удаляет старые бэкапы

Известные причины сбоев

  1. BACKUP_FAILED_DISCONNECTED_NETWORK (26) / BACKUP_FAILED_DISCONNECTED_DISK_IMAGE (70)

    • SMB-шара отвалилась во время бэкапа. Причины: WG туннель перезагрузился, таймаут на SMB, проблемы с сетью.
    • Симптом: Failed to set checkpoint marker — No such file or directory, потом ошибка DISCONNECTED
    • Косвенно: внутри sparsebundle остаются .interrupted папки. На 2026-07-01 их было 43 штуки.
  2. BACKUP_FAILED_NO_SPACE_FOR_LOCAL_SNAPSHOT (50)

    • Не хватает места на локальном диске Mac (/System/Volumes/Data) для локального снапшота.
    • Лечится: освободить место на локальном SSD, или удалить старые локальные снапшоты:
      tmutil deletelocalsnapshots /
      
  3. macOS Tahoe 26 (26.5.1) — SMB signing/encryption

    • Начиная с macOS 26 (Tahoe), Apple ужесточила требования к SMB signing.
    • OMV Samba может не справляться, особенно через WireGuard.
    • Если бэкап постоянно срывается с DISCONNECTED, попробовать:
      sudo tee /etc/nsmb.conf << 'EOF'
      [default]
      signing_required=yes
      streams=yes
      soft=yes
      dir_cache_max_cnt=0
      protocol_vers_map=6
      mc_prefer_wired=yes
      EOF
      
    • Источник: GitHub Gist — macOS Tahoe SMB Backup Fix

~43 .interrupted папок — не причина, а следствие*

backupd выводит Expected SnapshotInProgressContainer metadata type but found APFSBackup для каждой прерванной сессии. Это не ошибка — он корректно обрабатывает interrupted-папки и пытается их "апгрейднуть". Проблема не в них, а в том что бэкап постоянно прерывается по DISCONNECTED.

Перевыбрать destination на Mac

sudo tmutil setdestination -p smb://timemachine@kraken/TimeMachine

Связанные заметки

Важно: связка WireGuard + SMB

Когда mbp-black не дома (IP не 192.168.1.x), kraken резолвится через VPS dnsmasq в 10.99.1.2 (WG адрес). SMB работает через туннель, но может быть медленнее.

Проверка доступа через WG с mbp-black:

smbutil view //timemachine@kraken

Если дома — лучше через LAN (smb://192.168.1.14/TimeMachine), быстрее.

Plan: квота TM 800 ГБ (2026-09-24)

Состояние: квота ОТКЛЮЧЕНА (закомментирована 2026-09-22), macOS видит весь диск 1.8 ТБ. Новый полный бэкап 470 ГБ завершён 2026-09-24, на диске свободно 757 ГБ.

  1. Бэкап /etc/samba/smb.conf → smb.conf.bak-20260924 (правка через локальную копию, не sed по SSH)
  2. Строка 48: раскомментировать, значение 800000000000 (800 ГБ)
  3. testparm -s — синтаксис + эффективный конфиг
  4. systemctl restart smbd
  5. Проверка с Mac: mount → df (ожидание ~800 ГБ)
  6. Обновить доки: time-machine.md, openmediavault-rpi5.md

Примечание: плагин openmediavault-samba НЕ установлен — smb.conf управляется вручную. В config.xml остался инертный остаток extraoptions (max size = 0) — не применяется, не трогаем.

✅ Выполнено 2026-09-24. testparm ок, smbd active, проверка с Mac (mount + df): 745Gi total / 470Gi used / 275Gi avail — квота 800 ГБ видна. Раздел «Конфигурация» переписан под реальное состояние.

History

  • 2026-09-24: квота fruit:time machine max size = 800000000000 (800 ГБ, macOS видит 745 Gi). 2026-09-22 при чистке диска старый sparsebundle (2.2 ТБ) был удалён и квота 3 ТБ закомментирована — macOS видел весь диск 1.8 ТБ без потолка. Новый бандл (пересоздан 2026-09-22) — 470 ГБ; последняя проверенная сессия 2026-09-24 13:20 — инкремент 1.73 ГБ, Successfully completed. Правка: scp-копия → patch → заливка, бэкап smb.conf.bak-20260924. Уточнено, что smb.conf управляется вручную (раздел «Конфигурация» переписан).
  • До 2026-06-02: использовался Docker-контейнер mbentley/timemachine:smb. Контейнер снесён, Samba перенесена на хост OMV из-за проблем с persisting паролей (tdbsam не сохранялся, ntlm auth = no ломал backupd при reconnect).
  • 2026-07-01: диагностика причин срыва бэкапов на mbp-black (26.5.1, WG туннель).
    • backupd не виснет — реально копирует, но медленно через WG.
    • Найдены ошибки в логах:
      • BACKUP_FAILED_DISCONNECTED_NETWORK (26) в 15:21 — SMB отвалился. Симптом: Failed to set checkpoint marker — No such file or directory.
      • После перезапуска: BACKUP_FAILED_NO_SPACE_FOR_LOCAL_SNAPSHOT (50) — не хватило места для локального снапшота.
    • Внутри бандла ~43 .interrupted папок — следствие прерванных сессий, не причина.
    • Добавлен раздел "Диагностика: почему бэкап не завершается" с командами просмотра логов и известными причинами сбоев.
    • Добавлен референс на GitHub Gist по macOS Tahoe SMB signing fix.
    • Проблема: пароль timemachine не проходит при подключении через WireGuard (mbp-black вне дома, IP 10.120.1.143, Kraken резолвится в WG 10.99.1.2). mount_smbfs и smbutil выдают Authentication error.
    • Проверено на Kraken: smbd слушает на 0.0.0.0:445, TCP/445 через WG открыт, smbstatus показывает активных сессий 0. Samba конфигурация: disable netbios = yes, log level = 0 (логи в /var/log/samba/log.smbd пустые — запросы аутентификации даже не доходят до smbd, значит проблема на клиентской стороне).
    • Диагностика не завершена — причина Authentication error не выяснена.
    • Доки обновлены: убрано упоминание TrueNAS, прописан прямой пароль timemachine в credentials в обоих документах (time-machine.md и openmediavault-rpi5.md).