Ceci est une ancienne révision du document !


Optimisation d'installation debian sur support CF / clef USB

Conseils pour installer une Debian sur un support ayant un nombre d'ecriture limité (carte CompactFlash, SD, clef USB, …)

Je n'ai pour l'instant pa expérimenté la totalité des astuces decrites ici, faute d'avoir craqué pour le mini PC qui servira de mediacenter

Utiliser un systeme de fichier non journalisé

Les systèmes de fichier journalisés (ext3 ou ext4 par exemple) écrivent continuellement un fichier journal des modifications sur le SSD, ce qui peut l'user prématurément.

En utilisant un système de fichiers non journalisé on évite l'ecriture du journal sur le support : le systeme de fichier ext2 sera utilisé sur le SSD pour en maximiser la durée de vie.

Diminuer la fréquence d'écriture des partitions

Utiliser l'option relatime pour éviter d'écrire sur le disque la date du dernier accès en lecture lorsqu'il n'y a pas d'écriture. Il s'agit du meilleur compromis entre cohérence du système de fichier et minimisation des écritures sur le disque.

exemple de fstab correspondant pour le /:

UUID=38e729d4-d0ba-410c-8d09-155de85b646a /               ext2    defaults,relatime,errors=remount-ro 0       1

Placer les fichiers temporaires en mémoire vive

Pour faire ca il faut disposer d'un peu de RAM, mais vue le prix actuel, ca n'est pas un probleme

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 ainsi possible de les placer dans la mémoire vive (qui est vidée à l'arrêt de l'ordinateur) au lieu de les avoir sur la CF (cela peut ralentir le demarrage de certains logiciels, qui doivent recréer leur fichiers temporaires a chaque reboot, mais who cares)

Pour mettre les fichier temporaires en mémoire vive, voici un exemple de fichier /etc/fstab :

tmpfs      /tmp            tmpfs        defaults           0    0
tmpfs      /var/tmp        tmpfs        defaults           0    0
tmpfs      /var/cache/apt/archives tmpfs defaults          0    0

Les logs sur un mediacenter, on s'en fout un peu , non ? ;-) On pourrait donc rajouter le /var/log dans la liste des tmpfs

Il faut cependant recréer les sous répetoires nécessaires lors de chaque reboot, comme par exemple /var/cache/apt/archives/partial : on peut placer ces commandes dans un script appelé au démarrage
Le répertoire /var/cache/apt/archives/partial/ mentionné ci dessous est maintenant (depuis la ubuntu 10.10 et contrairement la 10.04) recréé automatiquement et ne nécessite donc plus la manipulation décrite
  • pour créer automatiquement certains répertoires au reboot :
    cat << EOF > /etc/cron.d/create_directories
    # creer les sous repertoires des tmpfs au reboot
    @reboot root /usr/local/sbin/createDirectoriesOnBoot.sh
    EOF
    chmod +x /etc/cron.d/create_directories
    cat << EOF > /usr/local/sbin/createDirectoriesOnBoot.sh
    #!/bin/bash
    # cree les repertoires nécessaires (a cause du tmpfs sur les partitions)
    
    DIRECTORIES="/var/cache/apt/archives/partial/"
    for DIR in $DIRECTORIES; do
    	mkdir $DIR
    done
    EOF
    chmod +x /usr/local/sbin/createDirectoriesOnBoot.sh

Placer les profils utilisateur des logiciels en RAM

Les fichiers temporaire sont tres souvent lus/ecrits par les différents logiciels (firefox par exemple) dans le profil utilisateur. Il s'agit ici de limiter les accès au SSD par FireFox, sans pour autant perdre tout son profil à chaque boot.

Le principe est donc d'utiliser la RAM (ramfs) pour le profil firefox pendant son fontionnement :les lectures/ecritures se feront alors dans la RAM et non pas sur le SSD.

Pour ne pas perdre son profil a chaque fois il suffira de sauvegarder ce profil sur le SSD a chaque arrêt de la machine (et de recopier cette sauvegarde en RAM lors du démarrage)

  • Création initiale :
    cp -r /home/mediacenter/.mozilla /home/mediacenter/.mozilla_ref
  • On monte en RamDisk le répertoire du profil FireFox : extrait du fstab :
    none      /home/mediacenter/.mozilla         tmpfs           defaults,uid=1000,gid=100,mode=750     0 0

:!: attention de bien adapter les login/uid/gid a votre cas :!:

  • Pour la synchronisation on utilisera l'outil rsync qui fait de la copie incrémentale :
    rsync -a /home/mediacenter/.mozilla_ref/ /home/mediacenter/.mozilla/
  • A l'extinction de la machine on sauve ce profile sur le SSD :
    rsync -a /home/mediacenter/.mozilla/ /home/mediacenter/.mozilla_ref/
Ce principe peut bien sur être étendu a tout logiciel utilissant de maniere intense les fichiers du profil utilisateur

Voici un exemple de script a placer dans /etc/init.d/ qui réalise ces opérations (ne pas oublier de le faire éxecuter au demarrage/arret de la machine :

#!/bin/bash
# /etc/init.d/syncProfiles
# synchroniser les profils utilisateurs entre la RAM (tmpfs) et le SSD
# (sous entend que les répertoires de profil utilisés sont en tmpfs), cf /etc/fstab ci dessus

# nom de l'utilisateur
USER="mediacenter"
# liste profils a sauvegarder (les profils de sauvegarde seront suffixés en "_ref") séparés par des espaces
# pour sauvegarder/restaurer le ~/.mozilla, mettre "mozilla"
PROFILES="mozilla"
 
case "$1" in
  start)
    echo "syncProfiles : synchro disque->RAM"
    for profile in $PROFILES; do
        rsync -a --delete /home/${USER}/.${profile}_ref/ /home/${USER}/.${profile}/
    done
    ;;
  stop)
    echo "syncProfiles : synchro RAM->disque"
    for profile in $PROFILES; do
        rsync -a --delete /home/${USER}/.${profile}/ /home/${USER}/.${profile}_ref/ 
    done
    ;;
  *)
    echo "Usage: /etc/init.d/syncProfiles {start|stop}"
    exit 1
    ;;
esac
 
exit 0

Minimiser l'usage de la partition swap

L'utilisation d'une patrition/fichier de swap est deconseillé sur une carte CF a cause du grand nombre d'écriture (sans tuning du moins)

Si on veut utiliser une parition swap (notamment pour bénéficier de l'hibernation), il faut en minimiser l'usage en editant le fichier /etc/sysctl.conf : rajouter à la fin :

vm.swappiness=0

Peut etre une idee en plus

Vu sur le net : a vérifier/voir l'intéret

“Je rajouterais juste peut-être un petit tuning de /proc/sys/vm/dirty_ratio et /proc/sys/vm/dirty_background_ratio qui indiquent avec quelle agressivité le kernel écrit sur le disque les fichiers en cache (RAM). Je tiens ça des différents scripts de laptop-mode-tools, qui est l'utilitaire utilisé sur les portables pour améliorer l'autonomie. Tu peux t'en inspirer car il essaye en général de minimiser les accès disque.”

Minimiser la fréquence des écritures sur le SSD

Ajouter dans le fichier /etc/sysctl.conf :

vm.dirty_writeback_centisecs=1500

Cela modifie la valeur de l'intervalle (en centaines de millisecondes) entre les moments ou pdflush se réveille pour ecrire les changements sur le disque.

On passe ainsi cette valeur à 15s au lieu des 5s par défaut.

sysadmin/tuning_debian_cf.1290091361.txt.gz · Dernière modification: 2010/11/18 15:42 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0