Table des matières

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

Première étape

  1. Assurez-vous que tout est à jour avec

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

    puis redémarrez.

  2. 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».

  1. 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'effacer
    • Tapez 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 commande
  2. Ré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:~ $ 

  3. Installez mdadm, le logiciel de gestion RAID :

    pi@framboise4:~ $ sudo apt install mdadm

  4. 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.

  5. 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.

  6. Créez les répertoires de montage :

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

  7. 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 

  8. Montez les nouvelles partitions :

Conclusion

Problèmes connus

Voir aussi


Basé sur « Build your own NAS » par PJ Evans.