Construisez votre propre NAS

Un NAS est un périphérique de stockage de films, photos, musique et autre, accessible depuis n'importe où sur le réseau auquel il est connecté.

Pré-requis

Un Raspberry avec sa carte Sd, installé et accessible pas SSH.2 Clés USB externes ou 2 disques avec un hub USB 3.0 alimentéGigabit Ethernet (recommended)

Première étape

Assurez-vous que tout est à jour avec

pi@framboise:~ $ sudo apt update && sudo apt -y upgrade

puis redémarrez.Branchez vos lecteurs de disque USB sur le hub USB 3.0 alimenté connecté à votre Raspberry Pi. Laissez au système quelques secondes puis entrez :

pi@framboise4:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 250G 0 disk
└─sda1 8:1 1 250G 0 part
sdb 8:16 1 250G 0 disk
└─sdb1 8:17 1 250G 0 part
mmcblk0 179:0 0 59,6G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 59,4G 0 part /

Cette commande informe sur les périphériques connectés au système.Celui qui commence par «mmcblk0» est la carte microSD contenant Raspbian. sda et sdb sont les deux disques USB. B).

Autres étapes

La méthode RAID protège les données en les dupliquant sur plusieurs disques. Nous le plus simple : RAID 1, ou mise en miroir. Tout ce qui est écrit sur un disque est automatiquement écrit sur l'autre.

En cas de panne d'un disque, votre NAS continue de fonctionner et vous ne perdez rien : remplacez le disque défectueux dès que possible et la matrice est «reconstruite».

Partitionnez les disques avec fdisk :

pi@framboise4:~ $ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 250 GiB, 268436504576 bytes, 524290048 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdecc595d
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 524290047 524288000 250G 83 Linux
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-524290047, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-524290047, default 524290047):
Created a new partition 1 of type 'Linux' and of size 250 GiB.
Partition #1 contains a vfat signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
pi@framboise4:~ $

À la demande de commande,Tapez p pour voir les partitions existantes.S'il y a une partition,tapez d pour l'effacerTapez n pour une créer nouvelle partition puis répondez ↵ Entrée aux questions pour accepter les valeurs par défaut et Y s'il est proposé d'effacer une signature.Au retour à l'invite de commande, tapez w pour écrire les modifications sur le disque.fdisk quitte et revient à l'invite de commandeRépétez le processus pour le deuxième lecteur :

pi@framboise4:~ $ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sdb: 250 GiB, 268436504576 bytes, 524290048 sectors
Disk model: STORAGE DEVICE
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdecc595d
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 524290047 524288000 250G 83 Linux
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-524290047, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-524290047, default 524290047):
Created a new partition 1 of type 'Linux' and of size 250 GiB.
Partition #1 contains a vfat signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
pi@framboise4:~ $

Installez mdadm, le logiciel de gestion RAID :

pi@framboise4:~ $ sudo apt install mdadm

Demandez maintenant à mdadm de créer la matrice RAID-1 (répondez Y pour accepter) :

pi@framboise4:~ $ sudo mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 262011904K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Raspbian voit désormais les deux disques physiques comme un seul périphérique. Partitionnez le nouveau lecteur virtuel (ici, nous créons 3 partitions) :

pi@framboise4:~ $ sudo fdisk /dev/md0
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
The old ext4 signature will be removed by a write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xd399b01c.
Command (m for help): p
Disk /dev/md0: 249,9 GiB, 268300189696 bytes, 524023808 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
Disklabel type: dos
Disk identifier: 0xd399b01c
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-524023807, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-524023807, default 524023807): +100G
Created a new partition 1 of type 'Linux' and of size 100 GiB.
Command (m for help): p
Disk /dev/md0: 249,9 GiB, 268300189696 bytes, 524023808 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
Disklabel type: dos
Disk identifier: 0xd399b01c
Device Boot Start End Sectors Size Id Type
/dev/md0p1 2048 209717247 209715200 100G 83 Linux
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (2-4, default 2):
First sector (209717248-524023807, default 209717248):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (209717248-524023807, default 524023807): +96G
Created a new partition 2 of type 'Linux' and of size 96 GiB.
Command (m for help): p
Disk /dev/md0: 249,9 GiB, 268300189696 bytes, 524023808 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
Disklabel type: dos
Disk identifier: 0xd399b01c
Device Boot Start End Sectors Size Id Type
/dev/md0p1 2048 209717247 209715200 100G 83 Linux
/dev/md0p2 209717248 411043839 201326592 96G 83 Linux
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (3,4, default 3):
First sector (411043840-524023807, default 411043840):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (411043840-524023807, default 524023807):
Created a new partition 3 of type 'Linux' and of size 53,9 GiB.
Command (m for help): p
Disk /dev/md0: 249,9 GiB, 268300189696 bytes, 524023808 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
Disklabel type: dos
Disk identifier: 0xd399b01c
Device Boot Start End Sectors Size Id Type
/dev/md0p1 2048 209717247 209715200 100G 83 Linux
/dev/md0p2 209717248 411043839 201326592 96G 83 Linux
/dev/md0p3 411043840 524023807 112979968 53,9G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Créez les répertoires de montage :

pi@framboise4:~ $ sudo mkdir -p /media/{home,data,nas}

Formatez et montez les partitions du nouveau lecteur virtuel :

pi@framboise4:~ $ sudo mkfs.ext4 -O ^has_journal -L home /dev/md0p1
mke2fs 1.44.5 (15-Dec-2018)
/dev/md0p1 contains a ext4 file system labelled 'home'
created on Sat Aug 22 20:02:26 2020
Proceed anyway? (y,N) y
Creating filesystem with 26214400 4k blocks and 6553600 inodes
Filesystem UUID: e659b8c1-36fb-4bb3-9e8f-50c2db9d2335
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
pi@framboise4:~ $ sudo mkfs.ext4 -O ^has_journal -L data /dev/md0p2
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 25165824 4k blocks and 6291456 inodes
Filesystem UUID: 41d98dbc-d710-4a9c-bfb4-0fb6463238a1
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
pi@framboise4:~ $ sudo mkfs.ext4 -O ^has_journal -L nas /dev/md0p3
mke2fs 1.44.5 (15-Dec-2018)
Creating filesystem with 14122496 4k blocks and 3530752 inodes
Filesystem UUID: 93e7445d-5004-4517-ad3b-c6f5b128d653
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

Montez les nouvelles partitions :

Conclusion

Problèmes connus

Voir aussi

(fr) https://www.framboise314.fr/docs/MagPi85.pdf

Basé sur << Build your own NAS >> par PJ Evans.