L’utilisation d’un SSD avec une distribution GNU/Linux est un peu particulière, et pour certains elle pourra paraître plus délicate à maîtriser.
D’abord il faut quand même prendre en compte, ou tout du moins connaître trois points techniques liés aux SSD.
Termes techniques liés aux SSD
- Alignement des partitions
Même si l'alignement des partitions n'est pas spécifique aux SSD, il n'a que très peu d'importance sur un spinoff, sauf dans le cas des volumes RAID5. L'alignement consiste à faire correspondre les blocs logiques des partitions avec les blocs physiques du SSD pour améliorer les performances de celui-ci afin de limiter les opérations de lecture et d'écriture.
- Wear levelling
C'est une Technique utilisée par les contrôleurs des SSD. Elle consiste à répartir l'usure des puces mémoires en écrivant le moins souvent possible dans les même cellules, et en profitant ainsi au maximum du nombre de cycles de lecture-écriture de chacune des cellules. De ce fait, avec un bon algorithme de wear levelling, on arrive à faire en sorte qu'un SSD ait une durée de vie de l'ordre de plusieurs années.
- Garbage collector
C'est un Mécanisme visant à réorganiser la table d'allocation à la volée, permettant de conserver un bon niveau lors d'écritures séquentielles sur une zone précédemment écrite de manière aléatoire.
Avantage : on récupère les performances d'origine du SSD en écriture séquentielle ou presque.
Inconvénient : on génère de nombreuses écritures dans les puces mémoire, ce qui a tendance à amoindrir la durée de vie du SSD, et le disque travaillant en interne, il ne libère pas les pages de Flash comme le fait le TRIM, ce qui fait que cela n'est efficace que pour les écritures séquentielles, sans améliorer les écritures aléatoires. Tous les SSD semblent utiliser ce procédé, de manière plus ou moins agressive, et ce à la volée ou en tâche de fond (on parle alors de background garbage collection) en fonction de l'objectif du fabricant.
Alignement des partitions
- C’est quoi l'alignement ?
Le contrôleur d'un SSD gère la mémoire par "blocs", généralement de 1 Mio. Cela sert à plusieurs choses : d'une part, les accès mémoire se font généralement par blocs pour améliorer les performances, et d'autre part, ces blocs sont régulièrement permutés pour prolonger la durée de vie du disque. Pour de bonnes performances, il est préférable que le début de partitions coïncide avec le début des blocs. On appelle cela l'alignement.
- Vérification de l’alignement du SSD?
Par défaut, lors du formatage d'un disque, Ubuntu détecte qu'il s'agit d'un SSD et aligne les partitions automatiquement (y compris en partitionnement manuel).
Si vous voulez en être sûr, tapez dans un terminal :
Code : Tout sélectionner
sudo fdisk -lu /dev/sda
Code : Tout sélectionner
Disque /dev/sda: ---- Go, -------------- octets
--- têtes, -- secteurs/piste, ------ cylindres, total ------- secteurs
Unités = secteurs de 1 * 512 = 512 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : ----------
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 XXXX YYYY ZZZZ 83 Linux
- Formatage manuel du SSD (usage avancé)
Je ne m’étendrais pas sur ce point car cette méthode provient du forum http://forum.hardware.fr et elle a été initialement conçue pour Arch. La méthode de partitionnement est susceptible de varier sous Ubuntu
Ne suivez cette méthode que si vous êtes sûr de vous et que si vous savez résoudre des problèmes pouvant arriver au cours d'un formatage !
- Formatage automatique du SSD (de base)
Ne pas confondre formatage et partitionnement, même si les deux sont liés, on peut parfaitement faire un formatage automatique, et un partitionnement manuel.
C’est ce que j’ai choisis pour mon cas, j'ai partitionné mon SSD comme ceci :
sdd1 : /
sdd2 : /home
il n'y a pas de partition swap.
Note: sur ma config principale Ubuntu 14.04 64Bits avec un SSD SAMSUNG Série 850 EVO 250Go SATA III j'ai créé une partition Swap)
(Pour plus d'info sur le Swap, lire le paragraphe 3)
- Optimiser l'usage du SSD
Il n’existe pas d'étude suffisamment claire quant à la durée de vie des mémoires SSD par rapport aux disques durs. les sections qui suivent vous explique comment minimiser les accès en écriture du SSD.
Les points 2 à 4 sont réservés aux PC ayant plus de 512 Mio de mémoire vive (RAM).
1 - Réduire la fréquence d'écriture des partitions
Utilisez l'option noatime pour éviter d'écrire sur le disque la date du dernier accès en lecture lorsqu'il n'y a pas d'écriture. De même avec nodiratime pour les dossiers.
Note : il existe le même type de réglage sur Windows pour les partitions NTFS
Vérifier que vos partitions sont montées avec cette option en ouvrant le fichier /etc/fstab avec les droits d'administration: [!] Préférable d'utiliser nano plutôt que gedit.
Code : Tout sélectionner
sudo gedit /etc/fstab
Code : Tout sélectionner
UUID=57480a3f-e7db-4a5e-9fca-7df45f5a7d9d / ext4 defaults,noatime,errors=remount-ro 0 1
nodiratime est superflu, car noatime est un sur-ensemble de nodiratime (qui est alors sous-entendu)
2 - Mettre les fichiers temporaires en mémoire vive
Le système utilise un certains nombre de fichiers temporaires, qu'il n'est pas nécessaire de conserver d'un démarrage à l'autre. Il est possible de les placer dans la mémoire vive (qui est vidée à l'arrêt de l'ordinateur) au lieu de les avoir dans le SSD.
Cependant, certains logiciels (tels que l'environnement de bureau KDE) utilisent un grand nombre de fichiers temporaires, et devront alors les recréer, ce qui peut ralentir le démarrage si vous utilisez ces logiciels.
Pour mettre les fichiers temporaires en mémoire vive (par exemple, pour une taille maximum de 1 Gio), ouvrez dans un terminal le fichier /etc/fstab avec les droits d'administration: [!] Préférable d'utiliser nano plutôt que gedit.
Code : Tout sélectionner
sudo gedit /etc/fstab
Code : Tout sélectionner
tmpfs /tmp tmpfs defaults,size=1g 0 0
Note: bizarrement ce réglage me crash systématiquement Firefox, j'ai pas la certitude que cela provienne de ce réglage, du coup, j'ai remis celui que j'ai dans l'autre config avec Ubuntu en 32Bits.
Code : Tout sélectionner
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
Pour regarder le contenu de votre crontab, tapez dans un terminal :
Code : Tout sélectionner
crontab -l
Code : Tout sélectionner
crontab -e
La commande à mettre dans la tâche cron est la suivante :
Code : Tout sélectionner
find /tmp -type f -mmin +1440 -delete > /dev/null
Code : Tout sélectionner
20 * * * * find /tmp -type f -mmin +1440 -delete > /dev/null
Quand vous sortez de l'éditeur, le nouveau fichier crontab sera installé. Le fichier est stocké dans /var/spool/cron/crontabs/<user> mais doit seulement être édité par l'intermédiaire de la commande crontab.
Si vous constatez des problèmes de connexion à certains sites sur lesquels vous êtes enregistré, supprimer ce réglage
3 - Le Swap
Les SSD n’aiment pas le SWAP (partition d'échange qui permet de délester l'utilisation de la mémoire, mais oblige à de multiple lecture/écriture sur le périphérique)
Il est possible de ne pas créer de partition SWAP durant l'installation d'Ubuntu en définissant les partitions manuellement (mode avancé). Cela va forcer l'utilisation de la mémoire vive et économiser l'espace qu'aurait pris cette partition sur le disque dur !
- Supprimer le swap
Cette astuce ne s'adresse qu'à ceux dont la machine dispose d'au moins 1 Go de RAM. Il est possible dans ce cas, et suivant l'utilisation que l'on fait de la machine de ne pas se servir de swap. Pour cela, soit on ne créer aucune partition de swap lors de l'installation de la distribution, soit, dans le fichier /etc/fstab, on commente la ligne montant le fichier swap avec le signe # :
UUID=bd746caf-bd0c-4649-baa7-d680bb91a6d0 swap swap defaults 0 0
devient alors :
#UUID=bd746caf-bd0c-4649-baa7-d680bb91a6d0 swap swap defaults 0 0
Il peut être préférable d'utiliser la méthode consistant à ne pas monter une partition de swap existante, de manière à pouvoir la réactiver facilement en cas de besoin, l'utilisation du swap pouvant varier en fonction de l'utilisation de la machine.
Si malgré tout vous avez créé une partition SWAP (notamment pour bénéficier de l'hibernation sur les portables), mais que vous souhaitez en minimiser l'usage, rien n’est perdu pour autant, dans un terminal ouvrir le fichier /etc/sysctl.conf avec les droits d'administration [!] Préférable d'utiliser nano plutôt que gedit.
Code : Tout sélectionner
sudo gedit /etc/sysctl.conf
vm.swappiness=0
Cette ligne indique à Ubuntu de n'utiliser la swap qu'en dernier recours quand votre RAM est “full” ! (“ 1 “ indique de l'utiliser seulement lorsqu'il ne reste que 1 % de disponible en RAM, “ 2” quand il reste 2 %, etc.).
Une autre méthode consiste à activer zRAM, qui est un module du noyau qui compresse la mémoire vive au lieu de la déplacer dans la partition d'échange en cas de manque de mémoire vive. La partition d'échange ne servant que si la mémoire vive est entièrement compressée. Pour ce faire il suffit d'installer le paquet zram-config et le tour est joué
Code : Tout sélectionner
sudo apt-get install zram-config
Pour déplacer le cache de Firefox dans le répertoire /tmp/firefox (RAM). Taper about:config dans Firefox et créer une nouvelle chaîne de caractères que vous nommerez browser.cache.disk.parent_directory et saisir /tmp/firefox.
Si vous avez une connexion suffisamment rapide, vous pouvez désactiver complètement le cache persistant en modifiant l'option browser.cache.disk.enable avec la valeur false.
5 - Le Trimming.
Comme il a déjà été dit, les disques SSD voient leurs performances diminuer à mesure que les cellules (bloc mémoire) se remplissent (même partiellement) et cela induit des performances en écriture de plus en plus médiocres à mesure que le SSD vieillit et qu'il y a de moins en moins de cellules vierges disponibles.
Ce phénomène est dû à la manière dont le SSD fonctionne en écriture au niveau des cellules de mémoire flash : si une cellule est vierge, le contrôleur peut directement écrire dedans - par contre si elle contient déjà des données (même 1 seul bloc d'allocation de 4k alors que la cellule contient 1024k au total), le contrôleur doit lire la cellule + la remettre à zéro + écrire les données.
Une opération beaucoup plus lente. Le Trimming a pour objet d'indiquer au contrôleur du SSD lorsque des blocs d'allocation se libèrent suite à l'effacement de fichiers par le filesystem (ce qu'il ne peut pas savoir directement à priori); et donc que ces plages libérées sont à nouveau disponibles pour écrire dessus - charge étant au contrôleur de remettre à zéro les cellules qui peuvent l'être et ainsi augmenter les cellules vierges disponibles. Bien entendu, il faut que le SSD supporte la commande TRIM afin de pouvoir réaliser cette opération (ce qui est le cas pour la plupart des SSD récents). Vous pouvez vérifier cela dans un terminal :
Code : Tout sélectionner
sudo hdparm -I /dev/sda
- Trimming à la volée
conditions requises :
- Disposer d'un SSD supportant le TRIM
- Utiliser une distribution proposant au moins le kernel 2.6.33
- Utiliser EXT4 comme système de fichier
Note: Avec Ubuntu 14.04 le montage des fichiers systèmes avec l'option "discard" n'est pas recommandé
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda1
UUID=f0d9c48e-00c4-4225-ab21-1c5a42194bc8 / ext4 async,noatime,discard,errors=remount-ro 0 1
# /dev/sda2
UUID=43e974d7-82d9-43b1-b67b-5233b18f056e none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
Ensuite les commandes de TRIM sont directement passées au contrôleur du SSD par le kernel, de façon entièrement transparente.
- Activer le TRIM avec fstrim
Le montage des fichiers systèmes avec l'option "discard" n'est pas recommandé, car cela se traduira probablement par une baisse des performances en utilisation normale. Cependant, vous pouvez utiliser TRIM en exécutant la commande fstrim occasionnellement ou de créer votre propre tâche cron qui exécute fstrim via un calendrier.
pour activer le TRIM de votre SSD sur Ubuntu, il suffit d'ouvrir un terminal et d'exécuter la commande suivante:
Code : Tout sélectionner
sudo fstrim -v /
Voilà comment faire une tâche cron qui le fera automatiquement
d'abord, exécutez la commande suivante pour ouvrir l'éditeur de texte nano avec les permissions root:
Code : Tout sélectionner
sudo nano /etc/cron.daily/fstrim
#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG
Les deux dernières commandes dans le code ci-dessus effectuent le Trimming réel pour la racine (/) et la partition (/ home) et consigne les résultats dans /var/log/trim.log. Vous devrez peut-être modifier ces commandes pour adapter à votre cas particulier. Si vous ne disposez pas d'une partition / home séparée vous devez supprimer la dernière ligne. Ajoutez ici les partitions de SSD pour lequel vous souhaitez activer le travail quotidien du TRIM (normalement , vous devez ajouter "/" si la partition racine est sur le SSD et "/ home" si vous avez mis en place une partition home séparée)
Enregistrez le fichier en appuyant sur Ctrl + O et appuyez sur Entrée pour confirmer. Appuyez sur Ctrl + X pour fermer nano après avoir sauvegardé le fichier
dernièrement, exécutez la commande suivante pour rendre le script exécutable:
Code : Tout sélectionner
sudo chmod +x /etc/cron.daily/fstrim
- Input/Output Scheduling
Ce mécanisme de réarrangement des IOCTL a pour objet d'optimiser les commandes I/O vers le disque dur ATA/SATA en prenant en compte la nature du disque dur en question et certaines contraintes en découlant. Il y a trois différentes options : cfq, noop et deadline. Par défaut dans Ubuntu, l'option "cfq" est utilisée car elle convient bien aux disques durs mécaniques, en réorganisant la queue des commandes I/O en fonction des temps de rotation des plateaux et des délais de "seek" des têtes. Vous pouvez vérifier quel I/O Scheduler est utilisé par votre système dans un terminal comme ceci :
Code : Tout sélectionner
cat /sys/block/sda/queue/scheduler
6 - Pour grub2 (depuis Ubuntu 9.10)
Il faut modifier le fichier en éditant /etc/default/grub avec les droits d'administrateur: [!] Préférable d'utiliser nano plutôt que gedit.
Code : Tout sélectionner
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="elevator=deadline quiet splash"
puis mettre à jour grub pour que les modifications soient passées à grub.cfg :
Code : Tout sélectionner
sudo update-grub
http://doc.ubuntu-fr.org/ssd_solid_state_drive
Les SSD sous Linux : recensement, optimisation, conseils
Optimiser son SSD sous Linux
Autre sources :
http://www.howtogeek.com/176978/ubuntu- ... -yourself/
http://www.webupd8.org/2013/01/enable-t ... rives.html
Vous pouvez retrouver ce tuto sur mes blogs :
http://easy.pc.blog.free.fr
http://easy-pc.over-blog.com
Ce tutoriel est aussi disponible au format PDF :
http://easy.pc.blog.free.fr/public/PDF/ ... Ubuntu.pdf