W przypadku lokalnego repozytorium NAS zachowaj domyślny rozmiar 16 MiB w restic, chyba że pomiary wykażą, że narzut związany z plikami repozytorium lub działanie dysku HDD wymagające wyszukiwania ogranicza przepustowość. Jeśli NAS przechowuje wieloterabajtowe repozytorium na dyskach obrotowych, wartości 32 MiB lub 64 MiB są rozsądnymi opcjami do przetestowania przed rozważeniem jeszcze większych pakietów.
Rozmiar pakietu nie jest tym samym co rozmiar fragmentu deduplikacji w restic. Restic najpierw dzieli dane plików na bloby zdefiniowane przez zawartość, a następnie grupuje bloby w pliki pakietów. Zmiana docelowego rozmiaru pakietu zmienia sposób łączenia tych blobów w repozytorium; nie zmienia wielomianu chunkera repozytorium ani skrótów zawartości.
Zacznij od wartości domyślnej 16 MiB
Obecne wskazówki dotyczące strojenia restic podają, że domyślny docelowy rozmiar pakietu wynosi 16 MiB. Zwracają też uwagę, że większe pliki pakietów mogą zmniejszyć liczbę plików repozytorium i poprawić wydajność kopii zapasowej w przypadku niektórych repozytoriów przechowywanych na lokalnych dyskach HDD.
restic version
restic -r /mnt/nas/restic-repo snapshots
restic -r /mnt/nas/restic-repo stats --mode raw-data
Przed strojeniem zanotuj wersję restic, rozmiar repozytorium, liczbę migawek, typ pamięci masowej i bieżący czas trwania kopii zapasowej. Jeśli repozytorium już kończy działanie w wyznaczonym oknie kopii zapasowej, większy rozmiar pakietów może zwiększyć złożoność bez zapewnienia wymiernych korzyści.
Zrozum, co faktycznie zmienia rozmiar pakietu
opis formatu repozytorium restic wyjaśnia, że zawartość plików jest dzielona na bloby zdefiniowane przez zawartość, a następnie te bloby są grupowane w pliki pakietów.
Pliki źródłowe
|
dzielenie na fragmenty zdefiniowane przez zawartość
|
zdeduplikowane bloby
|
grupowanie pakietów
|
pliki danych repozytorium
Większy docelowy rozmiar pakietu zazwyczaj oznacza mniej większych plików repozytorium. Może to pomóc dyskowi obrotowemu poświęcać mniej czasu na metadane i operacje otwierania plików. Nie sprawia to jednak, że identyczna zawartość plików będzie lepiej deduplikowana.
Sprawdź, czy NAS rzeczywiście ogranicza rozmiar pakietów
Przed strojeniem obserwuj dysk repozytorium podczas normalnej kopii przyrostowej. Lokalne repozytorium na dysku HDD, które wykonuje wiele krótkich operacji wyszukiwania i operacji na metadanych, gdy przepustowość pozostaje niska, jest lepszym kandydatem niż repozytorium na dysku SSD, które już zapisuje sekwencyjnie z dużą szybkością.
iostat -xz 2
Szukaj stałego wysokiego wykorzystania dysku, podwyższonych czasów oczekiwania oraz niskiej przepustowości w porównaniu z dużym zapisem sekwencyjnym. Sprawdź również użycie procesora i szybkość odczytu źródła. Jeśli wąskim gardłem jest kompresja, haszowanie, wejścia-wyjścia źródła lub sieć, zwiększenie rozmiaru pakietu tego nie naprawi.
Porównaj wartości 16, 32 i 64 MiB na porównywalnych repozytoriach
Najbardziej miarodajne porównanie wykorzystuje tymczasowe repozytoria utworzone na potrzeby testu. Użyj tego samego zbioru danych źródłowych, woluminu NAS, wersji restic oraz liczby połączeń z backendem.
restic --pack-size 16 -r /mnt/nas/test-restic-16 init
restic --pack-size 16 -r /mnt/nas/test-restic-16 backup /srv/testdata
restic --pack-size 32 -r /mnt/nas/test-restic-32 init
restic --pack-size 32 -r /mnt/nas/test-restic-32 backup /srv/testdata
restic --pack-size 64 -r /mnt/nas/test-restic-64 init
restic --pack-size 64 -r /mnt/nas/test-restic-64 backup /srv/testdata
Zmierz czas trwania, przepustowość dysku repozytorium, wykorzystanie miejsca tymczasowego oraz wynikową liczbę plików danych. W miarę możliwości powtórz testy, aby efekty pamięci podręcznej stron nie zafałszowały wyniku.
Uwzględnij miejsce tymczasowe przed zwiększeniem rozmiaru pakietu
Restic określa wymagane miejsce tymczasowe w przybliżeniu następująco:
rozmiar pakietu × (liczba połączeń z backendem + 1)
Przy pięciu połączeniach z backendem i rozmiarze docelowym 64 MiB oznacza to co najmniej 384 MiB wolnego miejsca tymczasowego. Lokalny backend domyślnie korzysta obecnie z mniejszej liczby połączeń niż większość zdalnych backendów, ale ta sama zasada nadal obowiązuje.
df -h "${TMPDIR:-/tmp}"
export TMPDIR=/mnt/fast-temp/restic
mkdir -p "$TMPDIR"
Większe pakiety tymczasowe mogą również zwiększyć zużycie pamięci i spowodować, że więcej tymczasowych zapisów trafi na dysk SSD zamiast pozostać w pamięci podręcznej.
Używaj tego samego ustawienia rozmiaru pakietu w poleceniach zapisujących dane w repozytorium
Restic informuje, że ustawienie rozmiaru pakietu należy określać przy każdym poleceniu, które modyfikuje repozytorium. Użyj jednej zmiennej środowiskowej dla całego zadania:
export RESTIC_REPOSITORY=/mnt/nas/restic-repo
export RESTIC_PACK_SIZE=64
export RESTIC_PASSWORD_FILE=/root/.config/restic/password
restic backup /srv/data
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6
restic prune
Zmiana rozmiaru pakietów nie zmienia sposobu dzielenia danych na fragmenty na potrzeby deduplikacji, ale może pozostawić pakiety o różnych rozmiarach. Spójność ułatwia interpretację przyszłej konserwacji i porównań wydajności.
Nie oczekuj, że istniejące pakiety automatycznie zmienią rozmiar
Nowe ustawienie rozmiaru pakietu ma wpływ na nowo utworzone lub przepakowane dane. Istniejące pliki pakietów nie są przepisywane tylko dlatego, że RESTIC_PACK_SIZE zmiany.
Jeśli celowo chcesz, aby prune przepakował mniejsze istniejące pakiety, bieżąca wersja restic udostępnia opcję --repack-smaller-than. Najpierw zapoznaj się z opcjami przepakowywania podczas prune.
restic prune --dry-run --repack-smaller-than 32M
Zacznij od symulacji. Nie wymuszaj pełnego przepakowania wyłącznie po to, aby każdy plik pakietu wyglądał jednolicie.
Weryfikacja integralności po dostrojeniu ustawień
restic check
restic check --read-data-subset=5%
Wybierz harmonogram weryfikacji odpowiedni do rozmiaru repozytorium. Wskazówki restic dotyczące rozwiązywania problemów z repozytorium traktują kontrole integralności jako podstawę diagnozowania uszkodzeń repozytorium.
W szerszym projekcie kopii zapasowych połącz lokalne repozytorium z inną niezależną kopią. Strategia tworzenia kopii zapasowych 3-2-1 w ZimaOS wyjaśnia, dlaczego lokalna redundancja i osobny cel rozwiązują różne scenariusze awarii.
Zastosuj tę zasadę podejmowania decyzji
- Pozostań przy 16 MiB, jeśli kopie zapasowe już mieszczą się w wyznaczonym oknie lub wąskie gardło znajduje się gdzie indziej.
- Przetestuj 32 MiB, jeśli duże repozytorium na dysku HDD spędza dużo czasu na metadanych i operacjach na małych plikach.
- Przetestuj 64 MiB, jeśli 32 MiB przynosi poprawę, a zużycie miejsca tymczasowego pozostaje na komfortowym poziomie.
- Przestań zwiększać rozmiar, gdy korzyści się wypłaszczają lub rośnie tymczasowe użycie operacji wejścia-wyjścia.
Najlepszy rozmiar pakietu to najmniejsza wartość, która mierzalnie zmniejsza narzut repozytorium, nie powodując nowego wąskiego gardła.
Często zadawane pytania dotyczące rozmiaru pakietów restic
Czy większy rozmiar pakietu poprawia deduplikację w restic?
Nie. Deduplikacja odbywa się na poziomie obiektów blob/bloków, zanim obiekty blob zostaną zgrupowane w pliki pakietów.
Czy zmiana rozmiaru pakietu spowoduje przepisanie starych plików pakietów?
Nie. Istniejące pakiety pozostają bez zmian, dopóki zwykłe operacje czyszczenia lub przepakowywania ich nie przepiszą.
Od jakiego rozmiaru pakietu zacząć na lokalnym serwerze NAS z dyskiem HDD?
Użyj 16 MiB jako wartości bazowej, a następnie przetestuj 32 MiB i 64 MiB przy tym samym obciążeniu.
Wsparcie i wskazówki
Więcej do przeczytania

Home Assistant działa przez Wi-Fi, ale nie działa przez Ethernet ani VPN
Przetestuj każdą ścieżkę sieciową osobno, sprawdź stan interfejsów i routingu, rozróżnij bezpośrednie połączenie z adresem IP od wykrywania, a następnie napraw tylko uszkodzoną warstwę.

Jak wycofać Home Assistant z użycia, nie pozostawiając niechronionych danych
Udowodnij wymianę lub archiwizację, unieważnij każdą ścieżkę zaufania, wyczyść każde urządzenie zawierające dane i zachowaj wyłącznie udokumentowane chronione kopie zapasowe.

Czy warto używać automatycznych aktualizacji Home Assistant na serwerze domowym?
Wybierz aktualizacje ręczne, tylko z powiadomieniem lub etapowe aktualizacje automatyczne, uwzględniając wpływ na gospodarstwo domowe, ryzyko niezgodności, czas obserwacji i gotowość do przywrócenia działania.

