Connecter un disque dur

On l’a dit plus haut, le cœur de notre système, ce sont ses données. Et ces données, on va préférer ne pas les mettre sur la carte micro-SD de notre Raspberry Pi, car cette carte est un support beaucoup moins fiable qu’un disque dur. En effet, les cellules de stockage des données des cartes SD ne peuvent subir qu’un nombre limité de réécriture avant de perdre leur capacité d’enregistrement. A ce moment-là, certaines données peuvent se corrompre.

Donc nous allons limiter notre carte micro-SD au système, et installer les données sur un disque externe. N’oubliez pas de faire une sauvegarde de vos données sur un autre support pour ne pas tout perdre en cas de fausse manip.

Précisons aussi que la puissance électrique que notre Raspberry Pi peut fournir aux appareils qui lui sont connectés en USB est limitée. Elle ne sera généralement pas suffisante pour alimenter un disque sur mécanique (elle le sera par contre pour un disque SSD). Il faudra donc investir dans un disque auto-alimenté ou dans un hub USB lui-même auto-alimenté. Si vous voulez construire un système robuste qui tienne sur la durée avec un disque dur actif en permanence, je vous conseille un disque dur 3″5 de qualité NAS et son boîtier auto-alimenté ; ce dernier est généralement livré avec le câble USB de connexion au Pi.

Je ne vais pas m’étendre sur la méthode à mettre en œuvre pour formater le disque et y copier les données. Retenez que le format préféré de Linux est EXT4, mais que Linux sait lire également les données formatées par Windows en NTFS ou FAT32. Nous partirons de l’hypothèse d’un disque formaté en EXT4 dans la suite de cet article.

Les ingrédients de notre recette seront donc, en complément de ceux déjà utilisés dans les étapes précédentes :

  • un disque dur,
  • son boîtier auto-alimenté,
  • son câble USB.

Pour connecter un disque dur à notre Raspberry Pi, nous allons commencer par insérer le disque dans son boîtier et le brancher à son alimentation électrique. Avec le Pi éteint, nous allons insérer le câble USB du disque dur sur un port USB (de préférence 3.0, de couleur bleue). Et nous allons rallumer le Raspberry en insérant la prise USB-C d’alimentation du PI, puis nous y connecter

ssh k-sper.fr@raspberrypi.local

Nous allons lister les disques disponibles avec la commande lsblk (afficher les périphériques bloc, c’est comme ça qu’on appelle les disques).

lsblk

Que nous dit le résultat de cette commande ?

Que nous avons deux périphériques physiques : le disque externe (sda), qui dispose d’une unique partition (sda1 ; sur votre système, les identifiants peuvent être différents), et la carte micro-SD (mmcblk0) qui dispose de deux partitions (mmcblk0p1 et mmcblk0p2). Les partitions sont en quelque sorte des découpages de vos disques physiques pour y déposer des informations de natures différentes. Les principales informations sont, pour chaque disque ou chaque partition :

  • SIZE : la taille du disque ou de la partition ; ici le disque externe dispose d’une capacité de 28,7 Go (la capacité théorique affichée à la vente est de 32 Go mais la capacité réelle est toujours inférieure),
  • TYPE : vous retrouvez ici s’il s’agit d’un disque physique ou d’une partition,
  • MOUNTPOINTS : nous allons décrire ci-après ce que sont les « points de montage ».

Si le disque ne l’est pas déjà, nous allons le formater. Pour cela, nous allons saisir la commande suivante. Attention : si vous avez des données sur le disque, elles seront intégralement perdues.

sudo mkfs.ext4 /dev/sda1

On voit ici apparaître la mention /dev. Elle indique que nous allons traiter de périphériques de stockage : /dev/sda1 signifie le lecteur sda1. mkfs signifie « make file system » et ext4 est le système de fichiers préféré de Linux.

Pour accéder aux données, Windows affecte à vos disques une lettre. Par exemple, le système est généralement présent sur C:. Pour Linux, le comportement est différent. Lorsque vous insérez un nouveau disque, il n’est pas « monté ». C’est-à-dire que les données ne sont pas accessibles et qu’il est simplement considéré comme un objet disque/partitions. Pour pouvoir accéder aux données, il est nécessaire d’indiquer sur quel chemin d’accès vous voulez que cet accès soit réalisé. Par exemple, imaginez que vous ayez acheté un livre : vous allez le déposer à un endroit donné dans votre bibliothèque. Lorsque vous voudrez accéder aux informations du livre, il faudra aller le chercher à cet endroit-là. Eh bien c’est ce que Linux vous demande de faire, alors que Windows le fait à votre place et vous l’impose.

Pour aller plus loin, il nous faut faire une digression sur le système de fichiers. Sous Linux, l’ensemble des informations sont structurées en fichiers. Ces fichiers sont eux-mêmes organisés en répertoires. Et l’ensemble de ces répertoires constituent un « arbre » dont la racine est représentée par le symbole /. Ainsi, le répertoire /home est un répertoire de premier niveau après la racine. Le répertoire /home/k-sper.fr se situe à l’intérieur de ce répertoire /home.

Nous allons donc commencer par créer le « point de montage », c’est à dire le répertoire où les données contenues sur le disque seront accessibles. Pour cela, nous allons utiliser la commande mkdir (make directory).

sudo mkdir /mnt/donnees

Cette commande crée au sein du répertoire /mnt un sous-répertoire données, sur lequel nous allons monter notre disque via la commande mount

sudo mount /dev/sda1 /mnt/donnees

La commande indique donc que le contenu du lecteur sda1 doit être accessible à l’emplacement /mnt/données.

Pour voir le contenu de ce lecteur, nous pouvons passer la commande ls.

Notre disque dur est connecté et prêt à l’emploi. Mais si nous éteignons le Raspberry, il sera déconnecté et au prochain allumage nous devrons le re-monter. Ce n’est peut-être pas ce dont nous avons envie ? Donc nous allons apprendre à monter un disque au démarrage.

Pour cela, nous devons avoir en tête que, si nous connectons d’autres périphériques de stockage à notre Raspberry Pi, il est possible que le disque qui est aujourd’hui sda1 nous soit présenté sous un autre identifiant, comme sdb1, ou autre …

Nous allons donc devoir chercher l’identifiant technique unique de notre partition pour être certains de monter toujours la même partition au même endroit. Pour cela, nous allons utiliser la commande blkid. Cette commande nous donne les identifiants des périphériques de stockage connectés à notre Pi.

sudo blkid

Nous voyons ici une information qui nous intéresse particulièrement, le PARTUUID, soit l’identifiant unique de notre partition sda1.

Nous allons ensuite éditer le fichier /etc/fstab. La commande sera donc

sudo nano /etc/fstab

Vous verrez s’ouvrir un nouvel écran qui ressemblera à cela.

Ce que nous voyons ici est le fichier de montage des périphériques de stockage au démarrage. La première colonne correspond à l’identifiant du périphérique (PARTUUID=…), la deuxième au point de montage, la troisième au format du périphérique (rappelez-vous, nous avions dit que nous serions partis sur un format EXT4), la quatrième à des options de montage, la cinquième est une option liée aux sauvegardes, et la sixième indique un niveau de priorité.

Nous avons noté le PARTUUID de notre partition sda1. Nous pouvons le copier en le sélectionnant avec la souris et en tapant CTRL+MAJ+C. Nous allons donc modifier notre fichier /etc/fstab en rajoutant la dernière ligne avec cette valeur :

Le premier bloc correspond à l’identifiant de notre partition ; le quatrième porte les mentions defaults,nofail,noatime. Attardons-nous un peu sur ces options.

  • defaults reprend, comme son nom l’indique, les paramètres par défaut d’un montage,
  • nofail permet que le système n’essaie pas indéfiniment de monter le périphérique si celui-ci est absent,
  • noatime évite de renseigner systématiquement les dates d’accès lorsque vous accédez en lecture à un fichier, ce qui permet de réduire le nombre de cycles d’écriture sur le disque et donc d’accélérer son vieillissement.

D’autres options sont disponibles, et vous pouvez les approfondir à votre guise sur les manuels d’utilisation de /etc/fstab.

Désormais, nous pouvons éteindre le Raspberry Pi. Lorsque nous le redémarrerons, le disque dur sera immédiatement disponible (sauf s’il n’est pas branché).


Si vous avez apprécié cet article, n’hésitez pas à laisser à son auteur un petit commentaire : il l’encouragera à le maintenir et à le développer.


Commentaires

Une réponse à “Connecter un disque dur”

  1. Avatar de Arslan

    In my case, the hard drives were initially formatted in NTFS (the first thing I did after purchasing was connect them to a Windows PC). After connecting to Raspberry and starting formatting, a problem arose – the formatting process did not go beyond the text “creating journal” (I waited about a day, the hard drive was 4 TB). As a result, I disconnected the power from the RPi and am now formatting the hard drive in NTFS format on my Windows PC. As I understand it, for server tasks it is not very important in what format the HDD is formatted

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *