Chapitre 20. Directives de déploiement des disques SSD

Les disques SSD (« Solid-state disks ») sont des périphériques de stockage qui utilisent des puces flash NAND pour stocker des données de manière persistante. Ceci les différencie des précédentes générations de disques, qui stockent les données sur des plateaux magnétiques rotatifs. Sur les disques SSD, le temps d'accès aux données sur la totalité de la plage d'adresse de bloc logique (« Logical Block Address », ou LBA) est constant tandis qu'avec les disques plus anciens qui utilisent des support rotatifs, les schémas d'accès s'étendant sur des plages d'adresses de grande taille encourent des coûts de recherche. Ainsi, les périphériques SSD offrent une meilleure latence et un meilleur débit.
Les performances se dégradent au fur et à mesure que le nombre de blocs utilisés se rapproche de la capacité maximale du disque. Le degré l'impact des performances peut beaucoup varier en fonction du fournisseur. Cepedant, tous les périphériques se dégraderont quelque peu.
Pour répondre au problème de dégradation, le système hôte (par exemple, le noyau Linux) peut utiliser des requêtes d'abandon pour informer le stockage qu'une plage de blocs donnée n'est plus en cours d'utilisation. Un disque SSD peut utiliser ce type d'information pour libérer de l'espace interne en utilisant les blocs disponibles pour ré-équilibrer l'usure. Les abandons seront uniquement émis si le stockage publicise la prise en charge de son protocole de stockage (qu'il s'agisse du protocole ATA ou SCSI). Les requêtes d'abandon sont émises au stockage à l'aide de la commande d'abandon négociée spécifique au protocole de stockage (commande TRIM pour ATA, et WRITE SAME si UNMAP est défini, ou la commande UNMAP pour SCSI).
Activer le support discard est surtout utile quand les deux points suivants s'appliquent :
  • Il y a de l'espace libre toujours disponible sur le système de fichiers.
  • La plupart des blocs logiques situés sur le périphérique de stockage sous-jacent contiennent déjà des écritures.
Pour plus d'informations sur TRIM, voir Data Set Management T13 Specifications dans le lien suivant :
Pour obtenir des informations supplémentaires sur UNMAP, veuillez consulter la section 4.7.3.4 du document SCSI Block Commands 3 T10 Specification, disponible sur le lien suivant :

Note

Les périphériques SSD sur le marché n'offrent pas tous la prise en charge de discard. Pour déterminer si votre disque dur offre la prise en charge de discard, veuillez vérifier la présence de /sys/block/sda/queue/discard_granularity.

20.1. Considérations pour le déploiement

À cause de la structure interne et de l'opération des disques SSD, il vaut mieux partitionner les périphériques sur une limite de bloc de suppression interne (« Erase block boundary »). Les utilitaires de partitionnement sous Red Hat Enterprise Linux 7 choisissent des valeurs par défaut saines si le disque SSD exporte ses informations de topologie.
Cependant, si le périphérique n'exporte pas ses informations de topologie, Red Hat recommande que la première partition soit créée sur une limite de 1 Mo.
Les Logical Volume Manager (LVM), les cibles de device-mapper (DM) targets, et de MD (software raid) que LVM utilise prend en charge les abandons (discard). Les seules cibles DM qui ne prennent pas en charge les abandons sont dm-snapshot, dm-crypt, et dm-raid45. La prise en charge des abandons pour dm-mirror a été ajoutée sur Red Hat Enterprise Linux 6.1 et à partir de 7.0, MD prend en charge les abandons.
Red Hat avertit également que l'utilisation des niveaux RAID logiciel 1, 4, 5, et 6 sur des disques SSD n'est pas recommandée. Pendant l'étape d'initialisation de ces niveaux RAID, certains utilitaires de gestion RAID (tels que mdadm) écrivent sur tous les blocs du périphérique de stockage pour s'assurer que les checksums fonctionnent correctement. Ceci entraine une dégradation rapide des performances du disque SSD.
À partir de Red Hat Enterprise Linux 6.4, ext4 et XFS sont les seuls systèmes de fichiers totalement pris en charge qui offrent les commandes discard. Dans les versions précédentes de Red Hat Enterprise Linux 6, seul ext4 prenait totalement en charge discard. Pour activer les commandes discard sur un périphérique, veuillez utiliser l'option mount de discard. Par exemple, pour monter /dev/sda2 sur /mnt lorsque discard est activé, veuillez exécuter :
# mount -t ext4 -o discard /dev/sda2 /mnt
Par défaut, ext4 ne délivre pas la commande discard. Cela est le cas afin d'éviter tout problème sur des périphériquers qui pourraient ne pas implémenter la commande discard correctement. Le code swap Linux délivrera les commandes discard aux périphériques sur lesquels discard est activé, il n'existe aucune option pour contrôler ce comportement.