Hard disk e SSD in configurazione RAID con una Raspberry Pi

Come collegare hard disk e SSD alle porte USB della Raspberry Pi e usarli per la memorizzazione dei dati in rete locale, anche in configurazione RAID.

La scheda Raspberry Pi 4, delle dimensioni di una carta di credito, integra quattro porte USB: due USB 3.0 (quelle con il connettore blu) e due USB 2.0.
Oltre alle tante possibilità di utilizzo del single-board computer delle quali abbiamo già parlato e delle innumerevoli delle quali non abbiamo ancora fatto menzione, la Raspberry Pi può essere utilizzata anche per condividere in rete capienti supporti per lo storage dei dati come hard disk e SSD eventualmente configurabili in RAID (Evitare perdite di dati: come configurare RAID) fungendo così da server NAS.

Nel caso in cui si decidessero di collegare alle porte USB della Raspberry Pi più unità di memorizzazione esse potranno essere di qualunque dimensione e realizzate da qualsiasi produttore se si fosse interessati esclusivamente a condividere in rete alcune cartelle.
Diversamente, se si volesse attivare RAID 0 o RAID 1 (rispettivamente, creare un’unica unità per lo storage con lo spazio disponibile che è la somma di quello offerto su ciascun supporto; fare in modo che la seconda unità effettui una copia speculare del contenuto della prima) è essenziale che le unità per lo storage abbiano le stesso caratteristiche e siano preferibilmente realizzate dallo stesso produttore.

Per cominciare il nostro consiglio è collegare, l’una dopo l’altra, le varie unità a un PC Windows quindi formattarle usando il file system NTFS: Differenza tra formattazione veloce e completa in Windows.
A ciascuna unità si possono assegnare etichette del tipo STORAGE01, STORAGE02 e via dicendo in modo da renderle facilmente riconoscibili.

Dalla finestra del terminale della Raspberry Pi è poi bene innanzi tutto richiedere l’aggiornamento di tutti i pacchetti già installati:

sudo apt update && sudo apt -y upgrade

Digitando il comando sudo blkid si otterrà la lista delle unità USB collegate alla Raspberry Pi insieme con le rispettive etichette (LABEL) assegnate in precedenza.

Nel caso in cui si fosse interessati a predisporre una configurazione in RAID 0 o RAID 1, bisognerà impartire il comando seguente:

sudo apt-get install mdadm -y

Se si fosse interessati ad allestire una configurazione RAID 0 o RAID 1 si può continuare con la lettura dei paragrafi successivi altrimenti si può saltare direttamente al paragrafo Condividere la cartelle con Samba.

Come impostare una configurazione RAID 0 con la Raspberry Pi

Se si volesse creare un’unica grande unità per lo storage dei dati usando lo spazio disponibile su ciascun supporto USB collegato alla Raspberry Pi, è possibile usare la seguente sintassi:

sudo mdadm --create --verbose /dev/md/vol1 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1

Notare che in questo caso si è scelto di abbinare le unità USB contraddistinte dagli identificativi /dev/sda1 e /dev/sdb1 per creare un’unica unità per la memorizzazione dei dati in RAID 0.

Usando il comando seguente si sarebbe ad esempio potuto allestire una configurazione RAID 0 abbinando quattro unità USB:

sudo mdadm --create --verbose /dev/md/vol1 --level=0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Come impostare una configurazione RAID 1 con la Raspberry Pi

Viceversa, se si fosse interessati a usare due unità USB collegate alla Raspberry Pi configurando la seconda per l’effettuazione di un backup in tempo reale del contenuto della prima, è possibile usare il comando che segue:

sudo mdadm --create --verbose /dev/md/vol1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Confermare l’array RAID, salvare la configurazione, formattare con ext4

In entrambi i casi, sia nel caso in cui si fosse optato per RAID 0 che per RAID 1, si dovrà innanzi tutto confermare la creazione dell’array quindi memorizzare la configurazione:

sudo mdadm --detail /dev/md/vol1
sudo -i
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
exit

Digitando nano /etc/mdadm/mdadm.conf e scorrendo il file, in fondo allo stesso si dovrebbe trovare il riferimento ARRAY /dev/md/vol1 che conferma l’avvenuta creazione dell’array RAID.

Una volta creato l’array, è possibile formattare il volume 1 usando ad esempio il file system ext4 direttamente supportato da Linux:

sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md/vol1

In questo caso abbiamo chiesto di formattare con ext4 usando 4096 KB come dimensione del singolo cluster (per le altre preferenze vedere questa pagina di supporto).

Come passaggio finale, si potrà finalmente montare il volume e verificarne l’effettiva presenza:

sudo mount /dev/md/vol1 /mnt
sudo blkid

Il comando fstab, nei sistemi Unix e Unix-like elenca tutti i dischi e le partizioni disponibili e come essi debbano essere montati o gestiti al fine della loro integrazione a livello di file system.
Con il comando seguente bisognerà modificare la tabella delle informazioni:

sudo nano /etc/fstab

Nella riga antecedente il commento # a swapfile is not a swap partition, no line here bisognerà aggiungere:

UUID=uuid_vol_raid /mnt ext4 defaults 0 0

Al posto di uuid_vol_raid bisognerà inserire l’identificativo estratto dal comando sudo blkid in corrispondenza di /dev/md/vol1 (non riportare le doppie virgolette).
Salvare le modifiche premendo prima CTRL+O quindi CTRL+X per uscire dall’editor di testo.

Condividere la cartelle con Samba

Se si fosse configurato un array RAID come spiegato ai passaggi precedenti, il volume corrispondente risulterà già montato (proseguire al paragrafo seguente Usare Samba per condividere file e cartelle in rete locale).

Se invece si fosse collegato un unico hard disk o una capiente unità SSD alla Raspberry Pi si potrà usare la sintassi che segue:

sudo mkfs.ext4 -L STORAGE01 /dev/sda1
sudo mount /dev/sda1 /mnt

Attenzione perché il primo comando formatterà l’unità USB specificata (/dev/sda1) con il file system ext4 cancellando tutti i dati in essa eventualmente presenti. Sarà inoltre assegnata l’etichetta STORAGE01.
Lo si potrà verificare impartendo di nuovo il comando sudo blkid.

Digitare quindi sudo nano /etc/fstab e nella riga antecedente il commento # a swapfile is not a swap partition, no line here incollare quanto segue:

UUID=uuid_dev /mnt ext4 defaults 0 0

Al posto di uuid_dev bisognerà inserire l’identificativo estratto dal comando sudo blkid in corrispondenza di /dev/sda1 (non riportare le doppie virgolette).
Premere CTRL+O quindi CTRL+X per salvare la modifica.

Usare Samba per condividere file e cartelle in rete locale

Sia che si fosse allestito un array RAID che montata la singola unità esterna USB, si dovrà scrivere quanto segue:

sudo chown -R pi:pi /mnt
sudo chmod -R 0777 /mnt

Questo perché per default l’utente root detiene il controllo del file system /mnt senza permetti di lettura/scrittura.

Samba è un progetto libero che implementa i servizi di condivisione di file e stampanti SMB/CIFS.

Con i due comandi che seguono si potrà installare Samba e fare in modo che l’utente pi possa iniziare a condividere risorse in rete locale:

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

Alla comparsa della schermata riprodotta in figura scegliere .

Dopo aver specificato una password per la condivisione in rete, modificare il file di configurazione di Samba:

sudo nano /etc/samba/smb.conf

Scorrerlo fino in fondo quindi inserirvi quanto segue:

[NAS]
path = /mnt
comment = Rasperry Pi NAS
valid users = pi
writable = yes
browsable = yes
create mask = 0777
directory mask = 0777

Premere al solito CTRL+O, CTRL+X per salvare e uscire dall’editor di testo.

Come ultimo passo, si può riavviare Samba per rendere attive le modifiche:

sudo systemctl restart smbd

A questo punto è tutto pronto e premendo ad esempio la combinazione Windows+R su qualunque sistema Windows collegato in rete locale quindi scrivendo \\raspberrypi (sostituendo raspberrypi con il nome del dispositivo; si può trovare digitando hostname al prompt), verrà proposta la cartella condivisa dal nome NAS.

Digitando pi come nome utente e la password scelta in precedenza (comando sudo smbpasswd -a pi), si accederà immediatamente in lettura e scrittura all’array RAID oppure all’unità USB connessa alla scheda Raspberry Pi.

In alternativa o in aggiunta al semplice Samba è possibile usare il software OpenMediaVault del quale abbiamo già parlato: OpenMediaVault, cos’è e come costruire un NAS da soli.
Sulla Raspberry Pi si può eventualmente installare usando il comando seguente:

wget -O https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

Come ultimo passo basterà collegarsi al pannello di configurazione di OpenMediaVault dal browser web usando un altro dispositivo connesso in rete locale.

Ti consigliamo anche

Link copiato negli appunti