OldGentooWiki:Utilisation de volumes tmpfs
De Gentoo-Quebec.
Index des trucs et astuces avancés
Mise en contexte
Le système de fichier tmpfs (temporary filesystem ou système de fichiers temporaire) permet de créer un volume de stockage situé dans la RAM de l'ordinateur (ramdisk). Il peut être utilisé en de multiples circonstances comme par exemple servir d'espace de stockage pour des fichiers temporaires (éviction de dédier une partition de disque dur) ou stocker des fichiers très fréquemment accédés (applicatifs, fichiers de données....) afin de soulager la charge de travail d'un contrôleur de disque dur. Pour le côté pratico-pratique Gentoo Linux, un usage de plus en plus répendu consiste à placer le répertoire de travail de portage dans un système de fichiers tmpfs ce qui vous permet de gagner jusqu'à plusieurs minutes sur la construction de « gros » paquetages comme la glibc.
Configuration du Noyau
Tmpfs est un système de fichiers situé en espace noyau qui s'active par le biais de l'option suivante (située dans File systems -> Pseudo filesystems)
Montage d'un système de fichiers tmpfs
Un volume tmpfs se monte dans l'arborescence de votre VFS à l'instar de n'importe quel autre système de fichier au travers de la commande mount. Une fois monté, le volume tmpfs est totalement vide et va voir sa taille croître au besoin jusqu'à concurrence de 50% de la taille de la mémoire de votre système par défaut (vous pouvez cependant fixer cette limite explicitement au travers de l'option size lors du montage).
Ainsi pour monter dans /point/de/montage un système de fichier tmpfs occuppant :
- 2 giga-octets de mémoire au maximum :
- 100 méga-octets de mémoire au maximum :
- 6144 octets de mémoire au maximum :
Exemples d'utilisation typiques
Exemple d'utilisation #1 : Placer le répertoire de travail de Gentoo Portage dans un volume tmpfs
Dans le cadre de cette utilisation il est recommandé d'avoir un volume tmpfs d'une taille d'au moins 2 giga-octets afin de pouvoir contruire l'ensemble des paquetages de Gentoo Linux, y compris les plus gros. Le répertoire de travail de Portage sera monté comme suit :
Vous pouvez également ajouter cette ligne dans le fichier /etc/fstab pour que le système monte automatiquement le répertoire de travail de Portage dans un volume tmpfs :
tmpfs /var/tmp/portage tmpfs rw,-s2G 0 0
Exemple d'utilisation #2 : Placement d'une base de données MySQL dans un volume tmpfs
Ne placez aucune information critique dans une base de données stockée dans un volume tmpfs à moins de vous assurer d'en disposer d'une sauvegarde cohérente la plus à jour possible et/ou qu'une perte ne vous sera pas dommageable.
Il faut pour ce faire effectuer la suite d'opérations suivantes :
- Arrêter le démon mysqld
- Déplacer le contenu du répertoire /var/mysql vers un autre emplacement X de votre choix.
- Effacer le contenue du dossier data de mysql
- Monter le volume tmpfs dans /var/mysql (Avec une taille maximum de 8GO dans notre exemple)
- Y recopier la sauvegarde de /var/mysql précédemment faite
- Relancer le démon mysqld
Vous assurer que votre base de données se réplique ou qu'une sauvegarde soit effectuée régulièrement en utilisant par exemple un script sh qui contiends un mysqldump suivi de la commande tar pour compresser le tout. Le mieux est bien sur d'utiliser un serveur de logs binaires mysql distant. Ceux-ci log la totalité des transactions et permettent par exemple de pouvoir reculer dans le temps jusqu'a la position exacte voulu en plus des backups régulier(mysqldump) qui permettent une restauration.
Exemple d'utilisation #3 : Système Gentoo dans un volume tmpfs
- Encore très expérimental à l'automne 2009 (utilisation du système de fichiers BTRFS encore expérimental sous le noyau Linux 2.6.31) !
- Assurez-vous que la mémoire de machine soit exempte de défauts au moyen de l'utilitaire memtest86
- Ne placez aucune donnée critique dans un volume tmpfs sans vous assurer d'en avoir une copie cohérente et fiable sur une mémoire de masse permanente (disque dur, clé USB...)
- Il est recommandé de disposer idéalement de 16Go de mémoire vive (8Go serait un minimum)
Il s'agit ici d'accélérer considérablement la vitesse de chargement des applications et des objets partagés (fichiers .so) utilisés, plus particulièrement s'ils se trouvent sur des partitions compressées et/ou chiffrées. Cette utilisation a cependant un prix : une consommation de mémoire vive importante.
Dans cet exemple, il est supposé que la machine soit dotée de 16Go de mémoire qui seront attribués comme suit :
- 12Go dédiés exclusivement au volume tmpfs que l'on formatera en utilisant le système de fichier BTRFS (BTRFS supporte plusieurs points de montage dans une même partition ce qui évite de créer plusieurs volumes tmpfs)
- 4Go pour le reste (processus, tampons système...)
Vue d'ensemble
Cet exemple se place dans les conditions idéales : une machine ayant 16 Go de mémoire. Il faudra dans un premier temps créer un volume tmpfs d'une taille de 12Go qui sera formaté en BTRFS. BTRFS est d'ailleurs tout indiqué car supportant plusieurs points de montage au sein d'une même partition (ce qui évite par conséquent l'utilisation de plusieurs volumes tmpfs distincts et de manipuler plus aisément la taille du volume tmpfs).
Dans un second temps, il s'agira de copier une image du système dans le volume tmpfs puis d'effectuer les montages adéquats afin d'utiliser le contenu du volume tmpfs.
Dans un troisième temps il s'agira d'effecter les opération inverses : rendre persistant le contenu du volume tmpfs et démonter ce qui a été monté.
Première étape : Création du volume tmpfs et formatage en BTRFS
Deuxième étape : Décompression de l'image du système dans le volume tmpfs
Dernière étape : Persistance du volume tmpfs
Scripts permettant d'automatiser la procédure
[A continuer]


