Ceci est une ancienne révision du document !


Trim

Voir le vocabulaire_de_la_technologie_ssd.
Vous pouvez vérifier le support du Trim par votre SSD par :

sudo hdparm -I /dev/sda | grep TRIM

où vous remplacez /dev/sda par l'identifiant de votre disque.
(Une sortie vide indique que le Trim n'est PAS supporté par votre SSD.) Sinon, une ligne doit clairement indiquer le support du Trim.

Il existe plusieurs mécanismes de Trim des disques SSD :

Trim à la volée

De loin la solution la plus facile et la plus souple.
Il suffit de rajouter l'option discard dans les lignes correspondant aux partitions en ext4sur le SSD dans le fichier /etc/fstab :

 sudo gedit /etc/fstab

Et :

# /dev/sda1
UUID=f0d9c48e-00c4-4225-ab21-1c5a42194bc8 /               ext4    noatime,errors=remount-ro 0       1

devient

# /dev/sda1
UUID=f0d9c48e-00c4-4225-ab21-1c5a42194bc8 /               ext4    noatime,discard,errors=remount-ro 0       1

Dès le prochain démarrage, le Trim sera activé, de façon entièrement transparente.

Il semble qu'une meilleure méthode, plus véloce lors d'effacement de nombreux petits fichiers soit de lancer un script une fois par jour pour le trim (fstrim+tâche cron). Voir ici (en anglais…) : http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html
FIXME : Je ne suis pas convaincu… Du tout.

Trim en manuel

Cette méthode n'est nécessaire que dans le cas d'une partition principale en ext3 ou d'un noyau inférieur à 2.6.33. Il est conseillé d'effectuer un trim manuel environ une fois par mois pour une utilisation normale du SSD.
On ne peut pas lancer un TRIM en manuel sur une partition utilisée. Il faudra donc démarrer sur un live-usb ou un disque dur externe.

Nous allons utiliser le script wiper.sh qui est distribué avec le paquet hdparm. Il faut au minimum une version v9.28 ou plus élevée de hdparm. On peut vérifier la version dans un terminal :

hdparm -V

Il est fortement conseillé d'utiliser les sources les plus récentes de hdparm (pour moins de risques d'incompatibilité…) ; ce qui implique de télécharger et recompiler les sources du paquet hdparm. Vous serez guidés :

  • Télécharger la dernière version de hdparm
  • Décompressez l'archive et copiez le dossier dans la clé usb du Live-usb au premier niveau
  • Démarrez sur le Live-usb, sans installer Ubuntu.
  • Ouvrez un terminal
  • Allez dans dossier contenant hdparm (Normalement, /cdrom/hdparm-9.xx)en lançant : cd /cdrom/hdparm-9.*
  • Lancez, l'une après l'autre, les commandes :
    make \\ sudo make install
  • Allez dans le dossier wiper : cd wiper
  • Démarrez une simulation de Trim sur votre partition :
    sudo ./wiper.sh /dev/sda1
  • Si la simulation se passe bien, vous pouvez lancer réellement le Trim en lançant :
    sudo ./wiper.sh --commit /dev/sda1

Si tout se passe bien, vous devriez pouvoir redémarrer sur votre SSD.
Il faut malheureusement recompiler et réinstaller hdparm à chaque démarrage sur la clé USB (à moins d'avoir un Live-usb persistant).

Plus d'informations sur l'utilisation de « hdparm »

Trim d'un volume NTFS

Un des avantages de la méthode hdparm/wiper.sh décrite ci-dessus est que l'on peut effectuer le trim d'un volume NTFS. Ce qui est très utile dans le cas d'un système à double démarrage Linux/Windows avec une version XP ou Vista installée dans le volume NTFS (Windows 7 prend en charge le TRIM à la volée en standard). C'est plus facile à faire sur un volume NTFS, car il n'y a pas besoin d'utiliser un Live-usb pour libérer la partition Linux. Il suffit que le volume NTFS soit hors ligne (non monté).

Il est quand même conseillé de télécharger, recompiler et installer la dernière version des sources hdparm dans votre volume / et elle sera ensuite disponible de façon permanente.

Procédure :

  • télécharger et compiler la dernière version des sources hdparm, puis installer
  • faire une sauvegarde ou un clone de votre partition NTFS - on ne sait jamais…
  • dans un terminal, aller dans le dossier qui contient hdparm, puis dans le sous-dossier wiper
  • vérifier que votre partition NTFS est bien démontée et repérer le No de partition
  • faire une simulation de TRIM sur la partition NTFS (dans cet exemple elle se trouve sur sda3)
    sudo ./wiper.sh /dev/sda3
  • si tout se passe bien, effectuer le TRIM pour de vrai en rajoutant --commit
    sudo ./wiper.sh /dev/sda3 --commit

Modification faite le 24/12/2011 La version 3.3 de Wiper fournie avec HDPARM-9.37 réserve une surprise possible pour certains formats NTFS . Explication dans le source lignes 657 et 358

       ## This is where we finally discover whether the filesystem actually
       ## supports --fallocate or not.  Some folks will be disappointed here.

qui survient lorsque la partition n'a pas été démontée correctement.

L'effacement sécurisé

C'est une autre méthode brutale d'optimisation qui s'adresse principalement aux utilisateurs qui ne voudraient pas utiliser la méthode de TRIM manuel, ou bien qui auraient des difficultés à recompiler les sources hdparm, ou encore dont le disque SSD ne supporterait pas la commande TRIM. Le but est d'utiliser la commande ATA Secure-Erase qui déclenche un effacement complet du disque par écriture de 00h dans tous les octets de sa surface (donc pour un disque SSD la remise à zéro effective de toutes les cellules flash).

  • Avantages : plus simple que le TRIM en manuel, le disque SSD se retrouve comme à sa sortie d'usine.
  • Inconvénients : clonage préalable du disque indispensable, moins efficace que le TRIM, probable manipulation hardware requise
Un préalable indispensable est le clonage du disque en entier avant l'effacement. Avec la commande Secure Erase on perd absolument toutes les données, les partitions, le MBR et la table des partitions ! Le clonage a pour but de créer une image exacte (snapshot) de l'état du disque, secteur par secteur - que l'on pourra ensuite restaurer après l'effacement. Le meilleur programme pour faire cela est l'excellent Clonezilla développé par la Communauté Libre.

* Remarque : Il est à craindre que le fait de restaurer une image exacte va tout remettre comme avant. Et donc annuler l'effet de la remise à zero.

Une manipulation du disque lui-même sera probablement requise. En effet, pratiquement tous les BIOS récents mettent le HD en mode "frozen" au démarrage (pour des raisons de sécurité). Dans ce mode on ne peut pas exécuter la commande secure-erase. Dans ce cas, il faudra retirer le disque à chaud puis le réinsérer dans l'interface SATA. - ça s'appelle le Hot-Plug et l'interface SATA le permet, mais pas l'IDE (risque de destruction du disque SSD). Au moment où l'interface SATA reconnaît qu'un nouveau disque a été inséré, par défaut il ne le bloque pas en mode "frozen" contrairement à l'initialisation par le BIOS

Procédure :

  • effectuer un clonage du disque SSD en mode disk-device vers image (pour clonezilla)
  • redémarrer sur une clé Live-usb Ubuntu ou un cd d'installation Ubuntu (récents) afin que le disque SSD soit libéré
  • dans un terminal vérifier si le disque SSD cible est en mode frozen ou not frozen
    sudo hdparm -I /dev/sda

    (la mention se trouve dans le dernier paragraphe Security) - si déjà en mode "non gelé", sauter les 2 lignes suivantes

  • si le disque est en mode frozen (probable), il faut le retirer physiquement de l'interface, attendre quelques secondes, puis le réinsérer
  • vérifier à nouveau dans les paramètres "Security" comme indiqué ci-dessus que le disque est cette fois bien en mode not frozen
  • dans le terminal, taper les 2 commandes qui vont déclencher l'effacement (note : cas où le disque SSD se trouve en sda)
    sudo hdparm --security-set-pass NULL /dev/sda
    sudo hdparm --security-erase NULL /dev/sda

    l'exécution en soi ne doit prendre que quelques secondes pour un disque SSD

  • restaurer l'image-disque clonée au début
  • C'est fini !
  • utilisateurs/felixp/brouillon_ssd.1380570582.txt.gz
  • Dernière modification: Le 30/09/2013, 21:49
  • par FelixP