Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

18
voti

RASPBERRY PI - un NAS a pochi euro

Indice

Introduzione

Salve a tutti nuovamente. Recentemente ho avuto l'occasione di giocare un po' con la Raspberry Pi versione B+, un minicomputer in vendita a meno di 40€ per il quale sono disponibili diverse distribuzioni linux precompilate. Il motivo per cui l'ho fatto, a parte ovviamente il semplice divertimento (:p), era la necessità (di un amico) di condivisione in casa di unità di storage USB fra tutti i PC, senza dover per questo tenerne uno acceso. Il risultato finale è stato ottimo, funziona tutto molto bene ed è stabile...e soprattutto la scheda si è dimostrata in grado di trasferire un file da HD USB ad altro storage di rete alla più che accettabile velocità di 6MBytes/s. In rete si trovano molte guide, alcune complete ed altre no, ma tutte più o meno con qualche errore che ho dovuto risolvere, quindi ho pensato che potrebbe essere utile raggruppare in un articolo tutte le informazioni che ho ricavato e metterle a disposizione di altri che magari abbiano le stesse necessità.

In questo articolo farò solo una brevissima descrizione delle fasi iniziali, perchè tutte ottimamente documentate su vari siti compreso EY con questo ottimo articolo di Donj, fornendo vari link su cui potrete trovare le spiegazioni dettagliate. In sostanza, partirò dall'ipotesi che chi legge abbia già una Raspberry Pi (B o B+ non fa differenza) e relativo alimentatore (mini USB, uno qualunque di un cellulare va bene) con SD card pronta, accesa e collegata alla rete di casa, ed un modo per accedervi in SSH (un qualunque PC con Linux, Putty su windows...se avete un MAC, non vi posso aiutare :P)

(breve) Descrizione tecnica della scheda

La raspberry PI B+ è un minicomputer basato su ARM 11 (BroadCom BCM2835) che può girare (in overclock) fino a 1Ghz, dotato di 512 Mb di RAM, micro SD (ver B+) o SD (ver B) per sistema operativo (ed eventuale spazio di storage), 4 porte USB 2.0, uscita HDMI, 40 pin di GPIO, connettore display e molto altro. La documentazione completa è facilmente reperibile su internet a questo link.

Raspbery-Pi-B+.jpg

Raspbery-Pi-B+.jpg

Sul sito del produttore, sono inoltre reperibili anche le ROM delle varie distribuzioni pubblicate per la scheda, scaricabili a questo indirizzo. Per il mio scopo, ho utilizzato la release Raspbian, un derivato della Debian.

I primi passi

Per prima cosa, naturalmente, bisognerà creare la scheda SD con la distribuzione linux scelta. La dimensione minima della SD card è 4Gb per alcune distribuzioni, 8 per altre...visti i prezzi, e anche per altri motivi che vedremo in seguito, consiglio di prenderne una il più grande possibile (da 32 gb in su). Dopo aver scaricato il file, sarà necessario scaricare anche il software per la creazione della SD che potrete trovare a questo link per tutti i sistemi operativi, e scrivere l'immagine sulla card.
Una volta creata la SD, inseritela nella Raspberry, collegate il cavo LAN e alimentate la scheda. Il boot richiederà più o meno una ventina di secondi, al termine dei quali vedrete comparire nel vostro elenco delle periferiche collegate una nuova unità. La Raspbian parte configurata in DHCP, quindi la prima cosa da fare sarà recuperare l'indirizzo IP che il router ha assegnato alla scheda, cosa che si può fare in molti modi, normalmente il più semplice è quello di controllare sulla web page del router stesso quali siano i dispositivi connessi, prima e dopo l'accensione della RaspBerry. Nel caso in esame, l'indirizzo era 192.168.1.5, d'ora in poi mi riferirò all'indirizzo della raspberry come [RASP_ADDR]. A questo punto siamo pronti alla prima connessione: aprite una connessione SSH verso [RASP_ADDR], porta ovviamente 22. Se usate windows, putty è il programma che fa per voi. Semplice, e soprattutto free:

putty.png

putty.png



Alla prima connessione da un nuovo PC, riceverete un avviso di sicurezza, accettatelo, e presto vedrete la richiesta di login della raspberry:

sshlogin.png

sshlogin.png


Per default, login e password sono rispettivamente pi e raspberry, effettuate il login:

rasplogin.png

rasplogin.png


Volendo utilizzare la Raspberry come NAS, conviene impostarle un IP statico, perchè se è vero che il DHCP tende ad assegnare sempre lo stesso IP alla stessa periferica, non impostandolo statico richiate che ad un eventuale riavvio la raspberry si trovi con un IP differente, soprattutto se avete anche una WIFI cui si collegano spesso dispositivi mobile. Per impostare lIP statico, bisogna modificare il file /etc/network/interfaces, in questo modo:

  • Verifichiamo la mask della rete:

$sudo ifconfig

netmask.png

netmask.png


Nel caso in esame, la mask è 255.255.255.0, sarà quasi sicuramente così per tutti.

  • Verifichiamo l'indirizzo di gateway:
route.png

route.png


in questo caso, 192.168.1.1. A questo punto, riprogrammiamo il file /etc/network/interfaces con un indirizzo IP della classe giusta, quindi nell'esempio della famiglia 192.168.1.x, diverso ovviamente da quello di gateway. Nel caso in esame, si è scelto l'indirizzo 2, quindi editiamo il file con il comando:
$sudo nano /etc/network/interfaces
Tramite l'editor, eliminiamo la riga (o LE RIGHE, se ce n'è più di una):
iface default inet dhcp
ed aggiungiamo:

		iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Ovviamente, se la vostra rete non è di classe 192.168 ma, per esempio, di classe 10.0, dovrete adattare quanto scrivete alla vostra condizione, così come dovrete stare attenti a scegliere un IP statico che non sia già stato impostato su altri dispositivi.


Montare i dischi

A questo punto, siamo pronti per collegare i dischi (se non l'avete già fatto prima), e montarli sul sistema della raspberry. Per prima cosa, tenete presente che Linux non conosce il file system NTFS in modo nativo, e che comunque lo digerisce male. Se avete degli HD USB vuoti, vi consiglio di formattarli in EXTx, ottenendo così un sistema decisamente più veloce. Scrivo EXTx e non EXT2 o 3 o 4 perchè la scelta fra l'una e l'altra dipende da vari aspetti. La EXT2 è più leggera, e quindi apparentemente più adatta nei dispositivi poco potenti, ma priva di journaling, e quindi più soggetta a perdita dati nel caso di improvvisa interruzione dell'alimentazione. Non ho fatto prove direttamente, ma per via indiretta ho appreso che pare la raspberry vada un po' più in crisi con i file system dotati di Journaling, soprattutto in caso di trasferimenti multipli. Quindi, secondo me, la soluzione migliore è la EXT2 magari dotando l'alimentazione della scheda di una sicurezza, che in questo caso può essere fornita da un qualunque power pack per cellulari, ma se il vostro utilizzo è spesso limitato ad un accesso a singolo file può essere il caso di utilizzare la EXT3 o 4.

  • Ottenere gli UUID dei dischi (ci serviranno in seguito):
    Comando $sudo blkid

Supponiamo di ottenere una cosa del genere (nel vostro caso, probabilmente la dicitura "LABEL" non sarà presente, o sarà poco comprensibile):

blkid.png

blkid.png


Da quanto ottenuto, si apprende l'esistenza di due dischi USB entrambi formattati NTFS (ahimè).
Dovremo quindi procedere all'installazione del demone NTFS, cosa che si può fare velocemente tramite il comando:
Comando $sudo apt-get install ntfs-3g
Una volta terminata l'installazione, siamo pronti a montare i dischi. Supponiamo di voler montare il primo, quello con etichetta "SAMSUNG", che sappiamo essere da due terabytes. Dobbiamo ora ottenere la mappatura che il linux ha fatto dei due dischi in /dev, e lo possiamo fare tramite il comando:
$sudo fdisk -l

Il cui risultato, nel caso in esame, è:

fdisk.png

fdisk.png


Da cui vediamo che un disco da 2Tb è mappato in /dev/sda, e dunque è il nostro obiettivo.

  • Creare un punto di mount

Un punto di mount altro non è che una cartella nel file system che rappresenterà il punto di accesso al device /dev/sda. Normalmente i punto di mount vengono creati in /media o /mnt, scegliamo per questo caso /media. Comando: $sudo mkdir /media/samsung

  • Impostare i permessi e l'owner

La risorsa dovrà essere accessibile in read/write da ogni utente, dunque i permessi e l'owner della cartella non possono essere root/root. Modifichiamoli con i comandi:
Comando $sudo chmod 777 /media/samsung
Comando $sudo chown pi /media/samsung

  • impostare l'automount a seguito di reboot

Per impostare l'automount, si dovrà modificare il file /etc/fstab:
Comando: $sudo nano /etc/fstab Aggiungere in coda la riga:

UUID=VOSTRO_UUID /media/samsung ntfs-3g rw,defaults 0 0

dove, ovviamente, VOSTRO_UUID è l'UUID dell'HD da montare che avete ottenuto prima tramite il comando sudo blkid. Salvate il file e uscite (in nano si fa con CTRL+X, Y maiuscolo e poi ENTER per confermare il nome del file).

  • Montare il disco

Per montare il disco al volo, si può utilizzare il comando mount:
Comando: $sudo mount /dev/sda /media/samsung
Dove ovviamente sda è il device del caso in esame, voi dovrete utilizzare quello trovate tramite il comando sudo fdisk -l.

Proiettare i dischi sulla rete locale

Per condividere le risorse fra una macchina Linux (Raspberry) e le altre vostre macchine di casa, che saranno al 99% Windows, dovrete installare il demone SAMBA.
Comando: $sudo apt-get install samba smbfs
Comando: $sudo apt-get install samba samba-common-bin

Ora, il buon vecchio Zio Bill, con i permessi e i domini ha fatto un gran casino. Questo comporta il fatto che se non prendete alcune particolari azioni, finirete per vedere i dischi in rete ma Windows vi domanderà una password di accesso ad ogni connessione. In questo caso, non era una caratteristica voluta nè desiderata, quindi vi descriverò come evitarlo. Se invece volete proteggere i vostri dati da occhi casalinghi indiscreti, tralasciate tutte le parti qui sotto seguite da (!!).

  • Aggiungere un utente Guest con Home pubblica (!!)

Comando: $sudo adduser guest --home=/home/public --shell=/bin/false --disabled-password
Comando: $sudo chmod -R 0700 /home/public
Comando: $sudo chown -R guest.guest /home/public

  • Configurare il demone samba

la configurazione del demone SAMBA si fa modificando il file smb.conf. Il file è organizzato per sezioni che iniziano tutte con un titolo compreso fra stringhe "###############". Editiamo allora il file:
Comando: $sudo nano /etc/samba/smb.conf

Cerchiamo la linea workgroup = WORKGROUP, sarà probabilmente commentata (un "#" all'inizio della riga). Rimuoviamo il commento.
Cerchiamo ora la sezione ####### Authentication #######, al cui interno faremo le seguenti modifiche:

  • Togliere il commento alla linea security = share
  • aggiungere in coda alla sezione:


  obey pam restrictions = yes
guest account = guest
invalid users = root

E poi un blocco relativo al vostro HD (che nel nostro casosi chiama SAMSUNG ed è montato nella cartella /media/samsung):

[SAMSUNG]
comment = un commento qualunque
read only = no
locking = no
path = /media/samsung
guest ok = yes (!!)
force user = pi (!!)

  • riavviare samba

Comando: $sudo service samba restart

e abbiamo finito.

Conclusioni

le operazioni descritte, che forse ad alcuni poco pratici di Linux potrebbero sembrare complesse, sono in realtà piuttosto semplici e veloci. Il risultato finale, anche nel caso in esame che sfortunatamente presentava due HD formattati NTFS, è un NAS in grado di fornire uno streaming full HD anche contemporaneo su due PC.
Se di interesse di qualcuno, posso integrare questa guida con le istruzioni sull'utilizzo la Raspberry come servizio di DNS dinamico, come server FTP, come server SVN ed anche come downloader Torrent.

10

Commenti e note

Inserisci un commento

di ,

obiuan ha scritto:
Del problema sull'alimentazione ne parlo nel paragrafo "Montare i dischi".
Ho letto il tuo articolo.
Il problema del tuo NAS è che non è robusto nei confronti della mancanza di alimentazione, qualunque tipo di file system usi per i dischi.
Per questo ti serve un UPS intelligente, per dare il tempo al sistema di fare uno shutdown non assistito se manca la rete, altrimenti sei quasi sicuro di perdere i dati.
Se devo fare un NAS, non voglio affidare i miei dati al caso.

obiuan ha scritto:
Per il resto, le complicazioni che si possono aggiungere sono infinite, dipende tutto da cosa ci si deve fare.
Le "soluzioni pronte" in rete normalmente non funzionano, o funzionano parzialmente,o funzionano male,
che è il motivo per cui ho buttato giù queste quattro righe.
Tu hai fatto bene a fare l'articolo, ed è sicuramente molto utile a chi se ne intende meno di te di Linux. E' anche molto interessante l'idea di voler trasformare un RasPi in un NAS.
Io volevo solo indicarti dei miglioramenti per salvaguardare i dati.
Le soluzioni che si trovano in rete sono un po' di tutti i tipi, ci sono quelle che non funzionano, ma anche quelle che funzionano, dipende.
Certamente, senza nulla togliere al tuo articolo, anche altri hanno pensato a come trasformare il RasPi in un NAS e sono venute fuori le problematiche che ti ho riportato. Non tenerne conto significa esporsi a dei problemi che altri hanno individuato.

obiuan ha scritto:
Io ad ottenere il funzionamento esattamente come lo volevo ci ho impiegato qualche ora,
magari con questa guida risparmio le rogne a qualcuno "poco linuxaro" come me :)
Come dicevo prima, e come ti ripeto qui, hai fatto bene a fare il tuo articolo e ti ringrazio. Il mio obiettivo era quello di evidenziare dei possibili problemi e riportare una possibile soluzione, utile a tutti coloro che vogliano realizzare quanto proponi.

Rispondi

di ,

Del problema sull'alimentazione ne parlo nel paragrafo "Montare i dischi". Per il resto, le complicazioni che si possono aggiungere sono infinite, dipende tutto da cosa ci si deve fare. Le "soluzioni pronte" in rete normalmente non funzionano, o funzionano parzialmente, o funzionano male, che è il motivo per cui ho buttato giù queste quattro righe. Io ad ottenere il funzionamento esattamente come lo volevo ci ho impiegato qualche ora, magari con questa guida risparmio le rogne a qualcuno "poco linuxaro" come me :)

Rispondi

di ,

L'articolo è certamente interessante, ma sono molto perplesso dal fatto che non ci sia una protezione UPS per il Raspberry Pi.
Ho provato a cercare online se ci fosse qualcosa di pronto, e ho trovato una soluzione interessante qui.
Rispetto agli altri prodotti che ho trovato, che usano batterie AA o simili, questo ha una batteria al litio, che viene gestita in modo intelligente dal RasPi sia in scarica che in ricarica. La cosa più importante è che venga fatto l'automatic shutdown.
In questa applicazione è vitale garantire che non manchi alimentazione mentre qualcuno sta facendo qualche operazione sui dischi, specialmente con un sistema Linux, altrimenti si è praticamente certi di perdere tutti i dati, e questo non deve assolutamente avvenire.

Un altro problema è che questa soluzione non garantisce l'integrità dei dati se un disco dovesse andare in failure, perchè non è previsto uno stack RAID.
Sono andato a cercare su www.raspberrypi.org se qualcuno avesse per caso implementato uno stack RAID per RaspPi e la risposta è 42 , hem, sì, visibile qui.
Qui si trova una soluzione pronta per fare uno stack RAID.
Direi che dopodichè ci siamo, seppure senza avere le pretese di un vero NAS, tipo il controllo accessi, i gruppi, il torrent download. Comunque, una volta apportate queste modifiche, senza pretendere troppo, si ha un oggetto usabile e dalle prestazioni interessanti.
La buona idea di obiuan è stata quella di pensare all'idea.
Ciao,
Pietro.

Rispondi

di ,

Rispondi

di ,

Interessante giocattolo. Grazie

Rispondi

di ,

@darkstar55

Installare Hiawatha su Raspberry PI è una operazione semplice che si può effettuare in due modi : o compilare i sorgenti oppure ricorrere ad un pacchetto binario precompilato. La seconda opzione è più rapida, lo svantaggio è che il pacchetto disponibile non sempre corrisponde all'ultima versione rilasciata dallo sviluppatore.

A chi volesse dedicarsi alla compilazione, consiglio la guida disponibile a questo indirizzo :
https://www.hiawatha-webserver.org/forum/topic/1214

Se invece decidete di partire da un pacchetto precompilato, scaricatelo pure da qui http:
//puppylinux.ath.cx:4085/hiawatha_9.4_armhf.deb
(il pacchetto in questione si trova su di un Raspberry PI sul quale gira appunto Hiawatha).

Una volta scaricato, date il comando
dpkg -i hiawatha_9.4_armhf.deb
(ovviamente, se avete la versione x.x il comando diventa dpkg -i hiawatha_x.x_armhf.deb )

Potete testare che tutto sia andato a buon fine col comando hiawatha -k

Il risultato dovrebbe essere qualcosa di simile :

Using /etc/hiawatha
Reading hiawatha.conf
Reading /etc/mime.types
Configuration OK.

Per mandare in esecuzione il server date il comando hiawatha
A questo punto se aprite un browser all'indirizzo 127.0.0.1 dovreste vedere una pagina che conferma che il server è in esecuzione.
Per fermarlo, il modo più semplice è dare il comando killall hiawatha
Se l'argomento è di interesse, posso parlarvi di come configurare il server tramite il file hiawatha.conf

Rispondi

di ,

Grazie davvero per questa tua ottima disamina sull'uso di Raspberry. Io sarei davvero interessato a vedere La Raspberry come servizio di DNS dinamico, come server FTP, come server SVN ed anche come downloader Torrent. Ed anche come servere web (grazie anche a umberto1966 per la sua segnalazione) etc... etc... Lavoro in un Istit. Professionale e quindi oltre al risparmio su apparecchiature di rete da comprare, ci sarebbe una parte didattica fortissima sulle tematiche di networking, linux e Internet. Interessante sarebbe anche il suo uso nella controllistica, fattibile tramite il suo General Bus disponibile Grazie ancora, spero di rileggerti presto. Francesco

Rispondi

di ,

Grazie a MassimoB e umberto1966 per i complimenti e le informazioni. E grazie anche ad angus che mi ha segnalato via messaggio alcune sviste che ho corretto.

Rispondi

di ,

Ottima guida! Se a qualcuno interessasse fare anche un webserver col raspberry posso consigliare il server Hiawatha, leggero e completo. Decisamente più semplice da configurare di Apache https://www.hiawatha-webserver.org/ i binari per raspberry sono qui : http://puppylinux.ath.cx:4085/hiawatha_9.4_armhf.deb

Rispondi

di ,

Complimenti

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.