====== Installation ======
$ apt-get install cachefilesd
$ sed -i 's/#RUN/RUN/' /etc/default/cachefilesd
Optionnel pour tests préliminaires sur noyau non patché.
$ modprobe fscache
On peut changer le nom du cache dans /etc/cachedfilesd.conf : tag mycache -> tag streamcache
===== Patching noyau =====
Le noyau distribué par Debian expose des bugs sur fscache, corrigés upstream pour la plupart, le mieux étant d'appliquer tous les patches upstream sur fscache.
Obtenir les sources du noyau stable :
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-kernel-stable-git
cd linux-kernel-stable-git
Regarder les différences entre la version dans Debian et upstream sur fscache :
git diff -- fs/fscache
git diff -- fs/cachefiles
Extraire les patches :
FIXME
Installation de la chaîne de compilation :
apt-get install fakeroot build-essential devscripts
apt-get build-dep linux
Installation des sources du noyau de la distribution :
apt-get source linux
cd linux-*
svn export svn://svn.debian.org/svn/kernel/dists/trunk/linux/debian
Editer debian/changelog pour ajouter sous la forme "+vme.1", qui est appropriée pour gérer différentes versions.
Ajouter sur le champs abi.abiname dans debian/config/defines la même ligne.
Ajouter les patches avec quilt.
FIXME
===== Installation nouveau noyau =====
Le déposer sur le dépôt apt interne pour les paquets customisés.
====== Activation du cache sur un point de montage ======
$ lvcreate -L 180G -n fscache vme-frstd-stream06
$ mkfs -t ext4 /dev/mapper/vme--frstd--stream06-fscache
$ mkdir /fscache
Mettre user_xattr sur le point de montage ext4 /fscache comme option :
/dev/mapper/vme--frstd--stream06-fscache /fscache ext4 defaults,user_xattr 0 2
Considérer les options barrier=0 noatime ou relatime nodiratime noacl (nobh) data=writeback et discard sur ext4 (ext3 aussi) sur des SSD éventuellement (mais pas tjs).
et
$ mount /fscache
Mettre l'option fsc au point de montage NFS dans /etc/fstab et
$ umount -l /data/VME/contents
...
...
...
$ mount -a
Changer le chemin du cache dans /etc/cachefilesd.conf pour y mettre /fscache et démarrer le service cachefilesd
$ service cachefilesd start
====== Tuning SSD ======
===== Scheduler de blocs =====
$ apt-get install sysfsutils
Réduction des latences, à valider un peu plus ...
$ vi /etc/sysfs.conf
--- 8< --- /etc/sysfs.conf
...
block//queue/scheduler = deadline
block//queue/iosched/front_merges = 0
block//queue/iosched/read_expire = 150
block//queue/iosched/write_expire = 1500
...
--- >8 ---
Ou
$ vi /etc/sysfs.conf
--- 8< --- /etc/sysfs.conf
...
block//queue/scheduler = noop
...
--- >8 ---
$ service sysfsutils start
===== Alignement des partitions =====
Le but est d'aligner les partitions sur le SSD Erase Block et avec le niveau de RAID de surcroît.
Voir ici : http://tytso.livejournal.com/2009/02/20/
FIXME : expliquer le calcul en détail, les configs sur LVM, les options sur mkfs -t ext4 et comment le faire sans destruction des datas mais pas à chaud.
====== Surveillance ======
$ find /fscache -type f | wc -l
$ watch -n0 cat /proc/fs/fscache/stats
====== Workarounds ======
cachefilesd sur Debian squeeze se met parfois dans une boucle sans fin qui pompe 100% d'un CPU. Il faut alors soit le rédémarrer soit utiliser une version plus récente.