Mise à jour : Debian 10.5 Buster
Les SSD (Solid State Drives) sont des composants de stockage de masse qui ont pour avantage sur les disques durs rotatifs
une réduction importante des temps de lecture et écriture.
un gain significatif sur les temps de démarrage du système et des applications
une moindre consommation, une absence totale de bruit et une grande résistance aux chocs.
Ils ont pour inconvénients de nécessiter l'effacement avant écriture, le nombre d'effacement par cellules étant lui-même limité (mais confortable).
Terminologie :
SATA - Bus communication pour disques durs "standards"
PCI Express - PCIe Peripheral Component Interface - Bus communication rapide pour périphériques vidéo, son, réseau, et Disques SSD - PCI Express
AHCIE Advanced Host Controller Interface (protocole de communication standard Disques bus SATA)
Références :
Sommaire
L'installation dépend du modèle de SSD.
Les disques SSD 2,5" se présentent sous la forme de modules compatibles en dimensions (2,5 pouces) et interfaces électroniques (SATA) avec les disques durs standards. Exemple de modèle SHSS375A240G.
Installer le SSD directement dans le PC à la place d'un disque dur
Vérifier, au niveau du Bios que la configuration SATA est de type AHCI (et non IDE).
Les disques SSD mSATA (pour mini SAT) ont des performances et fonctionnements identiques aux disques SSD 2,5", mais sous des dimensions inférieures.
L'installation s'effectue donc directement dans le PC sur un connecteur dédié
Vérifier, au niveau du Bios que la configuration SATA est de type AHCI (et non IDE).
M.2 est le plus récent des types de disque SSD. Il est parfois également désigné par NGFF (New Generation Form Factor)
Les disques SSD M.2 sont proposés
soit en version SATA (driver ahci) nommé M.2 SATA, avec des fonctionnalités et performances identiques à celles des versions SATA, mSATA (SATA 2 3Gb/s, SATA 3 6Gb/s)
soit en version PCIE (driver NVME) plus rapide, nommé par exemple M.2 PCIE 3.x 4X, où 4.x désigne la version PCIE (il existe également 3.x moins rapide) et où 4.x désigne le nombre de voies PCIE utilisées. Cette version M.2 3.x 4x a un débit max de 20Gb/s)
La documentation du PC ou de la carte mère doit-être utilisée pour vérifier la version disponible.
Le connecteur à un système de détrompage par touches (key) pour distinguer les SSDs PCIE compatibles 2.x et 4.x.
Il existe plusieurs formats de carte (ils sont tous plus petits que mSATA). Le format est indiqué par un nombre à 4 chiffres tel que 2280, 2230, 2242, ..... les deux premiers nombres indiquant la largeur du disque, les deux suivants la longueur. Il faut donc s'assurer que la longueur du Disque SSD est compatible avec l'espace disponible au niveau du connecteur hôte sur la carte.
A titre d'exemple, les SSD Samsung de la gamme EVO 860 sont disponibles (pour la version 500 Go)
en version SATA III
en version mSATA
en version M.2 SATA III 22.80
la mise à jour du firmware
les commandes de strim
les commandes de contrôle (hdparm, smarttctl, nvme)
Les commandes de réinitialisation du SSD peuvent bloquer définitivement l'accès au SSD, ne pas les utiliser
$ sudo aptitude install lsscsi
$ lsscsi -s
[2:0:0:0] disk ATA KINGSTON SHSS37A 02.H /dev/sda 480GB
[3:0:0:0] disk KINGSTON SHSS37A240G 0 /dev/sdb 240GB
[N:0:4:1] disk Samsung SSD 970 EVO 250GB__1 /dev/nvme0n1 250GB
Dans l'exemple ci-dessus, trois disques sont présents
$ lsscsi -t
[2:0:0:0] disk sata:50026b767a012c69 /dev/sda
[3:0:0:0] disk usb:2-3:1.0 /dev/sdb
[N:0:4:1] disk pcie 0x144d:0xa801 /dev/nvme0n1
$ lsblk -d -D -o name,model,serial,size,rota
NAME MODEL SERIAL SIZE ROTA
sda KINGSTON_SHSS37A480G 50026B767A012C69 447,1G 0
sdb KINGSTON_SHSS37A240G 50026B7266040E85 223,6G 0
nvme0n1 Samsung SSD 970 EVO 250GB S465NX0KA72576V 232,9G 0
$ sudo aptitude install lsscsi hdparm nvme-cli smartmontools
Le type de stockage rotatif ou statique peut-être affiché à partir des informations stockées dans sysfs, 1 indique un stockage rotatif, 0 indique un stockage statique
$ grep 0 /sys/block/{sda,sdb,nvme0n1}/queue/rotational
/sys/block/sda/queue/rotational:0
/sys/block/sdb/queue/rotational:0
/sys/block/nvme0n1/queue/rotational:0
Les disques à interface nvme sont toujours du type SSD
$ sudo smartctl -i /dev/sda |grep Rotation
Rotation Rate: Solid State Device
$ sudo smartctl -i /dev/sdb |grep Rotation
Rotation Rate: Solid State Device
Utiliser les commandes nvme ou smartctl
$ sudo nvme list /dev/nvme0n1
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S465NX0KA72576V Samsung SSD 970 EVO 250GB 1 65,31 GB / 250,06 GB 512 B + 0 B 2B2QEXE7
ou bien
$ sudo smartctl -i /dev/nvme0n1
....
=== START OF INFORMATION SECTION ===
Model Number: Samsung SSD 970 EVO 250GB
Serial Number: S465NX0KA72576V
Firmware Version: 2B2QEXE7
.........
Utiliser les commandes hdparm ou smartctl
$ sudo hdparm -I /dev/sda |head
/dev/sda:
ATA device, with non-removable media
Model Number: KINGSTON SHSS37A480G
Serial Number: 50026B767A012C69
Firmware Revision: SAFM02.H
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6 5
$ sudo smartctl -i /dev/sda
.....
=== START OF INFORMATION SECTION ===
Model Family: Phison Driven SSDs
Device Model: KINGSTON SHSS37A480G
Serial Number: 50026B767A012C69
LU WWN Device Id: 5 0026b7 67a012c69
Firmware Version: SAFM02.H
....
$ sudo hdparm -I /dev/sdb |head
/dev/sdb:
ATA device, with non-removable media
Model Number: KINGSTON SHSS37A240G
Serial Number: 50026B7266040E85
Firmware Revision: SAFM00.Y
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6 5
$ sudo smartctl -i /dev/sdb
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.19.0-16-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Phison Driven SSDs
Device Model: KINGSTON SHSS37A240G
Serial Number: 50026B7266040E85
Firmware Version: SAFM001B
.....
Vérifier qu'il s'agit bien d'un disque SSD, dans le cas d'un disque SATA
$ sudo smartctl -i /dev/sda |grep Rotation
Rotation Rate: Solid State Device
Vérifier l'absence d'erreurs
$ sudo smartctl -a /dev/sda |grep Errors
No Errors Logged
Lancer un test (short environ une minute ou long environ deux minutes)
$ sudo smartctl -t short /dev/sda
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.7.0-0.bpo.1-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
......
Le test s'effectue en arrière plan. L'heure de fin de test prévisionnel est affichée.
Lorsque le temps est écoulé, récupérer le résultat du test
$ sudo smartctl -a /dev/sda |grep "test result"
SMART overall-health self-assessment test result: PASSED
La santé du disque (health) est également fournie par :
$ sudo smartctl -H /dev/sda
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.7.0-0.bpo.1-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
$ sudo blockdev --getalignoff /dev/sda{1,2}
0
0
$ sudo parted /dev/sda unit s print |grep -E "Number|^ 1|^ 2"
Number Start End Size File system Name Flags
1 2097152s 838860799s 836763648s data
2 838860800s 880803839s 41943040s perso
Les valeurs de la colonne Start doivent être divisibles par 2048 (2048 secteurs de 512 octets = 1MB), ce qui est le cas
$ calc 2097152/2048
1024
$ calc 838860800/2048
409600
Utiliser un système de fichier "compatible". Le système de fichier ext4 aurait le meilleur support de la fonction trim et utilise un système de journalisation raisonnable en nombre d'accès.
Le processeur qui équipe les SSDs rend la complexité de fonctionnement et d'optimisation du SSD transparente pour l'utilisateur. Toutefois quelques règles d'installation et d'utilisation supplémentaires permettent de préserver la durée de vie du SSD et de maintenir ses performances
Vérifier si l'option relatime (ou atime) est activée par défaut (command mount ou cat /etc/mtab)
$ mount |grep /dev/sda
/dev/sda1 on / type ext4 (rw,errors=remount-ro,data=ordered)
/dev/sda3 on /home type ext4 (rw,data=ordered)
Si elle ne l'est pas, l'ajouter dans fstab :
$ cat /etc/fstab |grep ext4
UUID=4b1402cb-448c-49b3-b6ad-443679ead7fe / ext4 errors=remount-ro,relatime 0 1
UUID=6b63def4-e7f3-4be0-a19c-5ea5ecc43ac5 /home ext4 defaults,relatime 0 2
Vérifier la bonne prise en compte
$ mount |grep /dev/sda
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/sda3 on /home type ext4 (rw,relatime,data=ordered)
Pour les disques utilisant le protocole SATA (NVMe sont donc non concernés), le mode mq-deadline est désormais standard et convient bien pour les différents types de mémoire.
$ grep . /sys/block/sd?/queue/scheduler
/sys/block/sda/queue/scheduler:[mq-deadline] none
/sys/block/sdc/queue/scheduler:[mq-deadline] none
/sys/block/sdd/queue/scheduler:[mq-deadline] none
The multi-queue no-op I/O scheduler. Does no reordering of requests, minimal overhead. Ideal for fast random I/O devices such as NVME.
This is an adaption of the deadline I/O scheduler but designed for Multiqueue devices. A good all-rounder with fairly low CPU overhead.
Si besoin, créer une règle udev pour sélectionner le mode deadline pour les disques non rotatifs :
$ cat /etc/udev/rules.d/60-sequenceur_SSD.rules
# sélection du mode séquenceur "deadline" pour les disques SSDs
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
Redémarrer pour faire prendre en compte la nouvelle règle et vérifier que le mode de séquençage deadline est bien sélectionné pour le SSD (dev/sda):
$ grep . /sys/block/sd?/queue/scheduler
/sys/block/sda/queue/scheduler:noop [deadline] cfq
/sys/block/sdb/queue/scheduler:noop deadline [cfq]
/sys/block/sdc/queue/scheduler:noop deadline [cfq]
Un rognage périodique est conseillé ; Voir Disques SSD - Rognage
Limiter l'utilisation du swap en disposant d'une ram de taille suffisante (ou bien reporter la swap sur un disque dur rotatif)
Limiter (ou supprimer) l'utilisation de l'hibernation
Reporter sur des ramdisks ou des disques classiques les répertoires utilisant de façon intensive la mémoire : /tmp /log /var ....
Certains programmes tels que firefox, googleearth, chromium, ... permettent d'utiliser la mémoire vive plutôt que le disque dur pour stocker leurs fichiers temporaires. Si l'on dispose de suffisamment de mémoire vive, cette solution évite des écritures en disque et augmente sa durée de vie.
Entrer about:config dans la barre d'adresses de Firefox
Dévalider l'option browser.cache.disk.enable (remplacer true par false)
Valider l'option browser.cache.memory.enable
Créer la chaîne "Nombre entier" browser.cache.memory.capacity et saisir une valeur en Ko, par exemple 400000 (pour 400Mo)
Lancer googleearth et cliquer sur Outils > Options, sélectionner l'onglet Cache
Entrer une nouvelle valeur pour le cache en mémoire vive (max 1024 Mo)
Entrer une nouvelle valeur pour le cache disque (min le 1/5 de la mémoire cache vive)
Cliquer sur Appliquer