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 bash wiper.sh /dev/sda1
  • Si la simulation se passe bien, vous pouvez lancer réellement le Trim en lançant :
    sudo bash 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

Grâce au même script wiper.sh que précédemment, nous pouvons effectuer le Trim sur une partition en Ntfs. C'est très utile dans le cas d'un double-boot Linux/Windows(XP ou Vista) qui ne prennent pas en compte le Trim.
Il suffit que le volume NTFS soit hors ligne (non monté).

Le script wiper.sh se trouve normalement dans une archive, dans le dossier /usr/share/doc/hdparm/wiper/. Nous allons donc lancer :

cd /usr/share/doc/hdparm/wiper/
sudo gzip -d wiper.sh.gz
sudo fdisk -l # Pour repérer votre partition en Ntfs
sudo umount /dev/sdxx # Remplacez /dev/sdxx par l'identifiant de votre partition Ntfs, pour la démonter
sudo bash wiper.sh /dev/sdxx # Simulation de Trim

Si tout se passe bien pendant la simulation, vous pouvez effectuer réellement le Trim :

sudo wiper.sh /dev/sdxx --commit
Easter-egg si la partition Ntfs n'a pas été démontée :
       ## This is where we finally discover whether the filesystem actually
       ## supports --fallocate or not.  Some folks will be disappointed here.

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.1380572215.txt.gz
  • Dernière modification: Le 30/09/2013, 22:16
  • par FelixP