4. Préparer une unité de stockage

Dans cette section on présente les manipulations à effectuer pour préparer une unité de stockage à son utilisation dans une configuration DAS (et|ou) SAN.

[Avertissement] Avertissement

Les copies d'écran utilisées dans les réponses correspondent à l'utilisation de machines virtuelles. Les unités de disques apparaissent donc sous le nom /dev/vd[a-z]. Les unités de disques physiques d'un système réel apparaissent sous le nom /dev/sd[a-z].

4.1. Afficher la liste des unité de stockage

Pour commencer, il est utile de connaître la liste des unités de stockage en mode bloc sur un système.

Q1.

Quelle est la commande apparentée à ls qui permet d'obtenir la liste des périphériques de stockage en mode bloc ?

Consulter la liste des outils forunis avec le paquet util-linux.

$ dpkg -L util-linux | grep bin/ls
/bin/lsblk
/usr/bin/lscpu
/usr/bin/lsipc
/usr/bin/lslocks
/usr/bin/lslogins
/usr/bin/lsmem
/usr/bin/lsns

Une fois que la commande lsblk est identifiée, on l'utilise pour obtenir la liste voulue.

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sr0     11:0    1  1024M  0 rom
vda    254:0    0   120G  0 disk
├─vda1 254:1    0   512M  0 part /boot/efi
├─vda2 254:2    0 118,5G  0 part /
└─vda3 254:3    0   977M  0 part [SWAP]
vdb    254:16   0    32G  0 disk

Dans le système de fichiers, c'est l'unité /dev/vdb qui doit être utilisée pour les manipulations de cette section.

4.2. Détruire la table des partitions

Sachant que les disques des postes de travaux pratiques physiques sont utilisés régulièrement, il est préférable de rendre l'unité de disque vierge de toute configuration.

Q2.

Quelle est la syntaxe d'appel de l'outil parted qui permet de visualiser la table de partition d'une unité de disque ?

Consulter la documentation de parted à l'adresse Using Parted.

$ sudo parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 77,3GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  73,0GB  73,0GB  primary   ext4            boot
 2      73,0GB  77,3GB  4292MB  extended
 5      73,0GB  77,3GB  4292MB  logical   linux-swap(v1)

Q3.

Quelle est la syntaxe de la commande dd qui permet d'effacer complètement la table des partitions d'une unité de disque ?

Utiliser l'aide en ligne de la commande : dd --help.

La commande suivante écrit des 0 dans les 4 premiers blocs de 512 octets de l'unité de disque.

$ sudo dd if=/dev/zero of=/dev/vdb bs=512 count=4
4+0 enregistrements lus
4+0 enregistrements écrits
2048 octets (2,0 kB, 2,0 KiB) copiés, 0,00621803 s, 329 kB/s

$ sudo parted /dev/vdb print
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

4.3. Créer une table des partitions et formater

Une fois que l'on dispose d'une unité de disque vierge, on peut passer à l'étape de création de la table des partitions. Cette opération n'est utile que pour traiter les questions de cette section.

La création de la table des partitions devra être reprise dans les deux contextes suivants :

  • Le second disque du rôle initiator est destiné à intégrer l'unité logique RAID1. Il faudra donc créer une table de partition pour la nouvelle unité logique.

  • Le disque réseau iSCSI est disponible une fois que la configuration du rôle target est active. Une fois la session iSCSI établie, l'unité logique réseau est la propriété exclusive du rôle initiator.

Q4.

Comment créer une partition unique couvrant la totalité de l'espace de stockage de l'unité de disque ?

Consulter la documentation de parted à l'adresse Using Parted.

$ sudo parted /dev/vdb
GNU Parted 3.4
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mklabel gpt
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart ext4 0% 100%
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  34,4GB  34,4GB               ext4

(parted) quit
Information: You may need to update /etc/fstab.

Q5.

Quelle est la commande à utiliser pour les opérations de formatage ? Quel est le rôle de l'option -T de cette commande ?

Les informations utiles sont disponibles à la page Ext4 Howto. Les pages de manuels détaillent les fonctions des options.

La commande utilisée pour le formatage d'un système de fichiers ext4.

$ dpkg -S `which mkfs.ext4`
e2fsprogs: /sbin/mkfs.ext4

L'option -T définit le type d'utilisation du système de fichiers à formater suivant sa taille. Les paramètres par défaut sont les suivants :

  • floppy : 0 < taille < 3Mo

  • small : 3Mo < taille < 512Mo

  • default : 512Mo < taille < 4To

  • big : 4To < taille < 16To

  • huge : 16To < taille

Q6.

Quelle est la syntaxe de la commande de formatage de la partition créée lors de l'étape précédente ?

Des exemples de syntaxe sont disponibles à la page Ext4 Howto.

$ sudo mkfs.ext4 /dev/vdb1
mke2fs 1.46.2 (28-Feb-2021)
Rejet des blocs de périphérique : complété
En train de créer un système de fichiers avec 8388096 4k blocs et 2097152 i-noeuds.
UUID de système de fichiers=7c582ccd-ce99-43ec-b145-05f043c02fc6
Superblocs de secours stockés sur les blocs :
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Allocation des tables de groupe : complété
Écriture des tables d'i-noeuds : complété
Création du journal (32768 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété

Q7.

Quelle est la syntaxe de la commande de visualisation des attributs du système de fichiers créé lors du formatage ?

Les informations utiles sur les attributs sont fournies à la page Ext4 Howto.

$ sudo tune2fs -l /dev/vdb1
tune2fs 1.46.2 (28-Feb-2021)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          7c582ccd-ce99-43ec-b145-05f043c02fc6
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              2097152
Block count:              8388096
Reserved block count:     419404
Overhead clusters:        176700
Free blocks:              8211390
Free inodes:              2097141
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat Aug 21 17:14:07 2021
Last mount time:          n/a
Last write time:          Sat Aug 21 17:14:07 2021
Mount count:              0
Maximum mount count:      -1
Last checked:             Sat Aug 21 17:14:07 2021
Check interval:           0 (<none>)
Lifetime writes:          4182 kB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      df4bc602-36c1-4a6c-8bd0-cc7bc6809114
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0xa952ed62

4.4. Monter manuellement un volume de stockage

Une fois qu'un volume de stockage a été partitionné et formaté, on peut le "monter" dans l'arborescence du système de fichiers du système de façon à pouvoir lire et écrire des données.

Q8.

Comment obtenir l'identifiant du volume de stockage à ajouter au système de fichiers ?

Consulter la liste des utilitaires fournis avec le paquet util-linux. Il faut se rappeler que la représentation fichier d'un périphérique de stockage se distingue par son mode d'accès : le mode bloc.

La commande à utiliser est blkid. Dans l'exemple de la partition /dev/vdb1, on obtient le résultat suivant.

$ sudo blkid /dev/vdb1
/dev/vdb1: UUID="7c582ccd-ce99-43ec-b145-05f043c02fc6" BLOCK_SIZE="4096" TYPE="ext4" \
                PARTLABEL="ext4" PARTUUID="244bacd9-38ca-44e4-8ab7-16d5f2c85f98"

Q9.

Dans quel fichier de configuration trouve-t-on la liste des périphériques montés lors de l'initialisation du système ?

Consulter la liste des fichiers du paquet util-linux.

Le fichier recherché est /etc/fstab. Il contient la liste des points de montage. Dans l'exemple ci-dessous, la racine et la partition d'échange utilisée en cas de saturation des ressources RAM du système.

$ grep -v '^#' /etc/fstab
UUID=8362b3e6-d426-4f1b-93eb-e1efc22f60f4 /       ext4    errors=remount-ro 0       1
UUID=f3e18b95-7430-4fea-ace5-7dd4cea6398a none    swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

Q10.

Quelle est la commande qui donne la liste des montages en cours d'utilisation sur le système ? Quelle est l'option qui permet de scruter les entrées du fichier recherché dans la question précédente et de monter tous les points non encore utilisés ?

La commande est fournie par le paquet du même nom.

Le paquet mount fournit la commande du même nom. Cette commande liste tous les montages actifs du système. La liste comprend les systèmes de fichiers virtuels qui représentent l'état courant des paramètres du noyau ainsi que les systèmes de fichiers physiques qui correspondent aux volumes de stockage effectifs. En reprenant l'exemple utilisé auparavant et en filtrant les systèmes de fichiers virtuels, on obtient :

$ mount | grep "/dev/vd"
/dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro)

L'option de montage des entrées inutilisées du fichier /etc/fstab est -a. Elle doit être utilisée dans la question suivante.

Q11.

Comment monter manuellement le système de fichiers de la partition /dev/vdb1 ?

Le répertoire de test pour les montages temporaires est historiquement /mnt/.

Consulter les pages de manuels de la commande mount.

On dispose d'au moins deux solutions pour désigner la partition à monter.

  • Utilser l'identifiant de partition unique.

    $ sudo mount -U 7c582ccd-ce99-43ec-b145-05f043c02fc6 /mnt
  • Utiliser le nom défini par udev dans le système de fichiers.

    $ sudo mount /dev/vdb1 /mnt

Pour terminer, on liste les montages pour vérifier que la nouvelle partition est bien présente.

$ mount | grep "/dev/vd"
/dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro)
/dev/vdb1 on /mnt type ext4 (rw,relatime)

Q12.

Comment démonter manuellement le système de fichiers de la partition /dev/vdb1 ?

Consulter les pages de manuels de la commande mount.

L'opération de démontage utilise l'arborescence du système de fichiers pour désigner le volume de stockage.

$ sudo umount /mnt
$ mount | grep "/dev/vd"
/dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro)