Artisan Numérique

/système/démarrage/kernel/ Préparation d'un GNU/Linux sur disque flash

L'utilisation d'une carte disques Flash bon marché par l'intermédiaire d'un adaptateur CF/IDE est une bonne option de remplacement du disque dur pour une machine que l'on veut plus silencieuse et moins energivore. Cependant la flash a deux inconvénients en écriture : sa lenteur et son nombre de cycles limités. Concernant la durée de vie, des systèmes de fichiers spécialisé comme JFFS2 permettent de réduire le problème. Mais il est aussi possible de faire d'une pierre deux coups en améliorant significativement les performances de la flash tout en augmentant sa durée de vie, et tout cela en évitant d'écrire dessus...

tmpfs

tmpfs est dérive de ramfs, un système de fichier qui utilise la mémoire vie de la machine plutôt que le disque. La différence est que tmpfs va gérer globalement un espace mémoire pour tous les montages qui l'utilisent.

L'autre avantage de tmpfs est qu'il consomme la mémoire dont il a besoin et libère celle dont il ne se sert plus. Ces caractéristique en font le meilleur candidat pour épauler notre mémoire flash sur toutes les écritures qui n'ont nulle besoin d'être permanente, c'est à dire sur /tmp, sur /var/log et sur /var/tmp. On pourrait aussi rajouter à cette liste les dossiers temporaires des utilisateurs ~/tmp.

Déclaration

Utiliser tmpfs est très simple. Une fois les points identifiez, il suffit de les rajouter dans /etc/fstab

 tmpfs           /tmp            tmpfs   defaults,noatime,nodiratime,mode=0770   0       0
tmpfs           /var/log        tmpfs   defaults,noatime,nodiratime,mode=0770   0       0
tmpfs           /var/tmp        tmpfs   defaults,noatime,nodiratime,mode=0770   0       0

Nous avons ici trois points utilisant tmpfs. Par défaut, ce dernier utilise jusqu'à la moitié de la RAM disponible pour ces stockages. Il est possible si vous le souhaitez de changer cela avec l'argument de montage size: exprimé en octets.

Pour ce qui est des autres arguments, nous allons y revenir au chapitre suivant. Pour l'instant, avant de redémarrer, nous allons tester nos points. L'idée est juste de détruire tous les fichiers qui pré-existent sur les dossiers de montages puis lancer le montage lui-même :

rm -rf /tmp/.*
rm -rf /tmp/*
mount /tmp

rm -rf /var/tmp/*
mount /var/tmp

rm -rf /var/log/*
mount /var/log
/etc/init.d syslog restart

Voilà, maintenant le système est paramétré, nous pouvons redémarrer pour vérifier que tout fonctionner.

option atime

Par défaut, les systèmes de fichiers stockent sur le disque la date du dernière accés à un fichier en lecture ET écriture. Cette écriture prend du temps et impacte sur les performances. Il est donc possible avec les options de montage noatime de supprimer cette fonctionnalité sur les fichiers et avec nodiratime de faire la même chose sur les dossiers. Attention cependant, certains logiciels ont besoin de cette information, mais je n'ai personnellement jamais eu de problèmes avec cela, y compris sur mes serveurs. Le cas échéant, vous pouvez utilisez la voie du milieu avec l'option relatime qui semble être un hack assez peu documenté pour n'écrire cette date que lorsque c'est nécessaire.

Dans le cas de notre flash, avoir supprimer cette date sur les tmpfs est sympathique, mais ce serait mieux encore d'éviter d'écrire cette date sur la carte. On modifie donc à nouveau /etc/fstab comme suite :

/dev/hda1       /               ext3    defaults,noatime,nodiratime 1 1

Pour tester cela sans redémarrer, nous pouvons demande à Linux un remontage de ce device :

mount / -o remount

Ensuite en lançant la commande mount, nous sauront si les options ont bien été prises en compte. Si c'est le cas, un petit coup de redémarrage ne fera pas de mal...

swap

Pour une machine sur flash, le mieux est pas de Swap. Mais par pitié, évitez les âneries que j'ai vu de temps à autre dans les forums où certains génies préconise du Swap dans un fichier sur... tmpfs. Du Swap dans le la RAM c'est totalement idiot car le swap sert justement à palier à un manque de mémoire...

Pour vérifier ce que vous avez en terme de Swap, lancez la commande :

swapon -s

Si elle vous indique une partition, lancez fdisk et supprimez là. Au redémarrage, le swap devrait ne plus être utilisé (vous pouvez aussi utilisez la commande swapoff).

Conclusion

J'aurais tendance à conclure par mon éternel émerveillement avec cet OS "pâte à modeler" dont j'arrive à faire ce que je veux. Toujours est il qu'avec un minimum d'investissement, me voilà avec une machine des plus silencieuse, totalement autonome et parfaite comme petit serveur multimédia.