Linux, SSD : performances et préservation (TRIM), fichiers en RAM (tmpfs)

asd 26 janv. 2017

Du fait de leur technologie, en dépit des avancées techniques, les SSD sont moins endurant que les HDD en terme d’écriture. Il existe du coup des solutions qui permettent de les préserver un peu, comme par exemple TRIM ou le fait de déplacer en mémoire RAM les fichiers souvent utilisés. Dans mon cas ce seront mes profils de navigateurs et mon client IRC.

Ces astuces ne vont certainement pas ajouter des années de service à mon SSD mais ce sera toujours mieux que rien. Puis comme ça je bidouille un peu :) Je prends ici l’exemple de mon système mais ces outils/techniques sont compatibles avec Ubuntu/Mint/Debian etc. Et hormis ce qui concerne une éventuelle installation, qui est propre à chaque distribution, le reste des manipulations sera sans doute le même.

  1. Effacer les blocs non utilisés sur un SSD
  2. Placer des fichiers/applications en RAM
    1. PSD pour les navigateurs : exemple avec Vivaldi etc
    2. ASD pour tout le reste : exemple avec HexChat

 

 

TRIM

C’est une commande qui permet d’indiquer à un OS, dans mon cas Archlinux, que les blocs X, Y & Z d’un SSD ne sont plus utilisés et peuvent donc être effacés. Il faut avant vérifier que son SSD est compatible avec cette technologie, s’il n’est pas trop vieux ce sera le cas. Je n’ai qu’en seul SSD sur ce PC mais si vous en avez plusieurs vous pouvez voir leur dénomination via la commande fdisk -l => Disque /dev/sda etc

┬─[aerya@Aerya:~]─[09:40:23]
╰─>$ sudo fdisk -l
Disque /dev/sda : 111,8 GiB, 120034123776 octets, 234441648 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
[...]
┬─[aerya@Aerya:~]─[09:40:26]
╰─>$ 

On peut ensuite voir si le SSD en question supporte TRIM. Pour ça il se peut que vous deviez installer hdparm qui est un utilitaire pour disques durs.

┬─[aerya@Aerya:~]─[09:41:22]
╰─>$ sudo hdparm -I /dev/sda | grep TRIM
	   *	Data Set Management TRIM supported (limit 8 blocks)
	   *	Deterministic read ZEROs after TRIM

Il ne reste qu’à l’activer. Les avis sont partagés quant à son activation par défaut, au montage des disques au boot, car il semble que parfois cela fasse disparaître des données. Du coup je me contente de le lancer de temps en temps via fstrim, inclus sous forme de service dans le paquet Util-Linux sur Arch. Par défaut il travaille une fois par semaine, ce qui suffit amplement sur des systèmes “classiques”.

Pour l’autoriser

sudo systemctl enable fstrim.timer

Pour l’activer

sudo systemctl start fstrim.timer

Pour confirmer qu’il est bien activé 

systemctl status fstrim.timer

Et vous devriez avoir ce genre de retour (touche q pour quitter)

┬─[aerya@Aerya:~]─[10:02:11]
╰─>$ systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week
   Loaded: loaded (/usr/lib/systemd/system/fstrim.timer; enabled; vendor preset:
   Active: active (waiting) since Thu 2017-01-26 10:02:11 CET; 1s ago
     Docs: man:fstrim

janv. 26 10:02:11 Aerya systemd[1]: Started Discard unused blocks once a week.
lines 1-6/6 (END)

Si c’est pas le cas vous pouvez relancer le service

sudo systemctl restart fstrim.timer

Et pour voir les logs

sudo  journalctl -u fstrim

 

 

 

Placer des fichiers en RAM

C’est pratique mais si vous êtes en environnement sécurisé soyez conscient que si vous ne chiffrez pas la RAM alors tout ce que vous mettrez dedans ne le sera pas non plus et pourra donc être récupéré (par qui sait récupérer des infos en RAM, évidemment…).

Vous connaissez sans doute déjà le principe du ramdisk, là ça repose en revanche sur tmpfs, l’intérêt étant que l’espace est dynamiquement alloué et non figé. Le but de l’opération est de par exemple placer en RAM votre profil Firefox/Vivaldi et de le synchroniser ensuite sur le SSD.

Et comme les choses sont bien faites il existe 2 paquets, pour Archlinux, permettant pour l’un de gérer les navigateurs et pour l’autre “tout le reste”. Pour Ubuntu suivez leur wiki et/ou utilisez profile-sync-daemon pour les navigateurs. Bien entendu SAUVEGARDEZ vos profiles/fichiers avant de les placer en RAM pour la 1ère fois.

 

Exemple avec Vivaldi via profile-sync-daemon

Pour l’installer suivez les indications sur le GitHUub. Sauvegardez votre profil de Vivaldi qui se trouve, par exemple dans /home/Aerya/.config/vivaldi (et vivaldi-snapshot vu que j’utilise les 2). Fermez votre navigateur (ou les) concerné et lancez-le

┬─[aerya@Aerya:~]─[10:54:30]
╰─>$ profile-sync-daemon 
 First time running psd so please edit /home/aerya/.config/psd/psd.conf to your liking and run again.

Vu que c’est le 1er lancement on doit, comme c’est indiqué, éditer sa configuration. Très basique, il suffit de décommenter les lignes (retirer le #) et d’indiquer les variables à utiliser

#
# $XDG_HOME_CONFIG/psd/psd.conf
#
# For documentation, refer to the psd man page or the wiki page
# https://wiki.archlinux.org/index.php/Profile-sync-daemon


[...]
#
BROWSERS="vivaldi vivaldi-snapshot chromium firefox"

# Uncomment and set to "no" to completely disable the crash recovery feature.
#
# The default is to create crash recovery backups if the system is ungracefully
# powered-down due to a kernel panic, hitting the reset switch, battery going
# dead, etc. Some users keep very diligent backups and don't care to have this
# feature enabled.
USE_BACKUPS="yes"

# Uncomment and set to an integer that is the maximum number of crash recovery
# snapshots to keep (the oldest ones are delete first).
#
# The default is to save the most recent 5 crash recovery snapshots.
BACKUP_LIMIT=5

Dans mon cas je veux activer psd pour Vivaldi, Vivaldi-snapshot, Firefox et Chromium & qu’il fasse 5 backups (en cas de plantage du PC et donc de la RAM).

Il suffit ensuite d’activer le service et le lancer

┬─[aerya@Aerya:~]─[11:56:16]
╰─>$ systemctl --user enable psd
Created symlink /home/aerya/.config/systemd/user/default.target.wants/psd.service → /usr/lib/systemd/user/psd.service.
┬─[aerya@Aerya:~]─[11:56:24]
╰─>$ systemctl --user start psd

On voit tout de suite que la RAM est impactée, chez moi se remplie de 2Go d’un coup. Vous pouvez ensuite utiliser votre navigateur comme d’habitude.

 

Exemple avec mon client IRC, HexChat, via anything-sync-daemon

Pareil, suivez le GitHub pour l’installer. Puis il faut éditer son fichier de configuration (avant de le lancer ofc) /etc/asd.conf. Fermez l’application que vous voulez placer en RAM et faites-en une SAUVEGARDE

Dans mon exemple j’y ajoute le dossier de mon HexChat et le nombre de backups que je souhaite (en cas de plantage PC donc vidage de la RAM). Au préalable j’ai sauvegardé le dossier /home/aerya/.config/hexchat

#
# /etc/asd.conf
#
# For documentation, refer to the asd man page
[...]
#
# Below is an example to whet your appetite.
#WHATTOSYNC=('/srv/http' '/var/lib/monitorix' '/foo/bar')
WHATTOSYNC=('/home/aerya/.config/hexchat')

# Define where data will reside in tmpfs.
# This location must be mounted to tmpfs and MUST be writable and executable.
#
# If using bleachbit, do NOT invoke it with the '--clean system.tmp' switch or
# you will remove a key dot file (.foo) from /tmp that asd needs to keep track
# of sync status.
#
# Note that using a value of '/dev/shm' can cause problems with systemd's
# NAMESPACE spawning only when users enable the overlayfs option.
#
#VOLATILE="/tmp"

# Uncomment and set to yes to use an overlayfs instead of a full copy to reduce
# the memory costs and to improve sync/unsync operations.
#
# You must modprobe either the 'overlayfs' or 'overlay' module prior to running asd if
# you enable this option. Distros running the linux kernel version >=3.18.0 are likely
# using the 'overlay' module while some distros shipping older kernels, notably Ubuntu
# provide the older version of this technology which is provided in the 'overlayfs'
# module not 'overlay' module.
#USE_OVERLAYFS="no"

# Uncomment and set to no to completely disable the crash recovery feature of asd.
#
# The default is to create crash recovery backups if the system is ungracefully
# powered-down due to a kernel panic, hitting the reset switch, battery going
# dead, etc. Some users keep very diligent backups and don't care to have this
# feature enabled.
USE_BACKUPS="yes"

# Uncomment and set to an integer that is the maximum number of crash recovery
# snapshots to keep (the oldest ones are delete first).
#
# The default is to save the most recent 5 crash recovery snapshots.
BACKUP_LIMIT=5

Il suffit ensuite d’activer le service et le lancer

┬─[aerya@Aerya:~]─[12:20:30]
╰─>$ systemctl enable asd asd-resync
Created symlink /etc/systemd/system/multi-user.target.wants/asd.service → /usr/lib/systemd/system/asd.service.
Created symlink /etc/systemd/system/default.target.wants/asd-resync.service → /usr/lib/systemd/system/asd-resync.service.
┬─[aerya@Aerya:~]─[12:20:56]
╰─>$ sudo systemctl start asd asd-resync

 

Bien évidemment la RAM en prend un coup dès qu’on y place des fichiers. Pour ceux qui en ont peu (4-8-12Go) il faut donc faire des choix car plus on y place de fichiers moins elle est disponible pour le reste de la machine.

 

Mots clés