Jak už bylo uvedeno v jednom z předchozích dílů seriálu, životnost paměťových karet je při provozu zatíženého systému omezená. Ze stejného důvodu nelze doporučit běžné USB flash disky. Proto má smysl uvažovat pouze o pevných discích nebo lépe SSD, jejichž konstrukce zvládne dlouhodobou zátěž bez potíží. SSD se vyplatí, ani ne tak z důvodu vyššího výkonu, ale především kvůli nižší spotřebě proudu. Díky ní si sestava vystačí s běžným 2,5A zdrojem k Raspberry Pi. Pokud přece jenom dáte přednost vyšší kapacitě pevného disku, pravděpodobně se neobejdete bez jeho samostatného napájení např. pomocí napájeného USB hubu.
Hardware
Podívejme se na sestavu malého „domácího“ serveru nebo pracovní stanice založené na Raspberry Pi. Namísto paměťové karty použijeme výprodejový 120 GB SSD Kingston A400 s rozhraním SATA a připojíme ho k Rasperry Pi pomocí adaptéru Sabrent USB 3.0 to SSD/2.5-Inch SATA I/II/IIIHard Drive Adapter (EC-SSHD).
Právě u adaptéru USB – SATA bude dobré udělat malou zastávku. Ačkoli je podobných zařízení na trhu spousta, Rasperry Pi dokáže spolehlivě startovat z SSD jenom pro použití několika z nich. Například moje pokusy s jinak osvědčeným adaptérem Axagon USB 3.0 to 2,5“ SATA skončily naprostým neúspěchem. Sestavu nebylo často možné vůbec spustit a nepomohlo jí ani použití napájeného USB hubu pro připojení SSD. Co se týče samotného Raspberry Pi, volte raději novější model 3B+. Přináší nejen o něco vyšší porci výkonu, ale především je u něj spuštění systému z USB zařízení ve srovnání s předchozím modelem 3B daleko spolehlivější.
Přenesení systému na SSD
Paměťovou kartu budeme přece jen potřebovat, ale pouze dočasně. Výchozím bodem je totiž instalace systému nebo kombinace systémů na paměťové kartě např. pomocí NOOBS. Aby postup zahrnoval i kombinace různých systémů, ukážeme si ho na „dual bootu“ Raspbianu a LibreELECu.
Nabootujte do Raspbianu. Spusťte aktualizaci systému pomocí příkazů:
apt update apt upgrade
Zkopírujte obsah karty na SSD pomocí programu SD Card Copierer. Zdrojovou jednotkou je paměťová karta, která je v Raspianu reprezentovaná blokovým zařízením /dev/mmcblk0 a cílovou jednotkou je SSD, v Raspbianu /dev/sda. Jména jednotek jsou důležitá, použijeme je i v dalších krocích.
Všechny jednotky, které vznikly na SSD by se nyní měly připojit do systému. Proto odpojte kabel od SSD a znovu ho připojte. Jednotka /boot z SSD se automaticky připojí do složky /media/pi/boot, kořenová jednotka z SSD se připojí do složky /media/pi/root.
Nyní upravíme směrování kořenové jednotky Raspbianu na SSD v souboru v /media/pi/boot/cmdline.txt. Najdete v něm nasledující řádek
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait splash plymouth.ignore-serial-consoles quiet
Nahraďte cestu mířící ke kartě
root=/dev/mmcblk0p7
cestou k sedmému oddílu externího SSD
root=/dev/sda7
Čísla jednotek odpovídají instalaci Raspbianu a LibreELECu pomocí NOOBS. V případě jiné kombinace systémů budou odlišná. Dalším krokem je úprava připojení jednotek souborových systémů v souboru /media/pi/root/etc/fstab. Následující dva řádky v něm popisují připojení kořenové složky souborového systému a složky boot:
/dev/mmcblk0p6 /boot vfat defaults 0 2 /dev/mmcblk0p7 / ext4 defaults,noatime 0 1
Upravte je tak, že blokové zařízení reprezentující paměťovou kartu nahradíte zařízením reprezentujícím SSD:
/dev/sda6 /boot vfat defaults 0 2 /dev/sda7 / ext4 defaults,noatime 0 1
Kritickým faktorem pro spolehlivost startu z SSD je časový limit (time out). Prodlužte ho ze standardních 2s na 5s přidáním následujícího textu do souboru /media/pi/boot/config.txt:
program_usb_boot_timeout=1
Zároveň ve stejném souboru, ale umístěném na paměťové karty nastavte přepnutí OTP bitu (One Time Programmable) přímo v SoC Raspberry Pi. Jde o nevratnou změnu, níž dokáže Raspberry Pi startovat z USB mass storage zařízení. K tomu do souboru /boot/config.txt přidejte řádek:
program_usb_boot_mode=1
Přípravu máme hotovou. Restartujte Raspberry PI, aby došlo k přepnutí OTP bitu. SDD při tom nemusíte odpojovat. Raspberry Pi může i po přepnutí OTP bitu startovat z paměťové karty. Dokud máte kartu se systémem ve slotu, bude jí při startu dávána přednost před SSD. V dalším kroku vypněte Raspberry Pi, vytáhněte z něj paměťovou kartu a znovu ho spusťte. Oba systémy, tedy jak LibreELEC, tak Raspbian by měly být v tomto okamžiku plně funkční. Po startu Raspbianu ještě můžete smazat řádek program_usb_boot_mode=1 ze souboru /boot/config.txt, protože přepnutí OTP bitu je trvalé. Pro úplnost dodejme, že uvedený postup se dá snadno upravit pro různé kombinace operačních systému včetně čistého Raspbianu.
Odkládací soubor
Díky běhu přímo z SSD můžeme nyní udělat něco, co výrazně zlepší chod systému. Upravíme v Raspbianu velikost odkládacího souboru (swap file). Ten se standardně nachází ve složce /var/swap a jeho nastavení najdete v souboru /etc/dphys-swapfile. Změňte hodnotu parametru CONF_SWAPSIZE
ze standardních 100 MB na 2 GB. V souboru tedy bude hodnota:
CONF_SWAPSIZE=2048
Potom restartujte stránkování pomocí příkazu
/etc/init.d/dphys-swapfile restart
nebo normálně restartujte celý systém. Velikost stránkovacího souboru můžete snadno zkontrolovat zadáním příkazu free do terminálu.
Stránkování paměti na SSD velice výrazně zvýší použitelnost Raspbianu na desktopu i na zatíženém serveru. Díky němu bude možné spustit více náročných aplikací současně a chod celého systému se stane výrazně plynulejším.
Co dodat na závěr. Pokud berete dlouhodobý provoz vašeho serveru nebo pracovní stanice založené na Rasperry Pi vážně, může být pro vás SSD velmi dobrým řešením. Při dnešních výprodejových cenách se rozhodně vyplatí. Pamětníci, kteří čtou tento seriál od začátku si jistě vzpomněli, že podobný postup byl uveden v jeho druhém dílu. Ovšem nyní jsme se díky novým modelům Raspberry Pi mohli obejít zcela bez paměťové karty.