»Начало 
Raspberry Pi и NFS


Raspberry Pi и NFS


Който не знае какво е Raspberry Pi да чете първо тук - http://www.raspberrypi.org/faqs

След като първото ми Pi беше колокирано в един дата център и си работи прекрасно от около половин година, натоварено с безценната задача да носи един трафик от тук-там дойде време за Pi номер 2.

Както и първото Pi обаче нямах никакво намерение да си тровя нервите с SD карти. Въпросните карти са много хубаво нещо. Но само до момента в който се омажат. Разбира се, както пише в една книга шанса това да се случи е около 50%. Но пък се случва всеки 8 от 10 случая, когато не си спрете Pi-то като хората. Ако добавите към това и живота им, който според марката е с продължителност почти колкото живота на една муха винарка, то сами разбирате, че трудно можете да оставите нещо по-сериозно върху SD.

При предното ми приключение с SD-та смених точно три докато се откажа и реша проблема веднъж и да се надяваме за винаги.

Решението е сравнително просто - нарича се NFS или Network File System.

За целта ви трябва NFS сървър на друга машина, която няма навика да бъде изключвана, включена е на някой по-издръжлив UPS и т.н. и т.н. Как да си пуснете NFS сървър вероятно ще намерите на доста места в Internet. Не забравяйте да си пуснете и firewall на NFS сървъра, ако ще го ползвате през Internet.

Добрата новина е, че всяко Pi снабдено с Raspbian Wheezy може да ползва NFS root без да се налага да правите разни сложни и непонятни неща.

И така - първо пъхате SD картата, на която сте инсталирали въпросното Wheezy в някой четец на друго PC или директно на NFS сървъра. Ще видите, че има два дяла на въпросната карта:

/dev/mmcblk0p1           8192    122879   57344   c W95 FAT32 (LBA)
/dev/mmcblk0p2         122880  15523839 7700480  83 Linux

Първият дял е boot т.е. мястото на което се намира kernel-а, разни бинарни магии и няколко текстови файла.

Файлчето, което ни интересува се нарича cmdline.txt:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Както се вижда в момента Pi-то ще си търси root от /dev/mmcblk0p2.

Тъй като ние искаме да преместим root-а върху NFS правим следното:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/nfs rootfstype=nfs rootwait smsc95xx.turbo_mode=N nfsroot=SERVER_IP:/rpi_root,tcp,timeo=100,retrans=10,rsize=65536,
wsize=65536,bg,vers=4 ip=IP:SERVER_IP:GW:MASK:rpi:eth0:off

Всичкото това трябва да се намира на ЕДИН ред във файла.

SERVER_IP е IP адреса на нашият NFS сървър.
/rpi_root е мястото, където след малко ще копирате информацията от SD картата, на NFS сървъра си.
IP е IP адреса на нашето Pi.
GW е gateway на нашето Pi.
MASK е маската на нашето Pi.

smsc95xx.turbo_mode=N поне при първата модификация на Pi, която беше с 256MB RAM стабилизира работата на мрежовата карта, защото иначе плющеше разни чудесии, като я настъпят с трафик.

Разните други параметри като tcp, timeo, retrans, rsize, wsize, vers и т.н. можете да намерите ето тук: https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt

Това горното редче работи за мен през Internet, затова ползвам TCP.

Ако обаче Pi-то ви се намира в локалната мрежа и сте сигурни, че няма да има загуби по мрежата, то можете да спечелите малко скорост, като ползвате UDP.

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/nfs rootfstype=nfs rootwait smsc95xx.turbo_mode=N nfsroot=SERVER_IP:/rpi_root,udp,rsize=65536,wsize=65536,bg,vers=4 ip=IP:SERVER_IP:GW:MASK:rpi:eth0:off

Общо взето просто заменяте tcp с udp.

До тук добре. Сега е ред да копирате всичко от /dev/mmcblk0p2 на NFS сървъра си.

След като го направите е важно да коментирате или да изтриете реда за root от /etc/fstab - редактирате файла директно на NFS сървъра - /put/kum/NFS/rpi_root/etc/fstab:

proc            /proc           proc    defaults          0       0
#/dev/mmcblk0p1  /boot           vfat    defaults          0       2
#/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

Както виждате аз съм коментирал и реда за /boot, защото няма голям смисъл да държа /boot монтиран.

След като направите това сте готови да заредите и вашето Pi по NFS. Върнете SD картата в Pi-то, включете го и след малко би трябвало да имате Pi по NFS.

Разбира се, ако искате да имате swap, то трябва да направите още една операция. Това се налага, защото swap файл po NFS работи, но по малко по-различен начин.

След като Pi-то ви зареди логвате се и правите следното:

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

Правите нов swap 1GB - ако искате друга големина променете 1024 на колкото MB искате:

sudo dd if=/dev/zero of=/var/swap bs=1M count=1024
sudo losetup /dev/loop0 /var/swap
sudo mkswap /dev/loop0
sudo swapon /dev/loop0

Активирайте swap-а при всяко зареждане - в /etc/rc.local точно преди exit 0 добавяте:

echo "Setting up loopy/var/swap.."
sleep 2
losetup /dev/loop0 /var/swap
mkswap /dev/loop0
swapon /dev/loop0


Кофтито е, че все пак ви трябва SD карта за да може Pi-то да boot-не, защото не поддържа PXE или други глезотийки, но пък тя се ползва само за четене и дори не е монтирана след това, докато Pi-то работи :)



Коментари

Все още няма коментари


напиши нов коментар
Какво е това?

Това трябва да бъде нещо като микро блог или просто начин да записвам разни кратки мисли, идеи, линкове и т.н.

Към всеки пост може да има "закачени" следните елементи:

  Линк към страница
  Прикачена картинка
  Прикачен видео файл
Показва времето на публикуването, заедно с линк към страницата с поста и коментарите
2.4HGz OFF / 5GHz Only ON
bye bye Debian ... apt-get dist-upgrade може да деинсталира ядро :) E ... крайно време беше да го разкарам това недоразумение :)
drWEB Live CD е Gentoo базирано - well done!
Като едно време ... 3.11

Linux notebook 3.11.0-gentoo-dr #1 SMP PREEMPT Tue Sep 3 22:17:44 EEST 2013 i686 Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz GenuineIntel
вчера 3.6.4, днеска 3.6.5 ... така е то ...
не искам глупави thumbail-и от firefox ПЪК! browser.pagethumbnails.capturing_disabled = true
... напоследък дори журналистите имат проблем с разбиране на написаното ...
Мързи ме да напиша около 20 реда код вече ... 10 дни ...
noteX31 ~ # uptime
23:12:42 up 1016 days, 14:39, 2 users, load average: 1.45, 0.64, 0.24
4:30 поздрава за всички, които отърваха Ugly Kid Joe :P
нЕкви хора си правят нЕкъв PR ... и разказват, че станали жертви ...
noteX31 ~ # uptime
10:36:05 up 939 days, 2:03, 4 users, load average: 0.11, 0.66, 0.52
... като не си гледаш разните странни E-Mail-и като например hostmaster@... ти изтича SSL сертификата ...
stretch
stretch
stretch
stretch
interoffice
interoffice
interoffice
interoffice