white.h4t.eu

Ici c'est Linux, plaintext et pentest.

NAS Maison : Raspberry Pi 4 + Quad Sata HAT

April 11, 2020 — ebsd

En complément de mon serveur VPS en ligne, j'ai récemment acquis un Raspberry Pi 4 et un Quad Sata Hat. Ce dernier permet de connecter jusqu'à 4 disques SATA 2,5p au Raspberry Pi. Parfait pour un RAID qui sécurise mes données. Celles-ci sont synchronisées entre le VPS et le Pi via Syncthing. Je dispose ensuite de backups incémentaux effectués sur les disques du RAID grâce à rsync. Voici quelques infos pour la mise en route du Quad Sata Hat et d'un RAID1 logiciel sous Raspbian. Pour l'exercice, nous devons créer ce RAID mirroir sur 2 disques sans perdre les données déjà présentes sur un des deux disques. Voici une modeste représentation visuelle de mon installation.

<------+  CLOUD  +----->             <---+ HOME +--->
rclone         ___                       ___
crypt         +===+     Syncthing       +===+
+-----------+ |VPS|  <---------------+> |Pi |
|             +___+                  |  +___+
|               ^                    |
|               | syncthing          |  ++ ++ 2 HDD    ++ ++ 2 HDD
v               |                    +> || || RAID1    || || RAID1
gdrive          v                       ++ ++          ++ ++
              Laptop                      +   rsnapshot  ^
                                          +--------------+

Le Quad Sata Hat est disponible ici.

Installation du Quad Sata HAT sur raspbian

Script d'installation :

curl -sL https://rock.sh/get-rockpi-sata | sudo -E bash -

On obtient un nouveau dossier :

/usr/bin/rockpi-sata

Et un fichier de configuration, voir détails plus bas [1]

/etc/rockpi-sata.conf

Comment créer un RAID1 dont 1 des 2 disques contient déjà mes donneés ?

Je dispose de deux disques :

  • /dev/sda = disque contenant mes données
  • /dev/sdb = nouveau disque vièrge

On installe les outils de gestion du RAID:

apt-get install mdadm

On démonte les disques :

umount /mnt/disk1
umount /mnt/disk2

On utilise sfdisk pour dupliquer la configuration des partitions du disque sda vers le disque sdb.

sfdisk -d /dev/sda | sfdisk /dev/sdb

Utilisons maintenant mdadm pour créer un RAID1. On marque le premier disque sda comme "manquant" pour que les données du disque ne soient pas écrasées par la construction du RAID.

mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1

On formatte le nouveau RAID :

mkfs.ext4 /dev/md0

On monte le RAID :

mkdir /mnt/raid1
mount /dev/md0 /mnt/raid1

Copions le contenu du disque /dev/sda1 dans /dev/md0.

mount /dev/sda1 /mnt/disk1
rsync -rtavz --delete /mnt/disk1/ /mnt/raid1/

Démontons le disque que nous allons ensuite activer dans le RAID1.

umount /mnt/disk1

Inrégrer le disque 1 au RAID

mdadm --add /dev/md0 /dev/sda1

Le RAID va se construire, ce que nous pouvons suivre ainsi :

cat /proc/mdstat

[1]: Fichier /etc/rockpi-sata.conf

[fan]
# When the temperature is above lv0 (35'C), the fan at 25% power,
# and lv1 at 50% power, lv2 at 75% power, lv3 at 100% power.
# When the temperature is below lv0, the fan is turned off.
# You can change these values if necessary.
lv0 = 35
lv1 = 40
lv2 = 45
lv3 = 50
[key]
# You can customize the function of the key, currently available functions are
# slider: oled display next page
# switch: fan turn on/off switch
# reboot, poweroff
# If you have any good suggestions for key functions, 
# please add an issue on https://rock.sh/rockpi-sata
click = slider
twice = switch
press = none
[time]
# twice: maximum time between double clicking (seconds)
# press: long press time (seconds)
twice = 0.7
press = 1.8
[slider]
# Whether the oled auto display next page and the time interval (seconds)
auto = true
time = 10
[oled]
# Whether rotate the text of oled 180 degrees, whether use Fahrenheit
rotate = false
f-temp = false

Tags: raspberry, linux

Comments? Tweet