Než začneme se samotnou instalací, pokusme se ujasnit si, jaké jsou výhody a nevýhody řešení postaveném na Raspberry Pi 2.
Výkonové omezení přenosu dat
Jak už bylo uvedeno v přechozím textu, Raspberry Pi 2 je oproti svým starším verzím výrazně výkonnější. V jedné oblasti má ale značný handicap. Ethernet je pouze 10/100 Mbit/s a navíc je připojen k vnitřnímu USB rozbočovači. Z toho vyplývají nepříliš oslnivé výkony při přenosu dat například v porovnání s Banana Pi.
Zkusil jsem si uvedené výsledky ověřit v jednoduchém testu, v němž jsem nejprve kopíroval soubor o velikosti 500 MB z domácího NASu QNAP HS-210 do Raspberry Pi 2. Rychlost zápisu dosáhla pouhých 5,29 MB/s. Když jsem namísto Raspberry Pi 2 kopíroval za stejných podmínek stejná data do mého notebooku, vybavenému SSD diskem, přesáhla rychlost zápisu 30 MB/s. Rychlost přenosu stejného souboru z Raspberry Pi 2 do NASu byla o něco lepší - 6,91 MB/s. Kontrolní kopírování stejných dat z notebooku do NASu ovšem bez potíží překročilo rychlost 32 MB/s.
Pro velmi zatížený NAS se tedy Raspberry Pi 2 příliš nehodí. Uvedené omezení ale nebude vadit domácímu cloudovému serveru, ke kterému bude přistupováno především skrze internetovou přípojku 40 Mb/s. Tím se dostáváme k vymezení optimálního použití Raspberry Pi v roli serveru. Dle mého mínění dává smysl tam, kde můžeme těžit ze spolehlivosti Raspberry Pi 2 a jeho nízkého odběru proudu a kde současně server poběží trvale a zároveň na něj nebudou kladeny velké nároky na výkon při přenosu dat.
Problém provozu z paměťové karty
Uživatelé, kteří Raspberry Pi libovolné verze nasadili do role trvale běžícího počítače, se často setkávají s potížemi danými omezenou životností paměťové karty. Příčina je nasnadě. Paměťové karty stejně jako USB flash disky nejsou zkonstruovány pro časté ukládání malých souborů, což je ale přesně to, co provoz linuxové distribuce vyžaduje.
Jejich poškození často nezabrání ani použití tmpfs a dalších úprav v linuxových distribucích, určených pro Raspberry Pi. Při trvalém provozu nemusí být záchranou ani nasazení velmi drahých paměťových karet, určených pro průmyslové využití. Způsobů, jak se s uvedeným neduhem vyrovnat, může být několik:
- Vůbec se jím nezabývat. Mít neustále v záloze druhou paměťovou kartu s bitovou kopií systému. Pokud dojde k problému, postačí přehodit karty. Uvedený způsob samozřejmě předpokládá, že řídicí jednotka nebo server postavený na Raspberry Pi bude data ukládat na nějaké externí úložiště a že také bude snadno fyzicky dostupný.
- Použít OverlayFS, který překryje souborový systém distribuce RAM diskem. Toto použití není úplně triviální, pokud se o něj zajímáte, doporučuji vynikající přednášku pana Píši.
- Provozovat linuxovou distribuci z externího pevného disku, připojeného do USB portu. Na tuto, dle mého mínění nejschůdnější cestu, se podíváme podrobněji.
Provoz z externího disku
Raspberry Pi potřebuje pro svůj provoz nejméně dva diskové oddíly. První z nich musí být formátovaný v souborovém systému fat16 nebo fat32. Obsahuje zavaděče systému a jejich konfigurační soubory. Další oddíly mohou být formátovány v některém z linuxem podporovaných souborových systémů, např. ext4.
Obsahují operační systém a jistě také uživatelská data. Důležité je, že první oddíl bude Raspberry vždy hledat na paměťové kartě a bude ho používat pouze při startu systému. Ostatní oddíly, které jsou používány při vlastním provozu systému, už se mohou nacházet na externím disku připojeném k Raspberry Pi pomocí USB portu. K instalaci budeme potřebovat libovolný počítač s nainstalovanou linuxovou distribucí (v mém případě Ubuntu 14.04).
Přípravné práce
Začněte stažením obrazu systému Raspbian 2015-05-05-raspbian-wheezy.zip
z oficiálních stránek http://www.raspberrypi.org/downloads a rozbalením archivu ZIP.
Zjistíme si nejprve rozdělení oddílů, obsažených v obrazu (image) systému ve staženém souboru pomocí příkazu:
sudo parted 2015-05-05-raspbian-wheezy.img -s unit B print
Příkaz vám vrátí něco podobného:
Model: (file) Disk /home/lcevela/iso/2015-05-05-raspbian-wheezy.img: 3276800000B Sector size (logical/physical): 512B/512B Tabulka oddílů: msdos Číslo Začátek Konec Velikost Typ Systém souborů Přepínače 1 4194304B 62914559B 58720256B primary fat16 lba 2 62914560B 3276799999B 3213885440B primary ext4
V obrazu systému jsou tedy obsaženy dva diskové oddíly. Vytvořte si dvě složky, které budou určené k připojení uvedených oddílů:
sudo mkdir /media/rpi_fat sudo mkdir /media/rpi_ext
Nyní připojíme oba oddíly do složek při použití offsetu nastaveného na jejich začátky:
sudo mount -o loop,ro,offset=4194304 2015-05-05-raspbian-wheezy.img /media/rpi_fat/ sudo mount -o loop,ro,offset=62914560 2015-05-05-raspbian-wheezy.img /media/rpi_ext/
Pokud se vše podařilo, najdete nyní ve složce /media/rpi_fat
zavaděče systému a jejich konfigurační soubory a ve složce /media/rpi_ext/
na vás bude čekat kořenový oddíl Raspbianu.
Příprava paměťové karty
Jak už jsem uvedl, zavaděče systému musí zůstat na paměťové kartě. K tomuto účelu může posloužit microSD karta o prakticky libovolné kapacitě od 64 MB (opravdu MB a nikoli GB) výše, na níž pomocí programu Gparted vytvoříte alespoň jeden oddíl systémem fat16 nebo fat32. Pro můj server jsem použil kartu o kapacitě 2 GB, pro kterou už dlouho nebylo jiné využití.
Na takto připravenou kartu zkopírujte obsah složky /media/rpi_fat
pomocí libovolného souborového manageru. Tím bychom byli s kartou téměř hotovi.
Nesmíme ale zapomenout předem upravit nastavení zavaděče systému na kartě tak, aby hledal kořenovou složku systému nikoli na kartě samotné, ale na připojeném pevném disku. Otevřete soubor cmdline.txt na paměťové kartě a upravte nastavení zavaděče tak, aby mířil na druhý diskový oddíl externího pevného disku. Uvedený oddíl připravíme později při přípravě pevného disku. V souboru najdete jediný řádek textu:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Nahraďte cestu mířící ke kartě:
root=/dev/mmcblk0p2
cestou k druhému oddílu externího pevného disku, který bude připojen pomocí usb.
root=/dev/sda2
Tím je příprava paměťové karty dokončena. Můžeme ji odpojit a vložit do slotu v Raspberry Pi 2.
Příprava pevného disku
Externí pevný disk začneme připravovat opět pomocí programu GParted. Vytvořte na něm následující oddíly:
- První oddíl o velikosti 16 MB oddíl formátovaný v souborovém systému fat16. Tento oddíl zůstane nevyužitý, proto nemá smysl plýtvat místem.
- Druhý oddíl o velikosti nejméně 10 GB formátovaný v souborovém systému ext4, který bude kořenovým oddílem (root) operačního systému.
- Dále můžete na disku založit další oddíly formátované v některém linuxovém souborovém systému.
Připojte druhý diskový oddíl například do složky /media/jméno_uživatele/root/
, kde jméno uživatele je jméno aktuálně přihlášeného uživatele (v mém případě lcevela). Můžeme to udělat rovnou v GPartedu pomocí příkazu Připojit nebo jednodušeji přímo pomocí funkcí linuxového desktopu. Zkušenější uživatelé mohou samozřejmě použít v terminálu příkaz mount.
Na závěr přípravy disku zkopírujeme obsah kořenového oddílu budoucího systému připojeného do složky /media/rpi/
do druhého oddílu externího disku připojeného do složky /media/jméno_uživatele/root/
pomocí příkazu:
rsync -a /media/rpi_ext/ /jméno_uživatele/root/
Nyní můžeme všechny oddíly externího disku odpojit a připojit ho pomocí kabelu k Raspberry Pi 2. Kartu již máme ve slotu připravenou a můžeme si spokojeně užít první start serveru z pevného disku.
Na závěr
Výhodou uvedeného řešení je dlouhodobá spolehlivost a jistě také vyšší disková kapacita. Mezi jeho největší nevýhody patří požadavek na výkonnější napájecí zdroj. Pro nakrmení proudově hladového externího pevného disku a celého Raspberry Pi bych doporučil podívat se po vhodném USB hubu, který je vybaven externím zdrojem schopným dodávat proud kolem 2 A.
Pokud server namísto úvodní obrazovky systému vypíše například „random nonblocking pool is initialized“, je jasné, že napájení nestačí. Pokud jste přesvědčeni, že použitý USB hub je v pořádku a zdroj dává dostatečný proud, zkuste se podívat po rozdvojeném napájecím kabelu, tzv. Y – kabelu, který umožňuje napájet externí disk ze dvou USB portů najednou. Základ serveru máme nyní připraven, v příštím díle bychom se mohli podrobněji podívat na instalaci ownCloudu a na jeho zprovoznění.