Trasformare un Raspberry Pi in un disco di rete (NAS)

Questo articolo è stato pubblicato da circa 8 anni . Le informazioni che seguono potrebbero non essere attuali.

Continuiamo la nostra serie delle semplici guide pratiche al Raspberry Pi andando a configurare un piccolo NAS domestico.

NAS è l’acronimo di Network Attached Storage, che tradotto nella pratica consiste in un hard disk collegato alla nostra rete locale (domestica o aziendale). I vantaggi nell’avere un disco condiviso in rete sono, prima di tutto il poter  scrivere e leggere file su un hard disk sempre disponibile in rete ed accessibile da qualsiasi dispositivo (computer, tablet e smartphone), l’altro grande vantaggio è il bassissimo consumo di energia elettrica rispetto all’impiego di un comune PC (che è anche più rumoroso).

Per procedere con la guida e realizzare un semplice NAS abbiamo bisogno principalmente di tre cose cose:

  1. Essere in possesso di un Raspberry Pi modello B, ovviamente!
  2. Aver effettuato le configurazioni di base sul nostro Raspberry Pi, che sono riportate nella nostra precedente guida: [Raspberry Pi] – Guida pratica alla configurazione di base
  3. Disporre di un hard disk usb esterno, preferibilmente con alimentazione dedicata. L’uso di hard disk alimentati via usb potrebbero soffrire di una non ottimale alimentazione che richiederebbe l’impiego di un hub usb (con alimentazione esterna!) per il collegamento tra hard disk e Raspberry Pi.

[1] – CONFIGURAZIONE DELL’HARD DISK

La primissima operazione da fare per la realizzazione del nostro NAS consiste nella formattazione dell’hard-disk che implica la scelta del “file system” da utilizzare. Il nostro consiglio è quello di utilizzare il file system Linux EXT4, ed i motivi posso essere riassunti nei seguenti punti:

  1. Il file system FAT è da escludere a prescindere, soprattutto se utilizzeremo un hard disk molto capiente. Il motivo è che questa formattazione non permette la scrittura di file di dimensioni superiori ai 4GB ed ha un limite teorico di dimensioni che arriva ai 2TB. Il FAT lo lasciamo alle pendrive usb.
  2. Il file system NTFS di Windows sarebbe comodo se volessimo staccare il nostro disco dal Raspberry e collegarlo ad un PC per scriverci e leggere i dati, ma nell’uso in ambiente Linux, oltre ad essere meno performante perché più lento in scrittura e fa lavorare molto la CPU, non ci permette di utilizzare la gestione dei permessi su file e cartelle, permessi che ci possono essere molto utili sia alla sicurezza dei dati che ad una eventuale creazione di cartelle del NAS riservate ad utenti diversi.

Quindi, scelto il file system EXT4, dobbiamo trovare il modo di formattarlo, ed a tal proposito, vedremo come farlo sia con un software in ambiente Windows, sia dal terminale del Raspberry.

La formattazione del disco in ambiente Windows si fa utilizzando un software gratuito chiamato MiniTool Partition Wizard Home Edition. Il software è abbastanza semplice da utilizzare, ed è molto somigliante ad altri software di partizionamento in circolazione, ma in più supporta il file system EXT4. Basterà selezionare il vostro hard disk dal software, cancellare le partizioni esistenti, crearne una nuova EXT4 nominandola a vostro piacimento, applicare le modifiche, ed attendere il completamento delle operazioni.

Creazione di una nuova partizione EXT4
Creazione di una nuova partizione EXT4

Per effettuare la formattazione dal terminale del Raspberry, procediamo con la guida, e tra qualche riga vi verrà mostrato come farla.

A questo punto siamo pronti per collegare l’hard disk al Raspberry e “montarlo” nel sistema, per farlo abbiamo ovviamente bisogno di accedere terminale del Raspberry (direttamente o via SSH), come spiegato nella guida base (Guida pratica alla configurazione di base).

Dopo aver collegato il disco usb al Raspberry, assicurandosi che il disco sia alimentato, digitiamo nel terminale il comando per vedere l’elenco dei dischi rigidi disponibili:

sudo fdisk -l

La schermata che vi troverete di fronte sarà la seguente:

9-fdisk-l

I primi due “dev” della lista, contrassegnati con “mmcblk0p” sono le due partizioni della nostra scheda SD contenente il sistema operativo, mentre il “dev” in fondo alla lista (indicato dalla freccia rossa) è il nostro hard disk usb. E’ molto importante conoscere il suo nome, che nel nostro caso è sda1. Ora il disco è visibile dal sistema operativo, ma non è ancora disponibile alla lettura/scrittura perché non è stato “montato”. Il “montaggio” consiste nell’assegnare il disco usb ad una cartella del nostro sistema.

Se non abbiamo usato il software di formattazione in ambiente Windows, questo è il momento di procedere con la formattazione da terminale. Ovviamente, chi ha formattato con il software Partition Wizard dovrà saltare questo passaggio. Tornando alla formattazione, avendo individuato il nome del nostro disco usb (sda1), lo formattiamo con il seguente comando:

sudo mkfs.ext4 /dev/sda1 -L etichetta

Sostituite pure la parola “etichetta” con un nome a vostra scelta. A questo punto procediamo con il “montaggio” del disco.

Per effettuare il montaggio, per prima cosa creiamo una cartella dal nome “nas” (o con altro nome a vostra scelta) dentro la cartella già esistente “media” su cui andare a montare l’hard disk . In questo modo, grazie al nome “nas” ci ricorderemo che su quella cartella andrà ad agganciarsi il contenuto del nostro disco usb. Per creare la cartella digitiamo il comando:

sudo mkdir /media/nas

poi diamo i permessi di scrittura all’utente “pi” nella cartella “nas”

sudo chown -R pi:pi /media/nas
sudo chmod 770 /media/nas

quindi, a questo punto possiamo effettuare il “montaggio” del disco usb attraverso il comando “mount”:

sudo mount /dev/sda1 /media/nas

per verificare che il disco sia montato correttamente andiamo nella cartella “/media/nas”

cd /media/nas
ls

Al momento il disco è ovviamente vuoto, anche se potrete trovare una cartella chiamata “lost+found” che è una cartella di “servizio” usata dal sistema operativo e di cui non dovremo curarci.

11-disco-montato

C’è ancora un’altra operazione da fare per finire di configurare l’hard disk, e serve a fissare questa operazione di montaggio del disco nella cartella “nas”. Infatti, se riavviassimo il Raspberry adesso, perderemo le configurazioni effettuate. Per salvare il “montaggio” automatico dell’unità disco, andiamo ad editare il file fstab con l’editor Nano.

sudo nano /etc/fstab

Una volta aperto l’editor, andiamo ad aggiungere al file la seguente riga (non usate lo spazio per distanziare i valori, ma il tasto di tabulazione!) :

/dev/sda1       /media/nas      ext4    defaults        0       0

Nell’immagine sottostante potete vedere sottolineata la riga che dovrete aggiungere. Una volta fatto, salvate (ctrl+x) e chiudete l’editor. Al prossimo riavvio il disco verrà montato automaticamente.

10-fstab

Ora l’hard disk è finalmente configurato, ma prima di passare alla seconda parte della guida è bene sapere alcune informazioni importanti sul “montaggio” e lo “smontaggio” delle unità disco:

  1. E’ buona regola collegare ed accendere prima le unità disco, poi come ultima cosa accendere il Raspberry.
  2. Se vi scordate di accendere e/o collegare l’unità disco prima dell’avvio del Raspberry, al momento del collegamento del disco non lo vedrete montato, bisognerà dare il comando “sudo mount -a” per far si che il sistema ricarichi il file fstab che contiene le informazioni per il montaggio automatico dell’unità disco.
  3. Se non volete editare il file fstab dovrete “montare” l’unità ad ogni avvio con il comando visto precedentemente, ed è altamente raccomandato di “smontare” l’unità ad ogni spegnimento con il comando “sudo umount /dev/sda1” per evitare di non interrompere scritture in corso (un po’ come accade per la “Rimozione Sicura dell’Hardware“).

[2] – INSTALLAZIONE e CONFIGURAZIONE di SAMBA

Samba è un software multipiattaforma, molto diffuso per la condivisione di file e stampanti, di cui ci serviremo per rendere disponibili i contenuti del nostro hard disk nella nostra rete locale. Samba andrà installato solo sul nostro Raspberry, perché collegandoci da un PC  Windows o da un Mac avremo già tutto l’occorrente per accedere al NAS come se fosse un disco fisso installato nel proprio computer. Per quanto riguarda i dispositivi mobili, tablet e smartphone, basterà scegliere una delle tante app del tipo “file manager” che supporti Samba.

Partiamo quindi con l’installazione, prima aggiorniamo la lista dei pacchetti del repository, poi installiamo Samba digitando i seguenti comandi:

sudo apt-get update
sudo apt-get install samba samba-common-bin

Ovviamente vi verrà chiesta la conferma per l’installazione di Samba, confermate digitando Y. samba-installazione

Una volta terminata l’installazione, dovremo andare a modificare il file di configurazione di Samba per far si che il nostro disco usb venga condiviso in rete. E’ buona regola fare sempre un backup del file di configurazione originale, così se commettiamo degli errori, possiamo sempre ripristinare l’originale e ripartire da quello per fare le nostre modifiche. Il file di configurazione smb.conf si trova nel percorso /etc/samba, quindi andiamo alla cartella con il comando:

cd /etc/samba

Poi facciamo una copia del file di configurazione aggiungendo a questo un “.orig” nel nome per ricordarci che è il nostro originale:

sudo cp smb.conf smb.conf.orig

A questo punto possiamo editare tranquillamente il file di configurazione con l’editor Nano:

sudo nano smb.conf

Il file di configurazione permette di fare diverse cose, noi ci limiteremo allo stretto necessario. Come prima cosa andiamo a decommentare la voce “security = user“. “Decommentare” vuol dire cancellare il simbolo “#” che precede una voce del file di configurazione: cancellando il simbolo il comando viene attivato e viceversa. Per trovare la direttiva potete scorrere il file o aiutarvi con la funzione “Cerca” attivabile con “ctrl+w”. Ecco un esempio della modifica da fare:

# Direttiva commentata, quindi disattivata!
# security = user

# Eliminare il cancelletto per attivare la direttiva!
security = user

samba-security-user Fatto questo, spostatevi alla fine del file in modo da poter aggiungere il testo che segue:

[usb]
comment = Il mio nuovo NAS
path = /media/nas
writeable = yes

In queste poche righe abbiamo creato una risorsa “scrivibile” chiamata “usb” che fa riferimento al percorso del nostro hard disk usb montato precedentemente nel percorso “/media/nas“. Con questo abbiamo completato le modifiche al file di configurazione, possiamo quindi salvare, chiudere l’editor, e riavviare Samba per far si che venga caricata la nuova configurazione. Il comando per riavviare Samba è:

sudo service samba restart

12-configurazione-samba

Manca solo un ultimo pezzettino, ovvero creare una password per l’accesso alla risorsa. Supponiamo di voler utilizzare l’utente di default di Raspberry: l’utente “Pi“. Il comando per la creazione della password è il seguente:

sudo smbpasswd -a [nome_utente]

che nel nostro caso particolare sarà:

sudo smbpasswd -a pi

Ovviamente vi verrà chiesto di digitare la password due volte, ed una volta terminata l’operazione possiamo riavviare di nuovo Samba con il solito comando:

sudo service samba restart

13-samba-add-user

La configurazione del nostro NAS è terminata, ora non ci resta che collegarci da un computer esterno e testarne le funzionalità.

[3] – COLLEGAMENTO al NAS

E’ finalmente ora del primo collegamento al nostro NAS, vedremo com’è possibile farlo su Windows e su Mac tralasciando la connessione da dispositivi mobili, dove ognuno potrà scegliere l’applicazione che preferisce (l’importante è che supporti Samba). Per effettuare il collegamento dobbiamo ricordarci di due cose:

  1. L’indirizzo IP  e l’Hostname Raspberry Pi, che nel nostro esempio sono rispettivamente: 192.168.1.240 RASPBERRYPI
  2. Il nome assegnato alla risorsa nella configurazione di Samba, ovvero, il termine inserito tra parentesi quadre all’inizio del testo che abbiamo aggiunto in coda al file di configurazione di Samba. Noi abbiamo inserito: usb

Quindi, il nostro URL per la connessione, a prescindere dal client in uso,  sarà: smb://192.168.1.240/usb , dove “smb://” sta ad indicare il protocollo Samba per la connessione.

Per collegarci da un PC Windows (nell’esempio usiamo Windows 7), abbiamo due possibilità, dove la prima è sicuramente quella di accedere al NAS navigando tra le “Risorse di Rete”, in cui sarà ben visibile il Raspberry. Facendo doppio clic sulla risorsa di rete verranno chieste le credenziali di accesso (nome utente = pi ; password da voi scelta), ed una volta inserite si verrà collegati al NAS. Può essere comodo salvare il percorso alla risorsa nei “Preferiti” in modo da non dover ogni volta dover passare da “Risorse di Rete” per collegarsi al disco di rete.

14-samba-su-windows

In alternativa, è possibile collegarsi al NAS creando una nuova connessione ad una “Unità di Rete”, basta cliccare sul pulsante Start e scrivere nel campo di ricerca “Connetti unità di rete” e compilare i campi richiesti come nella figura che segue:

15-samba-unità-rete

Per quanto riguarda il campo “Cartella”, in questo caso andremmo ad accedere con un url del tipo “\\Nomeserver\Nomecondivisione“, che nel nostro caso sarà \\RASPBERRYPI\usb. Se non conoscete il Nome Server (hostname) del Raspberry, vi basterà scrivere nel terminale il seguente comando:

hostname

Se invece lo volete modificare, date il comando:

# ESEMPIO: sudo hostname "NomeServer"

sudo hostname RASPBERRYPI

Oltre a questo, è molto importante “spuntare” la voce “Connetti con credenziali diverse” perché altrimenti Windows si aspetterà delle credenziali di un utente locale. A configurazione terminata, troveremo la nostra risorsa di rete elencata nelle “Risorse del Computer”.

Volendoci invece collegare da un computer Apple con sistema operativo Mac, basterà recarsi sul menù del Finder alla voce “Vai“, e selezionare l’ultimo elemento del sotto menù “Connessione al server” (scelta rapida: cmd+k). Si aprirà una finestra in cui inseriremo il nostro URL, poi cliccando il pulsante “Connetti” ci verranno chieste le nostre credenziali (nome utente = pi ; password da voi scelta), dopodiché comparirà una cartella chiamata “usb” sul nostro Desktop e saremo finalmente pronti per utilizzare il nostro NAS.

15b-samba-finder-mac-osx

Questa semplice guida termina qui, e rappresenta un primo punto di partenza per la configurazione di un semplice NAS per ambienti domestici o piccoli uffici. Come accennato in precedenza, c’è la possibilità di aggiungere diverse funzionalità, come la configurazione all’accesso di più utenti o gestire il backup dei dati. In rete si trovano molti esempi e guide, quindi con un po’ di pazienza troverete tutte le informazioni necessarie a personalizzare ulteriormente il vostro NAS in base alle vostre esigenze.

6 pensieri riguardo “Trasformare un Raspberry Pi in un disco di rete (NAS)

  • 30 Luglio 2014 in 12:38
    Permalink

    ricevo il messaggio Autorizzazioni insufficienti per accedere a raspberry pi

    Rispondi
    • 1 Settembre 2014 in 08:44
      Permalink

      ricevi il messaggio al momento del collegamento da windows? I problemi possono essere due: 1 – ti stai collegando con un’utente windows? E’ importante “spuntare” la voce “Connetti con credenziali diverse” perché altrimenti Windows si aspetterà delle credenziali di un utente locale. 2 – potrebbe essere un problema di permessi su raspberry, sei sicuro che l’utente rasperry con cui accedi ha accesso alla cartella prestabilita per samba? io verificherei con un “ls -ltr” per capire se il tuo utente è proprietario della cartella condivisa

      Rispondi
  • 3 Ottobre 2014 in 08:48
    Permalink

    Ston con windows. Posso accedere al nas tramite internet, quindi in remoto?
    Grazie, bell articolo

    Rispondi
    • 3 Ottobre 2014 in 19:56
      Permalink

      con samba si fa fatica ad accedere da remoto, molto meglio fare una WebDAV, ovvero servirsi di un web server:

      Rispondi
  • 21 Gennaio 2015 in 13:53
    Permalink

    Al momento di verificare che il disco sia stato montato correttamente non riesco ad accedere alla cartella “cd /media/nas”. Ottengo il seguente messaggio “access denied”. Come posso risolvere?

    Rispondi
    • 22 Gennaio 2015 in 09:13
      Permalink

      controllerei l’effettiva creazione, mount e permessi della cartella. facendo un “ls -ltr” dalla cartella /media, c’è effettivamente la cartella nas? con quali permessi e proprietà?

      Rispondi

Rispondi