Home Assistant może niezawodnie korzystać z pamięci sieciowej do tworzenia kopii zapasowych, przechowywania multimediów i niektórych współdzielonych plików, ale umieszczenie aktywnego katalogu konfiguracji lub domyślnej bazy danych SQLite komponentu Recorder na SMB albo NFS wymaga znacznie bardziej wymagającej architektury. Bezpiecznym rozwiązaniem domyślnym jest lokalna pamięć trwała dla aktywnego stanu Home Assistant oraz udział sieciowy dla danych, które zyskują na zdalnej pojemności lub niezależnej kopii zapasowej.
Różnica dotyczy zachowania transakcyjnego i zależności podczas uruchamiania. Archiwum kopii zapasowej może poczekać na NAS, natomiast konfiguracja i baza danych Home Assistant mogą być potrzebne, zanim udział sieciowy zostanie zamontowany lub zacznie działać prawidłowo. Krótka awaria NAS-a nie powinna zmieniać sprawnego lokalnego kontrolera w pustą albo uszkodzoną instalację.
Oddziel udziały kopii zapasowych i multimediów od aktywnego stanu aplikacji
Zacznij od określenia, co chcesz przenieść. Archiwa kopii zapasowych i pliki multimedialne naturalnie nadają się do przechowywania na NAS-ie, ponieważ są dużymi, łatwymi do przenoszenia obiektami i nie muszą być stale otwierane do transakcyjnych zapisów przez Home Assistant Core.
Aktywny stan aplikacji jest czymś innym. Drzewo konfiguracji obejmuje dane zarządzane z poziomu interfejsu oraz inne pliki, które Home Assistant odczytuje i aktualizuje podczas normalnego działania, a komponent Recorder nieprzerwanie zapisuje stan i historię zdarzeń.
Przykład prywatnej chmury ZimaSpace oddziela odzyskiwanie Home Assistant od masowej pamięci NAS, co stanowi użyteczną architekturę w tym przypadku: pojemność sieciowa może rosnąć niezależnie, bez uzależniania każdej czynności sterującej od udziału pamięci.
SQLite wiąże się z wymaganiami dotyczącymi blokad i spójności
Domyślna baza danych komponentu Recorder w Home Assistant korzysta z SQLite. Baza ta oczekuje zachowania systemu plików, które łatwo zapewnić na lokalnej pamięci, ale które jest mniej przewidywalne w przypadku systemów plików sieciowych, ponownych połączeń i różnych sposobów montowania.
SQLite nie jest przeznaczona do działania jako sieciowy serwer baz danych, a blokowanie w sieciowych systemach plików może być zawodne lub niepełne w zależności od platformy. To sprawia, że zdalny plik SQLite wiąże się z innym ryzykiem niż samo odczytywanie multimediów przez SMB.
Jeśli potrzebujesz bazy danych na innym hoście, użyj obsługiwanej bazy danych w architekturze klient-serwer i zaakceptuj odpowiedzialność operacyjną związaną z taką zewnętrzną zależnością. Nie zakładaj, że samo przeniesienie pliku SQLite tworzy tę samą architekturę.
Czas montowania może zakłócić uruchamianie, nawet jeśli udział później działa
Udział sieciowy może nadawać się do zapisu po pełnym uruchomieniu systemu, a mimo to być niedostępny, gdy Home Assistant po raz pierwszy potrzebuje bazy danych lub konfiguracji. Tworzy to problem z kolejnością uruchamiania, którego nie wykryje późniejszy ręczny test zapisu.
Użytkownik Home Assistant, który umieścił bazę SQLite komponentu Recorder na SMB, zaobserwował pliki bazy danych o rozmiarze zero bajtów oraz uszkodzone pliki podczas uruchamiania, mimo że z hosta można było zapisywać na tym udziale. W dyskusji wskazano konkretnie na czas montowania oraz przydatność SQLite na udziale sieciowym.
Przetestuj zimny start, ponowne uruchomienie hosta, ponowne uruchomienie NAS-a oraz tymczasową awarię udziału. Architektura, która działa dopiero po ręcznym ponownym zamontowaniu NAS-a, nie jest wystarczająco niezawodna do sterowania całym domem.
Opóźnienia sieciowe mogą spowolnić historię bez zakłócania sterowania
Zdalne operacje wejścia-wyjścia bazy danych lub konfiguracji dodają opóźnienia sieciowe do małych odczytów i zapisów. Początkowo może się to objawiać wolnym działaniem wykresów historii, konserwacji bazy danych lub uruchamiania, a nie nieskutecznymi automatyzacjami.
Wdrożenie Home Assistant w Kubernetes wykazało, że SQLite przez NFS i zdalna ścieżka SQL powodowały słabą responsywność bazy danych, dlatego autor przeniósł aktywną ścieżkę bazy bliżej obciążenia Home Assistant.
Zmierz konkretny objaw. Jeśli lokalne sterowanie nadal działa szybko, a historia jest wolna, ścieżka bazy danych prawdopodobnie wpływa na funkcje historyczne, a nie na same automatyzacje fizyczne. Jeśli udział zawiera również krytyczną konfigurację, awaria może rozszerzyć problem na całą usługę.
W przypadku małego serwera wybierz lokalny stan i sieciową kopię zapasową
W przypadku większości serwerów domowych trzymaj /config i domyślną bazę SQLite na niezawodnym lokalnym dysku SSD lub innym urządzeniu pamięci trwałej. Wysyłaj kopie zapasowe na NAS, przechowuj tam multimedia i używaj udziałów sieciowych do dużych danych, które zyskują na centralnej pojemności.
Taki podział ułatwia diagnozowanie: opóźnienia lokalnej bazy danych dotyczą hosta Home Assistant, natomiast brakujący plik kopii zapasowej lub multimedialny dotyczy ścieżki NAS. Sieć pozostaje użyteczna, ale nie staje się synchroniczną zależnością dla każdego zapisu stanu.
Przenoś aktywny stan do zdalnej pamięci tylko wtedy, gdy udział, kolejność montowania, sposób obsługi blokad, opóźnienia, zachowanie podczas awarii oraz ścieżka przywracania zostały przetestowane podczas zimnego startu i tymczasowej utraty sieci.
FAQ
Czy NAS jest dobrym miejscem na kopie zapasowe Home Assistant?
Tak. NAS często jest dobrym niezależnym miejscem docelowym dla archiwów kopii zapasowych, szczególnie gdy kopia przetrwa awarię dysku systemowego Home Assistant. Jeśli NAS i host Home Assistant nadal należą do tej samej domeny awarii fizycznej, zachowaj dodatkową kopię w innym miejscu.
Czy powinienem umieścić domyślną bazę SQLite Home Assistant bezpośrednio na SMB lub NFS?
Zwykle nie. Trzymaj SQLite na lokalnej, niezawodnej pamięci, chyba że masz konkretny i przetestowany powód, aby postąpić inaczej. Jeśli baza danych musi być zdalna, obsługiwana baza klient-serwer jest czystszą architekturą niż traktowanie pliku SQLite jak zwykłego dokumentu sieciowego.
Wsparcie i wskazówki
Więcej do przeczytania

Czy podczas tworzenia kopii zapasowej Home Assistant Live należy zatrzymać usługę?
Wbudowane kopie zapasowe Home Assistant mogą działać na żywo; zwykłe kopie systemu plików powinny zatrzymać Home Assistant lub wstrzymać jego działanie, chyba że baza...

Dlaczego serwer Home Assistant nagrzewa się lub hałasuje w czasie bezczynności?
Zanim zmienisz ustawienia chłodzenia lub limity procesora, skoreluj skoki obciążenia wentylatora lub temperatury w Home Assistant z działaniem Rejestratora, kopiami zapasowymi, integracjami i współdzielonymi...

Kiedy lepiej zbudować Home Assistant od nowa zamiast go naprawiać?
Najpierw napraw najmniejszą uszkodzoną warstwę Home Assistant, następnie przywróć znany dobry stan, a odbudowę wykonuj tylko wtedy, gdy nie można ufać trwałej konfiguracji.

