neděle 21. března 2021

Raspberry Pi a filesystem na Synology NAS

Pokud chcete na Raspberry Pi provozovat nějaký software náročný na diskové operace (v mém případě squid + jeho logy), nevydrží SD karta moc dlouho kvůli velkému množství zápisů. Řešením je přesunout filesystém na síťový disk (NAS). Já mám doma starší Synology, takže jsem využil to.

Jako čistější řešení by mi přišlo využít pokročilé možnosti Synology a nastavit to přes iSCSI v kombinaci se zavaděčem BerryBOOT pro Raspberry Pi. Ale vyzkoušel jsem BerryBOOT v několika sestaveních a nepodařilo se mi iSCSI rozběhnout spolehlivě. Takže jsem přistoupil k řešení přes NFS.

Na Raspberry Pi používám oficiální systém Raspberry Pi OS Lite (tj. verzi bez GUI). Návod předpokládá, že máte rozběhnutý a nakonfigurovaný funkční systém na SD kartě, s funkčním připojením k síti, a nejlépe plně aktualizovaný. Dále používám editor nano.

Raspberry Pi stále bude potřebovat vloženou SD kartu, na které bude základní zavaděč s jádrem a ovladači sítě. Můžete však využít nějakou starší a malou (stačí velikost 256 MB).

1. Sdílená složka na NAS

Nejprve nastavte sdílenou složku na síťovém disku. V Synology DSM je to jednoduchý úkon: v Control panel vytvoříte novou sdílenou složku (Shared folder). Po proklikání průvodce k vytvoření složky (obr. 1) je potřeba nastavit NFS oprávnění (obr. 2). Doporučuji omezit přístup podle IP adresy.

Obrázek 1: průvodce přidáním sdílené složky

Obrázek 2: nastavení NFS oprávnění

Při úpravě NFS oprávnění vidíte vlevo dole i cestu, pod kterou můžete složku připojit v Linuxu.

2. Zkopírování systému na NAS

Po vytvoření sdílené složky je potřeba ji zkusit připojit v Raspberry OS. Vytvoříme prázdnou složku a připojíme do ní složku z NASu:
mkdir /tmp/synology-rpi

mount -t nfs  <adresa NAS>:/<cesta> /tmp/synology-rpi

Vyzkoušíme právo zápisu:

touch /tmp/synology-rpi/test

Pokud se soubor vytvořil, můžeme zkopírovat systém na NAS:

rsync -Phax --numeric-ids / /tmp/synology-rpi/

Tohle bude chvilku trvat, záleží na rychlosti sítě. Také je potřeba ukončit všechny nepotřebné běžící aplikace.

3. Úprava konfigurace Raspberry Pi OS na NAS

Je potřeba upravit soubor /etc/fstab a zakomentovat připojení kořenového adresáře z SD karty (obr. 3).
nano /tmp/synology-rpi/etc/fstab

 

Obrázek 3: úprava souboru /etc/fstab

Pozor: je třeba zachovat připojení SD karty do složky /boot!!!

4. Nastavení zavaděče na SD kartě

Nejjednodušší je upravit soubor cmdline.txt, to lze z běžícího Raspberry (soubor /boot/cmdline.txt) nebo i v počítači s Windows, protože bootovací oddíl je ve formátu FAT32.

Pozor: všechny příkazy musí být na jednom řádku. Ve Windows je potřeba používat editor, který umí linuxové odřádkování (např. Notepad++ nebo PSpad).

Moje Raspberry Pi startuje s následující konfigurací:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 rootwait root=/dev/nfs nfsroot=<adresa NAS>:/<cesta> rootfstype=nfs rw ip=dhcp smsc95xx.turbo_mode=N elevator=deadline

nfsroot - cesta ke sdílené složce, kde jsou systémové soubory
rw - sdílená složka se připojí i pro zápis (změnou na ro se bude připojovat jen pro čtení) 
ip=dhcp - nastavení IP adresy z DHCP serveru, lze nastavit i statickou adresu, ale pak je potřeba upravit i konfiguraci Raspberry Pi OS
smsc95xx.turbo_mode=N - řeší problémy s možným kernel panic při zahlcené síti

5. Řešené problémy

SWAP

Raspberry Pi OS používá dphys-swapfile pro vygenerování souboru na filesystému, který bude použit jako swapovací disk. S konfigurací na NFS toto nefunguje, takže je potřeba systém trochu upravit.

Odinstalace balíčku dphys-swapfile:
sudo apt-get remove --purge dphys-swapfile
sudo rm /var/swap
sudo rm /etc/init.d/dphys-swapfile
sudo update-rc.d dphys-swapfile remove

Vytvoření nového swapovacího souboru (1 GB):

sudo dd if=/dev/zero of=/var/swap bs=1M count=1024

Nastavení a zapnutí swapování:

sudo losetup /dev/loop0 /var/swapfile

sudo mkswap /dev/loop0

sudo swapon /dev/loop0

Pro zapnutí swapování po restartu je třeba poslední příkazy zapsat do souboru /etc/rc.local před řádek exit 0.

echo "Setting up swapfile.."

losetup /dev/loop0 /var/swapfile

mkswap /dev/loop0

swapon /dev/loop0 

Problém s SSH serverem

Po přesunu na NFS se mi nešlo připojit přes SSH. Uživatel se ověřil, ale systém pak zavřel spojení. Tohle vyřešila až kompletní reinstalace OpenSSH serveru:
sudo apt-get remove --purge openssh-server

sudo apt-get install openssh-server

 

Žádné komentáře:

Okomentovat