Solid state drive (Français)
Les SSD (pour Solid State Drives) sont des disques à mémoire flash (en opposition aux disques durs mécaniques, souvent appelé HDD dans les milieux anglophones). Ils se démocratisent de plus en plus, et les heureux acquéreurs de SSD se posent souvent beaucoup de questions censées.
Il faut savoir qu'il existe trois types de mémoire NAND :
- TLC (Triple Level Cell) : 1 000 cycles d'écriture garantis (peu endurante), petit prix et performances peu exceptionnelles
- MLC (Multi Level Cell) : 3 000 cycles d'écriture au minium (assez endurante), plus chère mais plus performante
- SLC (Single Layer Cell) : 10 000 cycles d'écriture au minium (très endurante), très chère mais très performante ; on la trouve généralement sur les serveurs
Il est possible de ne pas user prématurément un SSD, cette page est vouée à cela.
AHCI ou NVMe
L'AHCI est le standard conçu pour les périphériques utilisant l'interface SATA. Ce standard étant originalement conçu pour les disques durs mécaniques et l'interface SATA étant limitante pour les SSD, de nouvelles interfaces sont apparues pour pallier les inconvénients du SATA.
Les interfaces M.2, PCI Express (PCIe) et SATA Express sont conçues pour les SSD, et elles utilisent un autre standard : le NVM Express (NVMe).
Le NVMe est pris en charge nativement depuis Linux 3.3, et les périphériques NVMe sont accessibles par le chemin /dev/nvme*
et non /dev/sd*
. Le premier périphérique NVMe est /dev/nvme0n1
, et la première partition de ce premier est /dev/nvme0n1p1
.
/etc/mkinitcpio.conf
.Maximiser les performances d'un SSD
Alignement des partitions
Lors de la création des partitions, il est crucial que l'alignement des partitions corresponde aux blocks physiques du SSD. Les outils de partitionnement récent, comme GParted, permettent d'aligner les partitions automatiquement.
On peut vérifier si l'alignement est correcte avec la commande suivante (un 0 signifie que c'est aligné correctement) :
blockdev --getalignoff /dev/<partition>
TRIM
Le TRIM permet d'éviter que le SSD perde en performance ; il est pris en charge par beaucoup de SSD.
Depuis Linux 3.8, le TRIM est pris en charge avec les systèmes de fichiers suivants : Ext4, Btrfs, JFS, VFAT, XFS et F2FS. Pour le NTFS, il faut au minimum la version 2015.3.14 du paquet ntfs-3g.
Pour vérifier si votre SSD prends en charge le TRIM, une commande peut répondre à cette question :
hdparm -I /dev/<disque> | grep TRIM
Un service nommé fstrim.service
est fourni par le paquet util-linux permet d'exécuter un trim sur les systèmes de fichiers montés le prenant en charge. Il est possible d'activer périodiquement ce service en activant le minuteur fstrim.timer
. par défaut, le service est activé une fois par semaine.
systemctl enable fstrim.timer
discard
est fortement déconseillé car elle est connue pour occasionner la perte de données.Ordonnancement d'E/S
Il est possible d'utiliser l'ordonnanceur NOOP ou bien Deadline pour le SSD. Se référer à la page ordonnanceur d'E/S.
Minimiser les lectures/écritures d'un SSD
Swap sur SSD
À vous d'évaluer combien de mémoire vive (RAM) vous utilisez généralement par rapport à la quantité de RAM installée sur la machine. Si vous utilisez plus de RAM que vous en avez, ou bien si vous utilisez la fonction d'hibernation, vous avez besoin d'une partition/fichier de swap.
Un grand débat vise à savoir si on peut mettre le swap sur le SSD. Vous êtes le seul maître de cette décision : sachez qu'un usage intensif du swap peut user prématurément votre SSD, mais mettre le swap sur le SSD peut donner un peu plus de réactivité à votre ordinateur en cas de swap. Certains SSD ayant une petite capacité, peut-être qu'une partition de swap sur le SSD ne vous arrange pas. Si la machine possède aussi un disque dur (en plus du SSD), on peut donc mettre la partition de swap sur le disque dur, si nécessaire.
On peut ajuster la valeur à laquelle le système va commencer à décharger le RAM dans le swap (swappiness). Le kernel commencera à utiliser le swap lorsque l'utilisation en pourcent de la RAM dépassera 100 - swappiness
. Par défaut vm.swappiness
est égale à 60
, le système commencera donc à utiliser le swap dès que 40% de la RAM seront occupés. Une valeur faible privilégiera la RAM alors qu'une valeur élevée engendrera une utilisation fréquente du swap. On peut ainsi définir une valeur entre 0 et 100.
Pour changer ce paramètre temporairement, on utilisera la commande suivante :
sysctl vm.swappiness=10
Ou pour le changer définitivement, on éditera le fichier suivant :
/etc/sysctl.d/99-sysctl.conf
vm.swappiness=10
Partitionnement intelligent
Il peut être intéressant de déplacer le /var
sur un disque dur (surtout si vous avez un petit SSD et que le cache de Pacman est relativement gros). Cela permet aussi de diminuer le nombre de lectures et d'écritures sur le SSD, mais ne vous attendez pas à un gain énorme en terme de durée de vie du SSD.
Ceci se fait plutôt au moment de l'installation (il reste toutefois possible de déplacer le contenu du /var
sur une autre partition après installation).
Par exemple, lors de l'installation, il suffit de monter une partition dédiée au /var
dans /mnt/var
, de procéder -sans modifier ses habitudes- à l'installation, puis de ne pas oublier d'ajouter une ligne pour monter cette partition dans le fichier /etc/fstab
.
Pour faire cette modification après l'installation, il faut déplacer le contenu du répertoire /var
sur une partition dédiée, puis ne pas oublier de remonter la partition sur le nouveau point de montage /var
, et enfin modifier le fichier /etc/fstab
pour que la configuration soit persistante.
L'étape inverse permet donc de remettre le /var
sur le SSD.
Option de montage noatime
Cette option désactive la mise à jour des dates d'accès (et non de modification) de tous les fichiers sur la partition concernée par l'option. Cela réduit donc les écritures "inutiles" sur le SSD.
/etc/fstab
/dev/sda1 / ext4 defaults,noatime 0 1 /dev/sda2 /home ext4 defaults,noatime 0 2
Déplacer les fichiers souvent utilisés en RAM
Si on considère que votre /home
est monté sur votre SSD, alors certains fichiers, tels ceux de votre navigateur Internet, sont souvent sollicités. On peut dans ce cas les déplacer en RAM.
Voir cette page pour Firefox, ou encore le paquet profile-sync-daemon de façon plus générale aux navigateurs web.
Le paquet anything-sync-daemon permet, lui, de synchroniser n'importe quel répertoire qui se situe sur un disque en RAM (il est donc plus général).
Compiler en RAM
Toujours pour réduire le nombre de lectures et d'écriture sur un SSD, on peut compiler ailleurs (comme lors de l'appel à makepkg). On peut utiliser un système de fichiers spécial (il est en RAM) nommé tmpfs, ou tout simplement compiler sur un autre périphérique.
Il suffit de modifier la variable BUILDDIR du fichier /etc/makepkg.conf
en spécifiant le chemin où compiler, par exemple :
BUILDDIR=/tmp/makepkg
Voir aussi
- Benchmark de SSD (en) : SSD testés par les utilisateurs d'Arch