4. Préparation d'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. Destruction de la table des partitions

Sachant que les disques des postes de travaux pratiques sont utilisés régulièrement, il est préférable de se placer dans le contexte d'utilisation d'une unité de disque vierge de tout système de fichiers.

Q1.

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.

# parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 34,4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  256MB   255MB   primary   ext2         boot
 2      257MB   34,4GB  34,1GB  extended
 5      257MB   34,4GB  34,1GB  logical                lvm

Q2.

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.

# dd if=/dev/zero of=/dev/vdb bs=512 count=4
4+0 enregistrements lus
4+0 enregistrements écrits
2048 octets (2,0 kB) copiés, 0,00135867 s, 1,5 MB/s

# parted  /dev/vdb print
Error: /dev/vdb: unrecognised disk label

4.2. Création de la table des partitions et formatage

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. Dans le contexte de ces travaux pratiques, cette opération doit être effectuée deux fois sur les postes de travail pour les deux types d'unité de stockage utilisées.

  1. Le second disque physique des postes de travail est destiné à intégrer l'unité logique RAID1.

  2. Le disque réseau iSCSI est disponible une fois que la configuration du rôle initiator est active.

Cette manipulation est l'opération de plus bas niveau qui caractérise un accès réseau au stockage en mode bloc et non en mode fichier.

Q3.

Quelles sont les instructions de l'outil parted qui permettent de créer une partition primaire unique couvrant la totalité de l'espace de stockage de l'unité de disque ?

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

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

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart ext4 1 -1
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 85,9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  85,9GB  85,9GB  ext4         ext4

(parted) quit

Q4.

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

Q5.

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.

# mkfs.ext4 /dev/vdb1
mke2fs 1.42.5 (29-Jul-2012)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
« Stride » = 0 blocs, « Stripe width » = 0 blocs
5242880 i-noeuds, 20971008 blocs
1048550 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=4294967296
640 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs : 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000

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é

Q6.

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.

# tune2fs -l /dev/vdb1
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   <none>
Last mounted on:          /var/lib/iscsi-target
Filesystem UUID:          3ccc9115-f206-4a05-86f3-5902ac49b82d
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index \
                          filetype needs_recovery extent flex_bg sparse_super \
                          large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              4718592
Block count:              18873856
Reserved block count:     943692
Free blocks:              18531693
Free inodes:              4718581
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1019
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sun Aug 23 17:20:15 2015
Last mount time:          Sun Aug 23 17:36:50 2015
Last write time:          Sun Aug 23 17:36:50 2015
Mount count:              2
Maximum mount count:      -1
Last checked:             Sun Aug 23 17:20:15 2015
Check interval:           0 (<none>)
Lifetime writes:          1284 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      8edb7b6a-5586-4d32-a02a-de231242f353
Journal backup:           inode blocks

4.3. Montage manuel d'un volume de stockage

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

Q7.

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.

# blkid /dev/vdb1
/dev/vdb1: UUID="224f6aad-16c0-4923-8949-0628a8e10228" TYPE="ext4"

C'est cet identifiant que l'on doit utiliser pour compléter la configuration système et rendre le montage du périphérique de stockage permanent.

Q8.

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 bien 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=78cc7982-fa2e-4498-af98-45272c7726c9 /    ext4    errors=remount-ro 0       1
UUID=56c21189-6cb3-4a6e-a6f6-ccf3e28db8b0 none swap    sw              0       0

Q9.

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,data=ordered)

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

Q10.

Comment compléter la configuration système pour assurer le montage du nouveau périphérique ?

Il faut utiliser les réponses aux questions précédentes pour valider le nouveau point de montage.

  • Création du point de montage dans l'arborescence du système

    # mkdir /var/lib/iscsi-target
  • Ajout d'une ligne dans le fichier /etc/fstab avec l'identifiant du périphérique à ajouter

    # echo UUID=3ccc9115-f206-4a05-86f3-5902ac49b82d \
      /var/lib/iscsi-target/ \
      ext4 \
      defaults \
      0      2 >>/etc/fstab
  • Montage du nouveau périphérique

    # mount -a
  • Nouvelle liste des montages actifs

    # mount | grep "/dev/vd"
    /dev/vda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
    /dev/vdb1 on /var/lib/iscsi-target type ext4 (rw,relatime,data=ordered)