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 <tag_debian> <tag_upstream_stable> -- fs/fscache git diff <tag_debian> <tag_upstream_stable> -- fs/cachefiles
Extraire les patches :
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.
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/<device>/queue/scheduler = deadline block/<device>/queue/iosched/front_merges = 0 block/<device>/queue/iosched/read_expire = 150 block/<device>/queue/iosched/write_expire = 1500 ... --- >8 ---
Ou
$ vi /etc/sysfs.conf --- 8< --- /etc/sysfs.conf ... block/<device>/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/
: 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.