Vůbec jsem nerozvíjel myšlenky zálohování na externí flashku či HDD. Jelikož nám doma na strojích běží Linux, jedním z mých prvních řešení správy dat bylo sestavení pole RAID. Jako první řešení to bylo zajímavé, ale v čase se začala ukazovat různá „ale“, která vedla až k opuštění tohoto přístupu.
Trocha historie a osobních poznatků
Domácí NAS s RAID jsem provozoval od roku 2013 až do roku 2020. Vždy softwarový RAID pomocí mdadm. Třikrát jsem řešil, že mi došlo místo. Když mělo pole jen 500 GB, nebyl problém sehnat disk, přesunout data, postavit větší 4TB pole (3×2TB RAID5) a data přesunout. Pak mi došlo místo i v tomto případě.
Koupil jsem další 2TB disk a chtěl udělat RAID5 (4×2TB tj. 6TB). Našel jsem návod, jak zvětšit pole bez nutnosti jej rozbít. Pro jistotu jsem si zapůjčil externí disk, vše na něj zazálohoval. Stáhl jsem VirtualBox a v něm to všechno vyzkoušel. Tvářilo se to naprosto parádně, ale praxe pak ukázala, že s reálnými disky je to horší.
Doba přestavění pole se odhadla na dva roky. Ani po celém dalším dni se čas nezměnil. Vypnul jsem to a udělal vše starým funkčním způsobem. Už v tuhle chvíli se začaly objevovat otázky:
- Co budu dělat, až mi dojde i tady místo?
- To zase budu muset koupit jen 2TB disk? To už bude pátý a víc jich deska nepojme.
- Kde seženu 6TB disk na půjčení?
- Koupit nové 3TB či 4TB disky po čtyřech kusech nebo vzít méně větších? Na to jsem skrblík. Dokud jsou funkční původní disky, není důvod kupovat novou sadu disků a staré nechat ležet bez užitku v šuplíku.
- Nakoupit disky s naddimenzovanou kapacitou? Ani to se mi nelíbilo. Nákup řekněme třech 8TB disků, celková kapacita pro RAID5 16TB. Když nárůst objemu dat ročně je v naší domácnosti cca 1 TB. Potíží je, zda budou funkční do doby, než je zvládneme plně využít?
- Co třeba začít disky šifrovat?
- Co když doje k fatálnější havárii, kdy odejde více než jeden disk?
- Jak konečně pořádně zálohovat?
Množství těchto neznámých mě dále jen utvrzovalo v nutnosti porozhlížet se po dalších vylepšeních či po jiných alternativních řešeních.
Za těch pár let mi naštěstí neklekl ani jeden disk. RAID se párkrát degradoval a označil vadný disk. Potom, co jsem disk odebral z RAIDu a spustil na něm diagnostiku, která žádnou vadu neprokázala, jsem disk vrátil do RAIDu a šlape dál.
V čase se mi ukázalo, co je dobré a co špatné na provozu vlastního stroje s RAIDem. Musím říct, že to nic jednoduchého nebylo. Chápu vznik komerčních NAS, které se vyloženě zaměřily na zpříjemnění práce s disky, monitoringem a UI. Nicméně ani uživatelsky příjemnější komerční NAS nedává odpovědi na otázky, které jsem výše popsal jako problematické pro další používání.
Domácí hardware
Můj první NAS s RAID běžel na Intelu Q6600 2,4GHz, 8 GB RAM DDR2. V roce 2019 mi brácha povídá: „Hele, koupil jsem nový počítač.“ Tak jsem si ho prohlédl a mezi řečí se ptám, co udělá s tím původním? „Asi ho vyhodím.“ Hlavou mi proběhlo: Super, mám „novou“ mašinu.
Staronový počítač obsahoval AMD FX6350 Six-Core, 16GB DDR3 a nově také USB 3.0. Celkem slušný výkon na domácí NAS. Dcera ho zároveň používá na distanční výuku. Dále tento stroj budu zmiňovat jako AMD.
Kam směřovat po opuštění RAID?
Další směr, kterým jsem se původně chtěl ubírat, bylo zaplatit si za cloud. Jak jsem ale hledal odpovědi na otázky, které jsem řešil u RAIDu, dospěl jsem k závěru, že to není řešení pro mě… Proč jsem k tomu dospěl:
Cloud by mi poskytl hotové a kvalitní řešení, nicméně za paušál. S objemem navíc roste adekvátně cena. Co když to v čase nebudu chtít akceptovat? Kam s daty? Cloud přináší bezstarostné řešení, avšak to pro mě nebylo rozhodující kritérium. Starat se o vlastní řešení mě lákalo.
Jednoho krásného dne mi kolega říká: „Už jsi vyzkoušel Syncthing?“ „Ne co to je?“ „Software na nepřetržitou synchronizaci a sdílení, podobný P2P sdílení jen v rámci vlastní skupiny.“ Díky, Tome! Vstoupil mi do života tenhle software napsaný v Go, který by mohl být odpovědí na všechny moje otázky.
Doplnění domácího hardware o Raspberry Pi
Syncthing vyžaduje alespoň dvě zařízení. Použil jsem tedy zmíněný stroj s AMD a Raspberry Pi 4 se 4 GB RAM, které jsem už měl doma a stejně jede non-stop. Provozuji na něm i další služby, vypíšu je pro zajímavost:
- ovládání žaluzií
- k tomu je potřeba shromažďovat data o pohybu slunce, počasí, informace o rozbřesku a stmívání
- podle zapnuté televize a pokud sluníčko svítí do oken se stáhnou žaluzie v obýváku a jinde
- kontrola zapnutých počítačů u dětí a vedení historie doby běhu
- ovládání garážových vrat (web server, TLS, HTTP 2.0, API, androidí aplikace, GPIO)
- vypínání Wi-Fi na noc, v domě mám dvě AP, jeden D-Link a druhý TP-Link a mám nasimulované klikání v jejich GUI
- vypínání centrálního switche, celá síť je přes noc mrtvá, Raspberry vidí do internetu stále
- vypínání AMD na noc a pokud ho dcera do 24 hodin nezapne, tak ho spustí na dvě hodiny a pak ho zase vypne
- stahování souborů a poslání emailu, že je soubor stažen
- na pracovním počítači se přepínám na VPN, takže se hodí stahování na jiném stroji
- proxy pro aktualizaci linuxových mašin, služba ng-apt-cacher
- automatizované zálohy konfigurací a databází
- DLNA serviio server, na ten mě zase přivedl kolega Jakub
- Samba server v readonly režimu, pro Kodi v Android TV
- ovládání žárovky podle pohybu slunce, aby bylo světlo bílé a oranžové ve správné časy
- ownCloud, který jsem ale několik měsíců nepoužil
Z pozorování bych řekl, že Syncthing by fungoval i na 1GB verzi, ale třeba DLNA už potřebuje 2 GB paměti.
Syncthing
Instalace byla jednoduchá, nastavení relativně taky – propojil jsem Raspberry a AMD. Používání nového nástroje správy dat mi dalo odpovědi na otázky, které mně provázely při provozu NAS s RAIDem.
Co budu dělat až mi dojde i tady místo?
RAID mně nutil dokoupit disk s konkrétní velikostí, popřípadě vyměnit všechny za větší. Toto řešení mi umožňuje dokoupit disk jakékoliv velikosti nebo vyměnit stávající disk za větší.
To zase budu muset koupit jen 2TB disk?
Tohle taky končí, kapacitu nového disku si nyní můžu zvolit bez ohledu na kapacitu stávajících disků. Ty čtyři 2TB disky se dál používají na AMD a jsou připojené pomocí JBOD.
Kde seženu 6TB disk na půjčení?
Tohle vlastně není potřeba řešit, vždy jedno zařízení jede, takže samotná operace zvětšení kapacity je naprosto v pohodě.
Koupit nové 3TB, 4TB disky nebo větší?
Tady mě to pohladilo po duši, není to potřeba.
Nakoupit disky s naddimenzovanou kapacitou?
Náklad byl jen jeden 12TB disk a dokovací stanice. U původního pole bych musel koupit tři 8TB disky.
Co třeba začít disky šifrovat?
Ne, že by to s RAID polem nešlo, ale od teď už jsou disky na obou zařízeních šifrované, Raspberry si s tím poradilo, daní je trošku snížená čtecí i zapisovací rychlosti. Konkrétně nyní zvládá čtení 35 MB/s a zápis 28 MB/s.
Co když doje k fatálnější havárii, kdy odejde více než jeden disk?
Pokud by tedy jedno zařízení havarovalo, zase to obnovím z druhého. Každé zařízení je za jiným jističem a v jiné části domu. Snad nevyhoří celý zděný dům do základů.
Jak konečně pořádně zálohovat?
Se dvěma nezávislými zařízeními a funkční nepřetržitou synchronizací je i tato otázka zodpovězena.
Doplnění hardware pro Raspberry
Začal jsem nákupem 12TB disku, trošku jsem ho předimenzoval, protože jsem věděl že budu chtít soubory verzovat. Dokovací stanici jsem chtěl na dva disky, protože druhý disk bude na stahování. Většina dokovacích stanic má napsáno, že zvládne nejvýše 8TB disk, ale v komentářích pod Evolveo Dion 2 odpovídala podpora, že testovali až 14TB disky.
Má jednu vadu na kráse – vypíná se pomocí mikrospínače. Když mi vypnou proud a zas nahodí, tak mi nenajede Raspberry, protože disky jsou vypnuté.
Instalace Syncthingu
Pokud to jde, instaluji pomocí repozitářů. Z přehledu platforem vyberu instalaci pro Raspberry Pi OS založený na Debianu.
echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list curl -s https://syncthing.net/release-key.txt | sudo apt-key add - sudo apt-get update sudo apt-get install syncthing
Tím se Syncthing nainstaloval, ale ještě chceme, aby nám startoval po spuštění systému. V dokumentaci je několik možností. Já jsem zvolil tu pomocí nástroje supervisor, protože jej používám i k jiným věcem.
sudo apt-get install supervisor
Vytvoříme soubor /etc/supervisor/conf.d/syncthing.conf
, aby supervisor pochopil, co má se Syncthingem dělat.
[program:syncthing] autorestart = True directory = /home/<USERNAME>/ user = <USERNAME> command = /usr/bin/syncthing -no-browser -home="/home/<USERNAME>/.config/syncthing" environment = STNORESTART="1", HOME="/home/<USERNAME>"
Teď jen načíst konfiguraci a nastartovat.
supervisorctl reload supervisorctl start syncthing
Ověříme, zda všechno jede.
supervisorctl status syncthing
Měli bychom vidět něco jako:
syncthing RUNNING pid 765
Syncthing v akci
Syncthing nám jede jako démon s webovým UI na adrese localhost:8384. Po spuštění mi ihned doporučil zaheslovat přístupy do tohoto GUI. Každé zařízení, na kterém syncthing běží, je definováno identifikátorem, připomínajícím složitější product key pro Windows. Pokud je na síti další instance Syncthngu, nabídne mi ji k přidání a protistrana to musí schválit. Tím jsou zařízení spárována.
Požadavek na schválení protistraně nepřijde okamžitě, má to lehké zpoždění, řekněme v řádu sekund. Pro telefony je připraven QR kód pro načtení klíče. Párování by tedy bylo hotové, ale zatím se nic nepřenáší.
Druhým krokem je založit a nasdílet adresáře. Sdílet je možné povoleným zařízením a protistrana to v základním nastavení opět musí schválit. Je možnost, aby se adresáře na určité zařízení přidávaly automaticky.
Další vlastnost Syncthingu je možnost verzovat soubory nebo se k nim chovat jako k vyhozeným do koše. Celkem je jedno, jak si to nastavíte, to nejpodstatnější je, aby to bylo zapnuto alespoň na dvou zařízeních a na stejných adresářích. Na Raspberry se mi uchovává pět posledních verzí (nastavení: jednoduchá správa verzí souborů) a na AMD je zapnuto zachování jedné předchozí verze (nastavení: jako koš). Získáme tím základní ochranu proti ransomware. To je něco, co s jedním přístupem snadno neuděláte.
Popíšu scénář, proti kterému je to odolné. Útočník se mi dostane na Raspberry, ač je z internetu vidět velmi omezeně. Spustí mi na něm software na šifrování souborů. Tím se vytváří nové soubory a začnou se synchronizovat na AMD, kde Syncthing uloží předchozí verzi a nahraje novou kopii. Původní kopie je možné obnovit, ale pravděpodobně dřív dojde místo, takže synchronizace se sama zastaví. Nehledě na to, že šifrování na Raspberry bude velmi pomalé. Tím budu mít čas a prostor zjistit, co se stalo.
V tuto chvíli jsem spokojeným uživatelem Syncthingu a míra mého uspokojení s tímto řešením mně přivedla až k nápadu se o to podělit. Doufám, že ti, co se rozhodnou vyzkoušet tuto formu zálohování dat, budou stejně spokojeni jako já.