From Mageia wiki
Jump to: navigation, search


Drakconf multiflag.png
Autres langues
Deutsch ; English ; Français ; Nederlands ;

Introduction

Les unités SSD sont très rapides, silencieuses et de moins en moins onéreuses; utilisons les ! Mais il faut être prudent, sans quelques précautions simples, un SSD peut lâcher prématurément car sur ces appareils le nombre de cycles d'effacement/écriture sont plus limités que sur un disque dur traditionnel.

Il suffit de suivre quelques règles pour minimiser le nombre de cycles d'effacement/écriture. Une fois ces règles en place, un SSD récent peut durer au moins 5 ans, même sur un serveur fortement sollicité.

Firmware

Dès l'achat d'un SSD neuf et avant même sont utilisation, il est bon de vérifier que le firmware est à jour. Les fabricants fournissent des outils de mise à jour de leur firmware et en raison de l'évolution rapide de la technologie, des mises à jour importantes de votre SSD sont probablement déjà disponibles.

Alignement des partitions

Test simple

Jusqu'à présent, les outils de partitionnement étaient optimisés pour la création de partitions sur des disques durs avec des plateaux, des cylindres et des têtes. Ces choses n'existent plus avec les SSD. Optimiser les partitions signifie les aligner avec les clusters du SSD. Pour connaître si c'est le cas de votre périphérique, essayez cette commande dans une console avec les droits root :
où sdx désigne votre unité (sda par exemple). Le système réponds quelque chose comme :

# fdisk -lu /dev/sdx

Disque /dev/sda: 320.1 Go, 320072933376 octets 255 têtes, 63 secteurs/piste, 38913 cylindres, total 625142448 secteurs Unités = secteurs of 1 x 512 = 512 octets Taille de secteurs (logique / physique): 512 octets / 4096 octets taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets Identifiant de disque : 0x0f2a40f9 Périphérique Amorce Début Fin Blocs Id Système /dev/sda1 * 2048 61442047 30720000 7 HPFS/NTFS/exFAT /dev/sda2 61444089 203736329 71146120+ 5 Etendue La partition 2 ne démarre pas sur une limite de secteur physique. /dev/sda5 61444096 84566159 11561032 83 Linux /dev/sda6 84570112 147669479 31549684 83 Linux /dev/sda7 147673088 155846564 4086738+ 82 Linux swap / Solaris /dev/sda8 155846628 178546409 11349891 83 Linux La partition 8 ne démarre pas sur une limite de secteur physique. /dev/sda9 178546473 203736329 12594928+ 83 Linux La partition 9 ne démarre pas sur une limite de secteur physique. [root@localhost ~]#

Dans ce cas présent, le système indique quelles partitions ne sont pas correctes (2, 8 et 9). Pour chaque partition, il suffit de diviser le nombre de la colonne Début par 2048 (2048 clusters dans un Mio). Par exemple, sda6 démarre à 84570112, divisé par 2048 donne 41294, c'est un nombre entier, donc cette partition est alignée.

Nouveau partitionnement

Si votre projet nécessite un nouveau partitionnement, faites le avant l'installation de Mageia car il n'est pas sûr que DrakDisk crée des partitions alignées. GParted est recommandé. Si vous n'êtes pas un expert, Live GParted est plus simple (pas de partitions montées) :

  • Booter sur le CD Live GParted, acceptez les valeurs par défaut et choisissez votre langue
  • Dans l'écran principal, sélectionnez votre disque (dans l'angle supérieur droit) et cliquer sur Nouvelle partition (première icône avec un + vert)
  • Dans le nouveau dialogue, vérifier que le champ "Espace libre précédent (Mio)" est à 1 Mio pour la première partition du SSD (place nécessaire pour le MBR). Pour les partitions suivantes ce champ doit être à zéro.
  • Le champ "Aligner sur" doit être sur Mio.
  • le système de fichiers doit être ext4.
Gparted1 fr.png
Remarque :
La commande fdisk indique des tailles en blocs de 512 octets. Donc, si avec Gparted vous avez démarré une partition à 1 Mio, fdisk indiquera 2048 (2048x512=1 Mio)

Partitionnement déjà réalisé

Trop tard, Mageia fonctionne et les partitions ne sont pas alignées ! Ce n'est pas un problème, GParted peut modifier un partitionnement existant. Consultez l'aide de Gparted (Aide -> Sommaire -> Opérations sur les partitions -> Actions avancées sur les partitions -> Déplacement d'une partition)

La commande trim

Présentation

Il est impossible sur un SSD d'écrire par-dessus une zone déjà écrite, le système doit d'abord effacer les données présentes avant de pouvoir écrire à nouveau. La commande trim permet au système d'effacer les données périmées pendant les périodes inactives du SSD et ainsi de gagner du temps lors de l'écriture. trim limite aussi le besoin de déplacer des données pour libérer de l'espace, augmentant ainsi la durée de vie du SSD.

trim peut être actif si vous possédez :

  • Un noyau Linux version 2.6.33 ou supérieure
  • Un système de fichiers ext4, Btrfs, ou swap.
  • Une interface matérielle SATA
Remarque :
trim ne supporte pas les technologies RAID ou SCSI

Utilisation de la commande trim

Il y a plusieurs façons d'activer trim :

  • ajouter l'option discard dans un fichier de configuration (ex: /etc/fstab). L'activation est alors permanente.
  • utiliser la commande fstrim soit dans une console ou mieux dans un script pour activer automatiquement la trim au moment opportun.

fstrim.timer

Depuis plusieurs versions systemd gère le trim via un .timer:

  • Activation du timer.
# systemctl enable fstrim.timer
  • Lancer le timer.
# systemctl start fstrim.timer
  • S'assurer que le timer est actif :
# systemctl status fstrim.timer

Le terme "active" apparait suite à cette commande.

  • Enfin, ces étapes peuvent être réduites en une seule commande permettant l'activation et le lancement du .timer:
# systemctl enable --now fstrim.timer

L'option discard

Remarque :
Il n'est plus recommandé d'utiliser l'option discard dans les entrées du fichier /etc/fstab, car cela ralentit l'effacement des fichiers. La seule exception concerne la présence d'une partition swap sur l'unité SSD (les partitions swap n'ont pas de point de montage). Utilisez votre éditeur de texte favori pour ajouter l'option discard dans l'entrée du swap et seulement celle-ci.

Pour activer la commande trim, éditez votre fichier /etc/fstab, par exemple avec l'éditeur vim

# vim /etc/fstab

# Entry for /dev/sda1 : UUID=a008be25-1898-4149-af3e-6b22260586b0 / ext4 acl,relatime 1 1 # Entry for /dev/sda2 : UUID=9af64cdc-a611-47c3-821e-94a9fd60251e swap swap defaults,discard 0 0 # Entry for /dev/sda5 : UUID=4c5e50d9-16c0-4f24-acc9-ee13f899b1d1 /home ext4 acl,relatime 1 2 # Entry for /dev/sdb8 : UUID=c651fd07-b486-4eee-aaab-4acf5220c763 /home/samageia/multimedia ext2 defaults 1 2 /dev/cdrom /media/cdrom auto umask=0,users,iocharset=utf8,noauto,ro,exec 0 0 # Entry for /dev/sdb1 : UUID=7A60F79E60F75F77 /media/win_c ntfs-3g defaults,umask=000 0 0 # Entry for /dev/sdb7 : UUID=445C-DFC4 /media/win_d vfat umask=000,iocharset=utf8 0 0 none /proc proc defaults 0 0

et il suffit d'ajouter "discard" dans l'entrée du swap, s'il est sur un SSD. Dans cet exemple, sda est un SSD.

Un peu d'aide pour vim? Entrer dans cet ordre :

  • i -> mode insertion
  • touches fléchées -> pour se déplacer dans le texte
  • entrer le texte
  • esc -> fin du mode insertion
  •  : -> mode commande, apparaît en bas de l'écran
  • wq -> enregistre et quitte (ou q! pour quitter sans enregistrer)

Si vous utilisez des volumes physiques lvm sur un SSD, éditer /etc/lvm/lvm.conf et passer la valeur de issue_discards de 0 à 1.

Si vous utilisez des systèmes de fichiers chiffrés, montés lors du boot, éditer /etc/crypttab et ajouter l'option discard. Par exemple (utilisation d'un système de fichiers chiffré sur lvm) :

# cat /etc/crypttab

crypt_vgc_lvc2 /dev/vgc/lvc2 - discard

Si le système de fichiers est monté manuellement, ou par vos propres scripts, l'option --allow-discards doit être ajoutée à la commande cryptsetup luksOpen.

La commande fstrim

Pour lancer trim, utiliser la commande fstrim <point de montage du système de fichiers dans une console, avec les droits root, par exemple :

# fstrim /home

Le système de fichiers doit être monté.

Pour obtenir une action automatique, ajouter le script suivant dans /etc/cron.daily pour appliquer le trim à tous les fichiers effacés, sans attente ni interférence avec les opérations régulières d'écriture :

#!/bin/bash IFS=$'\n' for device in /dev/sd?; do drive=${device##*/} if $(udevadm info -q env -p /block/"$drive"|egrep -q 'ID_ATA_ROTATION_RATE_RPM=0'); then # ssd drive found mounts=($(grep /dev/"$drive" /proc/mounts|grep -v -w ro)) # mounts is now a list of writeable mounts on the ssd drive for mount in "${mounts[@]}"; do mountnodev=${mount#* } # strip first space and everything before it mountpoint="${mountnodev%% *}" # strip first space and everything after it fstrim "$mountpoint" # Inform device which blocks on the filesystem are no longer in use done fi done mounts=($(grep ^/dev/mapper /proc/mounts|grep -v -w ro)) # mounts is now a list of mounted lvm or encrypted writeable mounts which may be on the ssd drive for mount in "${mounts[@]}"; do mountnodev=${mount#* } # strip first space and everything before it mountpoint="${mountnodev%% *}" # strip first space and everything after it fstrim "$mountpoint" # Inform device which blocks on the filesystem are no longer in use done unset IFS

Noatime

Dans ce même fichier /etc/fstab il est aussi possible de changer relatime pour noatime afin de demander au système de ne pas écrire les dates d'accès lors de la lecture des fichiers. Cela évitera beaucoup d'opérations d'écriture sur le SSD mais ces dates sont quelquefois utilisées par des logiciels (kmail par exemple).

Références