Home Assistant seriál s Jakubem: Díl 3: SSD disk a MariaDB
Úvod
V dnešním díle si vysvětlíme, proč bychom neměli HA dlouhodobě provozovat na SD kartě a ukážeme si, jak velmi jednoduše přesunout náš stávající server na SSD disk. Nakonec vyměníme i databázi z SQLite za MariaDB, která nám poskytne vyšší spolehlivost a rychlost. Jedinou nevýhodou je, že přijdeme o všechna stávající data ze senzorů.
Proč je tedy lepší SSD disk než SD karta?
HA zapisuje velké množství malých dat za vteřinu a čím více máme zařízení, tím je těchto dat více. Většina SD karet není uzpůsobená na neustálé přepisování a zapisování tisíců hodnot, takže dříve nebo později dojde k jejímu ‚‚upsání‘‘ a následnému selhání. V lepším případě máme zálohu, kartu vyměníme a HA obnovíme ze zálohy, v tom horším přijdeme o všechna data a musíme začít znovu od začátku.
Mnohem lepší je použít SSD disk (postačí i ten nejlevnější), u kterého máme mnohem větší jistotu, že nám nějakou dobu vydrží. Co se týče kapacity, pro většinu uživatelů naprosto stačí 128 GB. Já už všude používám NVMe disky a v šuplíku se mi válel Samsung EVO 850 (500GB), tak jsem k němu za pár stovek dokoupil rámeček (Axagon) pro redukci SATA na USB 3.0 a bylo vystaráno.
Někteří mohou namítat, že připojením disku do USB se výrazně sníží jeho rychlost. To je naprostá pravda, ale pro účely HA je to stále více než dostatečné.
Pro zajímavost jsem si udělal benchmark přímo v HA a níže můžete vidět výsledek:
Ale dost bylo keců, jdeme na to!
Pro převod budeme potřebovat:
- náhradní micro SD kartu
- SSD disk
- rámeček nebo kabel SATA->USB 3.0
- nainstalovaný HA z prvního dílu
Postup:
- V první řadě si uděláme plnou zálohu našeho HA. Přejdeme tedy do Settings -> System -> Backups -> Create Backup, vyplníme název, jak se naše záloha má jmenovat, a ujistíme se, že máme vybráno „Full Backup“.
- Tento proces bude pár minut trvat. Po vytvoření zálohy na ni klikneme, v pravém dolním rohu klepneme na tři tečky a zvolíme „Download Backup“.
- Nyní můžeme vypnout našeho HA (Developer Tools -> Restart -> Advanced options -> Shut down system) a vyjmout SD kartu.
- Připojíme si SSD disk k PC nebo notebooku a stáhneme Raspberry Pi Imager. Postupovat budeme úplně stejně jako při instalaci HA na SD kartu, vizte první článek.
- Nyní změníme bootloader našeho Raspberry Pi a nastavíme bootování z SSD disku místo stávající SD karty. Vložíme náhradní SD kartu do PC nebo notebooku, spustíme Raspberry Pi Imager a v druhém kroku (Choose OS) vybereme Misc utility images -> Bootloader -> USB Boot. V dalším kroku vybereme náš SSD disk a klikneme na Write. Vyjmeme SD kartu, vložíme ji do vypnutého Raspberry Pi a zapojíme napájení, po cca 10 sekundách by měla blikat zelená LEDka, pak můžeme SD kartu vyjmout.
- Vypneme Raspberry Pi, připojíme SSD disk a ujistíme se, že máme zapojený i ethernetový kabel. Raspberry Pi opět zapneme a otevřeme adresu homeassistant:8123. Měla by se nám objevit stránka, viz. bod 5 v prvním článku.
- Po úspěšné prvotní konfiguraci pokračujeme od bodu 5 až k bodu 10, ale nemusíme si moc lámat hlavu s tím co vyplníme, protože vzápětí obnovíme naši zálohu a všechna tato nastavení budou přepsána.
- V posledním kroku přejdeme do Settings -> System -> Backups, klepneme na tři tečky v pravém horním rohu a vybereme Upload backup a pak vybereme Restore everything. Tento proces může trvat poměrně dlouho, ale na jeho konci bychom měli mít stále náš původní HA, jen na krásném rychlém SSD disku :).
Instalace MariaDB
- Nejprve si nainstalujeme addon MariaDB, přejdeme tedy do Settings -> Addons -> ADD-ON STORE, vyhledáme MariaDB a klepneme na Install.
- Přesuneme se do záložky Configuration a upravíme položku password na bezpečné heslo (ne password12345 :)) a klepneme na Save.
- Vrátíme se do záložky Info, zapneme Watchdog a klepneme na Start. Chvilku počkáme a zkontrolujeme záložku Log, zda se addon v pořádku spustil.
- Nyní potřebujeme přidat dvě řádky do configuration.yaml. V levém menu vybereme File editor a v levém horním rohu vybereme ikonu složky, najdeme soubor configuration.yaml a otevřeme ho a vložíme následující kód. Nezapomeňte přepsat heslo na Vámi zvolené, nachází se za homeassistant:
recorder:
db_url: mysql://homeassistant:password12345@core-mariadb/homeassistant?charset=utf8mb4
- Konfiguraci uložíme klepnutím na červenou ikonku vpravo nahoře a restartujeme HA (Developer Tools -> Restart -> Restart Home Assistant).
- Pokud se vše povedlo, měla by nám zmizet historie ze všech senzorů a entit a HA by měl nově běžet na MariaDB. Pokud vidíme historii delší než 10 minut, něco se nepovedlo. Zřejmě jste například nepřepsali heslo v konfiguračním souboru nebo vynechali nějaký krok.
- Když jsme přesvědčeni, že vše funguje a jsme s výsledkem spokojeni, můžeme odstranit původní databázový soubor. Opět otevřeme File editor a klepneme na symbol složky v levém horním rohu. Najdeme soubor home-assistant_v2.db, klepneme na tři tečky vedle souboru a vybereme Delete.
Závěr
V dnešním díle jsme podstatně zrychlili náš HA server a pravděpodobně předešli problémům do budoucna. Osobně nepociťuji velkou změnu v době startu HA, ale UI (uživatelské rozhraní) je podstatně rychlejší a jelikož se občas vrtám i přímo v databázi, je pro mě MariaDB mnohem přívětivějším prostředím.
V příštím díle se už konečně vrhneme na nějaká zařízení a přidáme si je do HA. Nechte se překvapit, o co se bude jednat.
Rychlosti zdar!
Používám HA už nějakou chvíli, ale tyhle hezky rozepsané návody a tipy se vždy hodí – opakování je matka moudrosti! Pokračujte dále 😍
Děkujeme za slova podpory a Vaši přízeň. Budeme pokračovat, jak nejlépe umíme. S přáním pěkného dne a spousty dokončených projektů přeje tým RPishop.cz.
Zdravím. Mám „hokej“ ve Vašem bodu 5:
Nyní změníme bootloader našeho Raspberry Pi a nastavíme bootování z SSD disku místo stávající SD karty. Vložíme náhradní SD kartu do PC nebo notebooku, spustíme Raspberry Pi Imager a v druhém kroku (Choose OS) vybereme Misc utility images -> Bootloader -> USB Boot. V dalším kroku vybereme náš SSD disk a klikneme na Write. Vyjmeme SD kartu, vložíme ji do vypnutého Raspberry Pi a zapojíme napájení, po cca 10 sekundách by měla blikat zelená LEDka, pak můžeme SD kartu vyjmout.
Když zapíši na SSD disk, tak SD karta zůstane prázdné – NE? A NEnabootuje z ní RPi 5? Něco nechápu 🙁
Omlouvám se, jsem začátečník …
Josef
Zdravíčko Josefe, bod. 4 řeší instalaci systému na SSD. Bod 5. řeší update bootloader. To je potřeba udělat aby RPI dokázalo bootovat z USB media. Zde se opravdu jedná o instalaci na microSD. Tento krok není nutný pro nově koupené RPI, pouze pro RPI starší jednoho roku.
Zdravím. Takže připojím podle bodu SSD k PC a nainstaluji SD kartu podle bodu 4. , tzn. vyberu vše pro SD card? Proč jej tedy připojuji (ten SSD)?
Proč v bodu 5. vkládám čistou SD card ale zapisuji JEN na SSD (vyberu SSD a Write, podle popisu)? Na SD card NE ? Ta přeci zůstane čistá, nezapsaný ani Byte?
Omlouvám se, ale chápu, že pro Vás je to samozřejmé, ale pro začátečníka nepochopitelné …
Jenom doplnění.
Podle bodu4. – resp. článek 1. – zapíšu na SD card a to mi funguje. Spuštění z SD card.