III) Optimisation du HDD
Après avoir déplacé la partition root, il est maintenant temps de s'attaquer aux répertoires home et swap.
1) Défragmentation des données
Pour mémoire, après les commandes précédentes, le disque dur sdb ne contient qu'une seule partition lvm avec uniquement le home et le swap. Windows et la partition racine de fedora sont maintenant sur le disque SSD 8-) .
Par contre, le lvm n'utilise qu'une partie de la partition. Il faut donc l'agrandir :
# pvresize
Afin de voir la répartition physique des fichiers sur la partition, on utilise pvdisplay :
http://famille-michon.fr/journalgeek/2011/08/01/defragmentation-lvm/ .
# pvdisplay --maps /dev/sdb1
On constate avant tout qu'une partie des Physical Extends (PE) est libre. En effet, les LV n'occupent pas la totalité de l'espace. On remarque également que les fichiers ne sont pas forcément répartis linéairement, et qu'il peut y avoir des espaces entre eux. Les fichiers eux-même sont très peu fragmentés, mais la mauvaise répartition des PE va entrainer des ralentissements de lecture pour deux fichiers sensés être proches.
Nous allons dans un premier temps déplacer le swap en début de disque, c'est à dire à l'extérieur des plateaux, là où la vitesse de lecture est la plus élevée. Cette commande permet de faire de la place en début de disque en déplaçant les fichiers vers un espace libre, puis de mettre le swap à la place.
# pvmove /dev/sdb1:0-1908 /dev/sdb1:117324-119233 --alloc anywhere
# pvmove /dev/sdb1:100000-101908 /dev/sdb1:0-1908 --alloc anywhere --> déplacement du swap
On fait de même avec tous les fragments de fichiers pour les défragmenter, quitte à effectuer l'opération en plusieurs fois, selon la place libre. Dans mon cas, il m'a fallu une dizaine de déplacements pour arriver à une seule zone pour le répertoire home.
A la fin de l'opération, pvdisplay donne le nombre de PE non attribués, que l'on va utiliser pour agrandir le répertoire home, avec le signe + devant :
# lvresize --resizefs --extends +12736 /dev/fedora/home /dev/sdb1
2) Mise en cache du répertoire home sur le SSD
Le répertoire home étant prêt, il est possible d'accélérer les fichier les plus fréquemment accédés en les stockant sur le SSD :
http://blog-vpodzime.rhcloud.com/?p=45 . LVM-cache est préféré à DM-cache, car ce dernier est moins flexible et nécessite d’exécuter un fichier au démarrage de l'ordinateur pour avoir l’accélération writeback. D'après
http://man7.org/linux/man-pages/man7/lvmcache.7.html , l'algorithme utilisé par défaut par lvm-cache pour choisir les fichiers à accélérer (cache policy) est smq (stochastic multiqueue,
http://everything.explained.today/Dm-cache/), qui semble performant.
Au préalable, on vérifie que la partition sda5 du SSD est bien contiguë. Si ce n'est pas le cas, on utilise pvmove comme précédemment.
# pvdisplay --maps /dev/sda5
L'activation du cache SSD se fait en une seule commande. Le mode writeback augmente la rapidité. La taille de 59.5 GiB correspond à 64 GB / (1.024^3) auxquels on a retiré 0.1 GiB pour le stockage des métadonnées du cache.
# lvcreate --type cache --cachemode writeback -L 59.5G -n ssd_cache /dev/fedora/home /dev/sda5
On vérifie que le cache est bien activé
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home fedora Cwi-aoC--- 458,30g [ssd_cache] [home_corig] 12,72 23,67 0,00
root fedora -wi-ao---- 79,49g
swap fedora -wi-ao---- 7,46g
Pour suspendre et reprendre le cache:
# lvconvert --splitcache fedora/home --> suspendre
# lvconvert --cache --cachemode writeback --cache-pool fedora/ssd_cache fedora/home --> reprendre
Pour supprimer le cache :
# lvconvert --uncache /dev/fedora/home