5. Préparer une unité de stockage

Cette section traite des manipulations à effectuer pour préparer une unité de stockage à son utilisation dans une configuration DAS (et|ou) SAN.

Comme indiqué dans le Tableau 1, « Attribution des rôles ISCSI », les manipulations de cette section sont utiles pour le rôle Initiator une fois que la session iSCSI est établie et que la nouvelle unité de disque appelée /dev/sda est accessible.

[Avertissement] Avertissement

Les copies d'écran utilisées dans les réponses correspondent à l'utilisation d'une machine virtuelle à laquelle on ajouté une unité de disque NVME nommée /dev/nvme1n1.

Suivant le mode de raccordement choisi (nvme, scsci, virtio ou iscsi), les noms des unités de disques changent.

5.1. Afficher la liste des unités 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 fournis avec le paquet util-linux.

dpkg -L util-linux | grep bin/ls
/usr/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, vous devez l'utiliser 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   366K  0 disk
nvme0n1     259:1    0   120G  0 disk
├─nvme0n1p1 259:4    0     3M  0 part
├─nvme0n1p2 259:5    0   124M  0 part /boot/efi
└─nvme0n1p3 259:6    0 119,9G  0 part /
nvme1n1     259:3    0    32G  0 disk

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

5.2. Créer une table des partitions et formater une unité de disque

Dans quel contexte doit-on partitionner et formater une unité de disque ?

  • On peut s'entraîner avec les seconds disques des rôles Initiator et Target. Une fois les tests effectués, il est préférable d'effacer la table de partition avec en suivant les instructions de la Section 5.4, « Détruire la table des partitions ».

  • Il est également possible de s'entraîner avec l'unité de stockage iSCSI sur le système Initiator une fois la session iSCSI établie. Comme l'unité de disque réseau est la propriété exclusive du rôle Initiator en mode bloc, on effectue les même manipulations que pour un disque local au système. Comme dans le cas précédent, il est préférable d'effacer la table de partition avec en suivant les instructions de la Section 5.4, « Détruire la table des partitions ».

  • Enfin, il faut partitionner et formater le volume logique LVM pour pouvoir suivre les manipulations à partir de la Section 10, « Configuration d'un volume logique et de sa sauvegarde ».

Q2.

Comment créer une partition unique utilisant le maximum de l'espace de stockage de l'unité de disque ?

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

Installez le paquet parted si nécessaire.

sudo apt install parted
sudo parted /dev/nvme1n1
GNU Parted 3.6
Using /dev/nvme1n1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
(parted) mklabel gpt
(parted) print
Model: QEMU NVMe Ctrl (nvme)
Disk /dev/nvme1n1: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags
(parted) mkpart myOwnPartition ext4 1MiB 100%
(parted) print
Model: QEMU NVMe Ctrl (nvme)
Disk /dev/nvme1n1: 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         myOwnPartition
(parted) quit
Information: You may need to update /etc/fstab.

Q3.

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 $(sudo which mkfs.ext4)
e2fsprogs: /usr/sbin/mkfs.ext4

L'option -T permet de définir le type d'utilisation du système de fichiers à formater en fonction sa taille. Les paramètres par défaut sont définis dans le fichier /etc/mke2fs.conf. Voici un résumé des paramètres intéressants pour ces manipulations :

  • ext4 :i active des fonctionnalités avancées telles que la journalisation, l'allocation basée sur l'étendue, la prise en charge de fichiers très volumineux, les groupes de blocs flexibles, les sommes de contrôle des métadonnées, le 64 bits, la prise en charge des répertoires volumineux et des champs inode supplémentaires.

  • small/floppy/news : utilise des tailles de bloc plus petites (1024 octets) et des densités d'inodes plus élevées (plus d'inodes par espace) pour les petits systèmes de fichiers ou des cas d'utilisation spécifiques (par exemple, les spools de nouvelles).

  • big/huge : conçu pour les grands systèmes de fichiers avec un ratio d'inodes beaucoup plus élevé (moins d'inodes par espace). Il est utile pour le stockage de vidéos et d'images par exemple.

  • largefile/largefile4 : ratios d'inodes très élevés et tailles de blocs indéfinies pour les scénarios à usage unique et les fichiers volumineux. Il est utile pour le stockage d'images de machines virtuelles, de sauvegardes ou de flux vidéo en direct.

Q4.

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/nvme1n1p1
mke2fs 1.47.2 (1-Jan-2025)
Discarding device blocks: done
Creating filesystem with 8388096 4k blocks and 2097152 inodes
Filesystem UUID: 97049e50-931a-4741-8c87-faf2582c494f
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Q5.

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/nvme1n1p1
tune2fs 1.47.2 (1-Jan-2025)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          97049e50-931a-4741-8c87-faf2582c494f
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index orphan_file filetype extent 64bit flex_bg metadata_csum_seed 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:              8210878
Free inodes:              2097140
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 23 16:20:39 2025
Last mount time:          n/a
Last write time:          Sat Aug 23 16:20:39 2025
Mount count:              0
Maximum mount count:      -1
Last checked:             Sat Aug 23 16:20:39 2025
Check interval:           0 (<none>)
Lifetime writes:          6274 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:      b7f68521-faa9-4357-bc98-f5baa8cf5f4e
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x8a2806a9
Checksum seed:            0x8c83f6ed
Orphan file inode:        12

La sortie de la commande tune2fs -l indique que le système de fichiers ext4 sur la partition /dev/nvme1n1p1 est propre, utilise des blocs de 4 Ko et des inodes de 256 octets, et prend en charge des fonctionnalités telles que la journalisation et les extensions.

  • Les sommes de contrôle des métadonnées sont représentées 64 bits.

  • Les fichiers volumineux sont supportés.

  • Le système de fichiers vient d'être créé avec presque tous les blocs et inodes libres.

  • Il dispose d'options de montage par défaut (user_xattr, acl).

Aucun nom de volume n'est défini. Aucune vérification fsck périodique n'est prévue et le système de fichiers est de type Linux, avec un comportement d'erreur défini sur « continuer ».

5.3. Monter manuellement un volume de stockage

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

Q6.

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/nvme1n1p1
/dev/nvme1n1p1: UUID="97049e50-931a-4741-8c87-faf2582c494f"
BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="myOwnPartition"
PARTUUID="57ae228a-bd8d-49de-9933-97b2c71af70e"

Q7.

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
PARTUUID=95ed2e41-f56c-4cc0-a79e-c93a07e93c79 / ext4 rw,discard,errors=remount-ro,x-systemd.growfs 0 1
PARTUUID=71f5d30c-8e21-4372-81f6-11eb66815669 /boot/efi vfat defaults,umask=077 0 2

Q8.

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 unités de stockage utilisées.

mount | grep nvme
/dev/nvme0n1p3 on / type ext4 (rw,relatime,discard,errors=remount-ro)
/dev/nvme0n1p2 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,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.

Q9.

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

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 "97049e50-931a-4741-8c87-faf2582c494f" /mnt
    mount | grep mnt
    /dev/nvme1n1p1 on /mnt type ext4 (rw,relatime)
    sudo umount /mnt
  • Utiliser le nom défini par udev dans le système de fichiers.

    sudo mount /dev/nvme1n1p1 /mnt
    mount | grep mnt
    /dev/nvme1n1p1 on /mnt type ext4 (rw,relatime)
    sudo umount /mnt

Q10.

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

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

Cette commande a déjà été appelée dans la question précédente pour éviter les conflits entre les deux syntaxes de montage différentes.

5.4. Détruire la table des partitions

Dans cette section, on veut effacer toutes les traces des manipulations précédentes pour traiter les questions des autres parties du support de travaux pratiques.

[Avertissement] Avertissement

Attention au nom d'unité de disque utilisé pour les manipulations qui suivent. La suppression de la table de patition de l'unité de disque système est fatale !

Q11.

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

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

sudo parted /dev/nvme1n1 print
sudo parted /dev/nvme1n1 print
Model: QEMU NVMe Ctrl (nvme)
Disk /dev/nvme1n1: 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         myOwnPartition

Le résultat montre que l'unité de disque a été partitionnée dans une section précédente. Vous devez donc effacer les traces de ces opérations.

Q12.

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/nvme1n1 bs=4k count=64
64+0 enregistrements lus
64+0 enregistrements écrits
262144 octets (262 kB, 256 KiB) copiés, 0,00376759 s, 69,6 MB/s
sudo parted /dev/nvme1n1 print
Error: /dev/nvme1n1: unrecognised disk label
Model: QEMU NVMe Ctrl (nvme)
Disk /dev/nvme1n1: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

Le résultat de la dernière commande d'affichage de la table de partition montre que toute trace de table de partition GPT a disparu.