Disques SSD - Installation

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

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 :

Références :

Sommaire

1 - Installation physique

L'installation dépend du modèle de SSD.

1.1 - Disques SSD 2,5"

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.

1.2 - Disques SSD mSATA

Les disques SSD mSATA (pour mini SAT) ont des performances et fonctionnements identiques aux disques SSD 2,5", mais sous des dimensions inférieures.

1.3 - Disques SSD M.2

M.2 est le plus récent des types de disque SSD. Il est parfois également désigné par NGFF (New Generation Form Factor)

1.4 - Installation dans un boîtier externe USB

2 - Liste des disques installés

2.1 - Utilisation de lssci

$ 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

2.2 - Utilisation de lsblk

$ 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

3 - Identification

3.1 - Installation des commandes

$ sudo aptitude install lsscsi hdparm nvme-cli smartmontools

3.2 - Type de stockage

$ 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
$ sudo smartctl -i /dev/sda |grep Rotation
Rotation Rate: Solid State Device

$ sudo smartctl -i /dev/sdb |grep Rotation
Rotation Rate: Solid State Device


3.3 - Caractéristiques d'un périphérique interface pcie

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
.........

3.4 - Caractéristique d'un périphérique interface sata

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
.....

4 - Vérification fonctionnement

$ sudo smartctl -i /dev/sda |grep Rotation
Rotation Rate: Solid State Device
$ sudo smartctl -a /dev/sda |grep Errors
No Errors Logged
$ 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.

$ sudo smartctl -a /dev/sda |grep "test result"
SMART overall-health self-assessment test result: PASSED
$ 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

5 - Recommandations

5.1 - Partitionnement

$ 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

5.2 - Système de fichiers

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

5.3 - Limitations des mises à jour des fichiers

$ mount |grep /dev/sda
/dev/sda1 on / type ext4 (rw,errors=remount-ro,data=ordered)
/dev/sda3 on /home type ext4 (rw,data=ordered)
$ 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
$ 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)

5.4 - Utilisation du mode faible latence du séquenceur

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.

$ 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"
$ 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]

5.5 - Rognage

Un rognage périodique est conseillé ; Voir Disques SSD - Rognage

5.6 - Autres

Annexe - Limitation des fichiers temporaires sur disque

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.

1 - Firefox

2 - Googleearth