Alouit

Menu

Optimiser Linux pour SSD, CompactFlash, et USB

Logo Debian

La technologie mémoire Flash étant présente dans les disques durs SSD, clés USB, et cartes CompactFlash. Ils ont un nombre limite de cycles, pour mieux les préserver et ainsi augmenter leur durée de vie, nous pouvons optimiser notre OS.

Prenons comme exemple un système Linux Debian 6 (Squeeze).

Optimiser Debian pour SSD, CompactFlash et clé USB

Principe de base

Lors de l’installation de votre système Debian, optez pour un système de fichier ext2 (donc non journalisé), veillez à ne pas créer de partition swap (fichiers d’échanges).

 

Optimisation générale

Nous allons monter les dossiers temporaires, mail, et logs en ram (les données seront donc perdues à chaque boot).

Editez le fichier /etc/fstab
/dev/hda1   /         ext2   noatime             0     1
tmpfs       /tmp      tmpfs  defaults,noatime    0     0
tmpfs       /var/tmp  tmpfs  defaults,noatime    0     0
tmpfs       /var/log  tmpfs  defaults,noatime    0     0
tmpfs       /var/mail tmpfs  defaults,noatime    0     0

Attribuons les répertoires /var/run et /var/lock en RAM:

Editez /etc/default/rcS

RAMRUN=yes
RAMLOCK=yes

Par défaut, syslogd donne signe de vie en écrivant dans un fichier toutes les 20 minutes, désactivons cela.

Editez /etc/default/syslogd

SYSLOGD="-m 0"

 

Remplaçons /etc/mtab

rm /etc/mtab
ln –s /proc/mounts /etc/mtab

 

Optimisation du kernel

 

Editez le fichier /etc/sysctl.conf

vm.swappiness = 0
vm.laptop_mode = 0
vm.dirty_writeback_centisecs = 12000
vm.dirty_expire_centisecs = 12000
vm.dirty_ratio = 10
vm.dirty_background_ratio = 1

Explications (valeurs 0 = désactiver):

  • vm.swappiness : désactive le fichier d’échange (swap)
  • vm.laptop_mode : Secondes après une lecture des fichiers modifiés
  • vm.dirty_writeback_centisecs : Quand le noyau doit vérifier si des données modifiées sont à écrire sur le disque
  • vm.dirty_expire_centisecs : Quand le noyau estime que les anciennes données doivent-être écrites sur le disque
  • vm.vm.dirty_ratio : quantité maximale de mémoire (en pour cent) à utiliser pour stocker les données modifiées
  • vm.dirty_background_ratio : quantité minimale de mémoire (en pour cent) à utiliser pour stocker les données modifiées

Scripts utiles

Désactivons l’historique bash du compte root

Editez /root/.bashrc
unset HISTFILE
unset HISTFILESIZE
unset HISTSIZE

Nettoyage des fichiers temporaires journaliers

Script à placer dans /etc/cron.daily/

Editer /etc/cron.daily/clean-tmp
#!/bin/sh
# Cleanup the /tmp directory and keep the 4 last files only
#
# 01/09/2008 - Creation by N. Bernaerts
# 13/07/2012 - No error if /tmp holds less than 4 files (thanks to Konstantin Laufer)
# 14/07/2012 - Properly handle filenames with specific caracters like '(' and ')'

ls /tmp/test/* -t1 | sed ‘1,4d’ | sed ‘s/\(.*\)/ »\1″/g’ | xargs rm -f $$.dummy

Une fois le fichier enregistré, rendez-le exécutable
chmod +x /etc/cron.daily/clean-tmp

Création des répertoires de fichiers temporaires

Au boot, le répertoire log est vide (étant stocké dans la RAM), il faut donc recréer les répertoires

Répertoire logs d’APT

Editez /etc/init.d/apt-tmpfs

#!/bin/bash
#
### BEGIN INIT INFO
# Provides: apt-tmpfs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Create /var/log/apt on tmpfs at startup
# Description: Create /var/log/apt needed by APT.
### END INIT INFO
#
# main()
#
case "${1:-''}" in
'start')
# create the /var/log/apt needed by apt
mkdir /var/log/apt
chmod 777 /var/log/apt
;;
'stop')
;;
'restart')
;;
'reload'|'force-reload')
;;
'status')
;;
*)
echo "Usage: $SELF start"
exit 1
;;
esac

Une fois le fichier enregistré, rendez-le exécutable, et faites en sorte qu’il se lance au boot
chmod +x /etc/init.d/apt-tmpfs
update-rc.d apt-tmpfs defaults 90 10

Pourquoi utiliser des technologies Flash

Hormis un nombre de cycles limités, le mémoire flash présente beaucoup d’avantages:

  • Taille réduite
  • Temps d’accès très faible
  • Peu sensible aux chocs
  • faible poids
  • Échauffement thermique
  • Consommation électrique

Cette technologie s’avère donc très utile et souvent utilisée pour des applications embarquées, pare-feu, routeur, etc..