Raspberry Pi - NAS

NAS ali Network Attached Storage (Hramba priključena na omrežje)
Torej diski, ki so priključeni na omrežje.
Funkcija NAS je hranjenje podatkov, izdelava varnostnih kopij, dostop do podatkov s cele mreže. To so naloge, ki jih pričakujem od sistema + majhna poraba, saj je ves čas priključen na omrežje.

Prikop diskov

Izbral sem 2 diska WD Elements 2TB, ki sem ju želel priključiti na RPI.
Problem se je pojavil takoj, ko sem priključil prvega, saj se kljub zadostni tokovni zmogljivosti napajalnika disk ni uspešno zagnal. Raziskava po internetu je pokazala, da ima Raspbery PI 2 omejen tok na USB konektorje. Zvedel sem tudi, da je možno programsko to tokovno zmogljivost povečat. To storimo z vpisom ukaza v konfiguracijsko datoteko RPI.
Odpremo konzolo (LX Terminal ikona v opravilni vrstici) ter vpišemo naslednje besedilo:
sudo nano /boot/config.txt
Kaj kaj pomeni?
Torej z dvignjenimi privilegiji s programomo Nano odpremo datoteko config.txt, ki se nahaja v mapi /boot/

Prikaz v konzoli nadomesti vsebina datoteke config.txt, z nekaj kriptičnimi ukazi na dnu konzole.
Uporabimo kirzorske tipke in se premaknemo na dno datoteke.
Z Enter dodamo vrstico in vpišemo naslednje:
max_usb_current=1
Pritisnemo tipko CTRL+x
Prikaže se opzorilo, da je datoteka spremenjena, pritisnemo y in nato enter.
Datoteka se shrani z novo vsebino, in prikaže se ukazna vrstica v konzoli.
Pri uporabi okolja Linux je vedno potrebno paziti da uporabljamo ukaze tako kot so napisani. Sudo ni enako sudo in ni enako suDo. Linuk razlikuje velike in majhne črke. To je lahko včasih razlog, za nedelovanje ukazov.
Če hočemo videti učinek, je potrebno RPI ponovno zagnati. To lahko storimo preko opravilne vrstice - klik na malino Menu / Shutdown / Reboot, lahko pa to storimo kar preko konzole, ker imamo že ravno odprto. V konzolo vpišemo:
sudo reboot
In potrdimo z Enter. RPI se ukasne in ponovno zažene. Priklop diska sedaj deluje.

Sedaj lahko priključimo naš disk.
Ko disk priključimo na RPI, se izvede samodejni priklop diska, in je dostopen preko upravljalca datotek PCmanFM (ikona predalnika v opravilni vrstici).
Žal pa takšne vrste priklop ne pride v poštev ker disk v primeru ponovnega zagona RPI ni več priključen, + izkazalo se je, da kljub hardverski modifikaciji RPI ne uspe prepoznati dveh USB diskov, ki jih priključimo na RPI direktno.
Prvi problem je bil, ker kljub povečanju dopustnega toka na večjo vrednost (ukaz max_usb_current=1) se nista prižgala oba diska, za enega je toka zmanjkalo. To se je videlo kot ciklično zaganjanje diska.

Sledila je analiza ali lahko RPI predelam, tako, da bi USB konektorji dobili več toka. Zato sem poizkušal najti dotično vezje na shemah, ki jih ponuja RPI na svoji strani, vendar ta detajl zaradi neznanega vzroka ni prikazan. Po nekaj brskanja po internetu sem dobil informacijo, da za to skrbi čip AP2553 čip ima na na mojem RPI oznako BK4. Uspelo mi je modificirati vezje tako, da sem izhodni pin čipa dvignil s tiskanega vezja, in potegnil žico direktno iz 5V na 5V izhod USB konektorja.
Slika 1: AP2553 tokovni regulator in izhodni pin


Slika 2: Izdelana prevezava za ločeno napajanje USB konektorjev


Po tem posegu sta se diska prižgala normalo, le RPI ni videl obeh tako, da bi ju lahko priklopil. Zato sem tu prekinil zadevo in diska priključil na RPI preko USB Huba, ki ima lastno napajanje. Diska sta tako postala normalno vidna in ju lahko uporabljam.

Diskoma sem dal imena Data in Backup, vendar diska če ju ne priklopimo ročno ali fizično nista dostopna uporabnikom. To je pač lastnost Linux okolja. Da diske priključimo moramo najprej nekje narediti mapo, ki bo neke vrste vrata na disk. Postopek pričnemo tako da najprej pogledamo ali so diski sploh vidni. V konzolo vpišemo:
sudo fdisk -l
Druga možnost:
sudo blkid
Izpiše se kup besedila, od katerega nas zanimata samo dve vrstici:

Kar kaže na to, da RPI vidi oba USB diska.
Komplet izpis ukaza sudo fdisk-l:
pi@raspberrypi ~ $ sudo fdisk -l

Disk /dev/mmcblk0: 16.0 GB, 16021192704 bytes
4 heads, 16 sectors/track, 488928 cylinders, total 31291392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009bf4f

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 31291391 15584256 83 Linux

Disk /dev/sda: 2000.4 GB, 2000365289472 bytes
255 heads, 63 sectors/track, 243197 cylinders, total 3906963456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xed6c39eb

Device Boot Start End Blocks Id System
/dev/sda1 2048 3906963455 1953480704 7 HPFS/NTFS/exFAT

Disk /dev/sdb: 2000.4 GB, 2000365289472 bytes
255 heads, 63 sectors/track, 243197 cylinders, total 3906963456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x524aee5d

Device Boot Start End Blocks Id System
/dev/sdb1 2048 3906963455 1953480704 7 HPFS/NTFS/exFAT
Sledi ustvarjanje Map na katere domo diska priklopili. V konzolo vpišemo:
sudo mkdir /media/Data
sudo mkdir /media/Backup
Data in Backup sta imenika ki ju izdelamo. Sta lahko poljubna.
Diska nato še priklopimo z vpisom ukazov v konzolo:
sudo mount -t auto /dev/sda1 /media/Data
sudo mount -t auto /dev/sdb1 /media/Backup
S tem diska postanega dostopna uporabniku RPI sistema. Če se priklikamo z upravljalnikom datotek na lokacijo /media/Baskup in kliknemo na ikono se odpre disk, in vidimo njegovo vsebino. Seveda pa želimo vsebino tudi deliti z drugimi uporabniki omrežja, zato je potrebno storiti še nekaj malenkosti.

Dodajanje dostopov za mrežne uporabnike diskov

V Linux okolju za dostop do diskov preko mreže skrbi programska oprema Samba. Ker RPI privzeto te programse opreme nima naložene jo je potrebno naložiti. V konzolo vpišemo:
sudo apt-get install samba samba-common-bin
Vprašanje potrdimo z y
Naredimo kopijo konfiguracijske datoteke sambe:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old
Izdelava varnostne datoteke ni nujna, je pa koristna, če gre kakšna stvar narobe.
Uredimo konfiguracijo:
sudo nano /etc/samba/smb.conf
Nano uporablja samo tipkovnico.
Na dnu konzole so prikazani možni ukazi, ki jih podpira urejevalnik nano, zanima nas trenutno samo en eXit:^X pomeni da izberemo CTRL X
[Global]
workgroup = WORKGROUP oziroma ime, ki ga uporabljamo za mrežo
server string = %h server
dns proxy = no
name resolve order = lmhosts hosts wins bcast
interfaces = 127.0.0.0/8 eth0
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:*
%n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
[ homes]
browseable = no
read only = no
# tole je konfiguracija za mrežni dostop do mape, ki jo želimo deliti.
# [RPi_Data] je ime, ki bo vidno mreži , comment je besedilo ki bo pokazano če gremo z miško čez ikono
# path je pot do mape, ki jo delimo
[RPi_Data]
comment = Mapa medijev
path = /media/Data
read only = yes
browseable = yes
guest ok = yes
Shranimo datoteko (CTRL X in izberemo Y ter pritisnemo Enter, da pridemo nazaj v ukazno vrstico

Ker je konfiguracija popravljena sambo ponovno zaženemo:
sudo /etc/init.d/samba restart
Da se diski priključijo sami ob zagonu je potrebno v izvršljivo datoteko /etc/rc.local dopisati nekaj ukazov:
sudo nano /etc/rc.local
Pred zaključkom datoteke (exit 0) je potrebno dodati 2 vrstici:
/bin/mount /dev/sda1 /media/Data
/bin/mount /dev/sda2 /media/Backup
Po zaključku zagona se izvede še rc.local ki priključi diska na prej odprti mapi.

Izdelava samodejnega zrcaljenja diska.

Začetna ideja je bila, da vzpostavim zrcalnjenje diskov, za večjo varnost podatkov. Priklopil sem 2 diska: Data, ki bo vseboval podatke, ter Backup, ki bo kopija diska Data. Teoretično lahko ob odpovedi samo zamenjam en disk, prekopiram podatje s prvega diska in delam naprej.
Zato bomo potrebovali naslednje: Program rsync
Naložimo ga z ukazom, ki ga vpišemo v konzolo:
sudo apt-get install rsync.
Kdaj se bo kopiranje izvedlo pa določimo s programom cron.
V konzolo vpišemo:
crontab -e
S tem ukazom vstopimo v urejevalnik nastavitev programa cron in vpišemo naslednje:
0 3 * * * rsync -av --delete /media/Data /media/Backup
3 -> ob 3h
*** = Y M D (leto, mesec dan)
kar pomeni vsak dan in vsak mesec in vsako leto izvrši ta ukaz<

Za test ali se bo izvedlo želeno vpišemo v konzolo:
rsync -av --delete --modify-window=1 /media/Data /media/Backup
Za tole kopiranje na disku Backupa nastane mapa Data, znotraj katere se potem znajde vsebina diska Data.

Ko nastavimo cron, se ob uri izvede kopiranje. Ker je to usluga, ni videti kaj se dogaja. Če bi to slučajno želeli pogledati lahko med tem, ko se izvaja kopiranje (vidimo, da diski ne mirujejo)
V konzolo vpišemo tole:
strace -e open $(ps -o lwp= -LC rsync | sed 's/^/-p/')
In v konzoli se pričnejo izpisovati podatki o dogajanju.

Reset tipka

RPI2 ima predvideno mesto za reset tipko, ki sem jo tudi priklopil. Odklapljanje napajanja je včasih problematično in je lažje pritisniti tipko, da se RPI ponovno zažene.
Slika 3: Nad mestom konektorja za reset tipko je napisano RUN


Slika 4: Sam sem na to mesto prispajkal standardni header z razmikom 2,54mm, kar mi omogoča enostaven odklop tipke, ki je namontirana na pokrovu ohišja.


Slika 5: Izgled Reset tipke na pokrovu ohišja



P&P© 26.3.2015