SSD : Différence entre versions

De ArchwikiFR
(Ajout d'un paragraphe destiné au NVMe)
m (coquille -un +on)
Ligne 52 : Ligne 52 :
 
On peut ajuster la valeur à laquelle le système va commencer à décharger le RAM dans le swap ('''swappiness'''). Par défaut, le système commencera à utiliser le swap dès que 60% de la RAM seront occupés. On peut donc définir une valeur entre 0 et 100.
 
On peut ajuster la valeur à laquelle le système va commencer à décharger le RAM dans le swap ('''swappiness'''). Par défaut, le système commencera à utiliser le swap dès que 60% de la RAM seront occupés. On peut donc définir une valeur entre 0 et 100.
  
Pour changer ce paramètre temporairement, une utilisera la commande suivante :
+
Pour changer ce paramètre temporairement, on utilisera la commande suivante :
 
  sysctl vm.swappiness=10
 
  sysctl vm.swappiness=10
 
Ou pour le changer définitivement, on éditera le fichier suivant :
 
Ou pour le changer définitivement, on éditera le fichier suivant :

Version du 4 octobre 2017 à 22:14


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.

Astuce : Les SSD ne sont pas aussi fragiles que certains le prétendent ! Un test a démontré qu'il est possible d'écrire au moins 100To de données avant que le SSD montre des faiblesses, et certains modèles (comme le Samsung 840 Pro) peuvent atteindre 2,4Po de données en écriture ! Article disponible sur Tech Report (en).

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 supporté nativement depuis Linux 3.3, et les périphériques supportant le 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.

Note : Il est possible qu'il soit nécessaire d'ajouter le module nvme dans la ligne MODULES du fichier /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 supporté par beaucoup de SSD.

Depuis Linux 3.8, le TRIM est supporté 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 supporte 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 supportant. 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
Attention : Monter une partition avec l'option 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). Par défaut, le système commencera à utiliser le swap dès que 60% de la RAM seront occupés. On peut donc 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 :

Fichier: /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.

Attention : Un disque dur étant plus lent qu'un SSD, une baisse de performance peut se ressentir.

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 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 de modification de tous les fichiers sur la partition concernée par l'option. Cela réduit donc les écritures "inutiles" sur le SSD.

Fichier: /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