OldGentooWiki:Utilisation de volumes tmpfs

De Gentoo-Quebec.

(Redirigé depuis Utilisation de volumes tmpfs)

Go-previous.png Index des trucs et astuces avancés


Gentoo-quebec+Funtoo-quebec.png

Utilisation de volumes tmpfs


Sommaire

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)

{{{taille}}}

Option dans menuconfig


Emblem-documents.png
Note !
Il n'est pas possible spécifier ce système de fichier comme module, vous devrez par conséquent reconstruire une image de noyau.

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 :
Gnome-dev-computer.png
# mount -t tmpfs -o size=2G tmpfs /point/de/montage
  • 100 méga-octets de mémoire au maximum :
Gnome-dev-computer.png
# mount -t tmpfs -o size=100M tmpfs /point/de/montage
  • 6144 octets de mémoire au maximum :
Gnome-dev-computer.png
# mount -t tmpfs -o size=6144 tmpfs /point/de/montage
Emblem-documents.png
Note !
  • Référez-vous à la page de manuel de mount pour les options disponibles lors du montage d'un système de fichiers tmpfs, size n'est pas la seule option possible;
  • La mémoire occuppée par vos systèmes de fichiers tmpfs peut être placée dans l'espace d'échange (swap)...

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 :

Gnome-dev-computer.png
# mount -t tmpfs -o size=2G tmpfs /var/tmp/portage

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 :

Activation automatique avec /etc/fstab

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

Warning 64.png
Attention !
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
Gnome-dev-computer.png
# /etc/init.d/mysqld stop
  • Déplacer le contenu du répertoire /var/mysql vers un autre emplacement X de votre choix.
Gnome-dev-computer.png
# mkdir /tmp/db&&cp -aR /var/mysql/* /tmp/db
  • Effacer le contenue du dossier data de mysql
Gnome-dev-computer.png
# rm -Rf /var/mysql/*
  • Monter le volume tmpfs dans /var/mysql (Avec une taille maximum de 8GO dans notre exemple)
Gnome-dev-computer.png
# mount -t tmpfs -o size=8G tmpfs /var/mysql
  • Y recopier la sauvegarde de /var/mysql précédemment faite
Gnome-dev-computer.png
# mv /tmp/db/*&& rm -R /tmo/db
  • Relancer le démon mysqld
Gnome-dev-computer.png
# /etc/init.d/mysqld start

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

Warning 64.png
Attention !
  • 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]

Outils personnels