Table des matières

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 :

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/<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/

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.