web-dev-qa-db-fra.com

Comment installer et utiliser flashcache / bcache pour mettre en cache disque dur sur disque dur SSD?

Je veux savoir si quelqu'un a essayé d'installer et d'exécuter son noyau construit avec flashcache ou bcache pour la mise en cache SSD?

Comment avez-vous réussi à le faire?

52
kapad

Eh bien, nous avons eu une réponse bcache mais pas de réponse flashcache. J'ai choisi flashcache parce que j'avais déjà une installation existante, donc bcache était hors de question. Cela me semblait plus facile à mettre en place. J'ai choisi la méthode DKMS pour ne pas être obligé de reconstruire le module/les outils à chaque fois que je reçois une mise à niveau du noyau.

Ces étapes sont décrites dans README-DKMS sur Github.

Construction du module

  1. La première chose à faire est d’installer les conditions préalables à la construction:

    Sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Puis accrochez la source:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Construisez et installez les modules:

    make -f Makefile.dkms
    

Création d'un périphérique flashcache

(Dans cet exemple, j'utilise la mise en cache en écriture différée - la valeur par défaut - mais flashcache peut également effectuer des écritures différées et des écritures)

Mettre en cache un périphérique non-root (non monté sur /)

Sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX où fcache est le périphérique créé (/ dev/mapper/fcache),/dev/sdaX est la partition SSD (ou le disque entier) et/dev/sdbX est la partition HDD.

Mise en cache de votre périphérique racine

Si vous mettez en cache votre périphérique racine, vous devez suivre quelques étapes supplémentaires. Vous aurez besoin d’un LiveCD/USB Ubuntu pour cette section.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Éditez /boot/grub/grub.cnf et/etc/fstab pour démarrer à partir de/dev/mapper/fcache (je ne crois pas que cette étape soit vraiment nécessaire, mais elle le dit). Assurez-vous d'écrire l'UUID de votre périphérique racine d'origine.

  4. Redémarrez avec le LiveCD/LiveUSB.

  5. Montez votre périphérique racine: mount /dev/sda4 /mnt (/ dev/sda4 est ma partition racine Linux)

  6. cd /mnt/path/to/flashcache/source

  7. Sudo apt-get install dkms build-essential linux-headers-$(uname -r)

  8. make; Sudo make install Pas besoin de faire toute la configuration DKMS dans l'environnement live

  9. Démontez le périphérique racine Sudo umount /mnt

  10. Sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] où fcache est le périphérique créé (il devrait être identique à celui que vous avez mis dans/etc/fstab et /boot/grub/grub.cnf, dans mon cas c’était fcache),/dev/sdbX est la partition SSD (ou toute disque) et [UUID] est l’UUID de votre partition racine.

  11. Redémarrez!

Mises en garde lors de l'utilisation du périphérique racine

Un inconvénient mineur lorsque flashcache est utilisé pour le périphérique racine est que grub-sonde ne parvient pas à détecter le périphérique racine et peut gâcher votre menu de démarrage de sorte que vous ayez deux entrées Ubuntu. Cependant, peu importe ce que vous utilisez en réalité puisque l'étape make -f Makefile.dkms boot_conf ci-dessus installe dans votre initrd des scripts qui détecteront et utiliseront le périphérique flashcache.

10
Chuck R

Il existe un outil de conversion permettant d'activer bcache sur un périphérique existant (divulgation: je l'ai écrit). C'est également la voie à suivre pour les nouvelles installations, car les installateurs de distribution actuels ne savent pas comment créer des périphériques bcache (dans ce cas: commencez par installer sur le disque dur).

Voir conversion de votre système de fichiers racine en bcache dans blocks README pour obtenir des instructions.

bcache nécessite Linux 3.10 ou une version ultérieure, ce qui est douteux et peut être installé manuellement à partir de http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (recherchez la dernière version étiquetée, actuellement v3.11.5-saucy, et installez les debs correspondant à votre architecture).

bcache-tools et blocks peuvent être installés à partir de mon ppa de stockage .

12
Gabriel

Avertissement préalable: bcache ne peut pas être utilisé pour votre installation Ubuntu existante. Si vous avez besoin de la mise en cache SSD pour votre système d'exploitation, vous devez attendre une version future ou spéciale du programme d'installation Ubuntu qui pourrait configurer votre cache SSD. Voir la réponse d’Oli ici: bcache nécessite-t-il une nouvelle installation?

Pour tous ceux qui veulent un lecteur bcache pour des données autres que celles du système d'exploitation:

La première chose à faire est de mettre à niveau votre noyau si vous utilisez la version 13.04 ou antérieure à l'aide du PPA principal du noyau. Les instructions d'utilisation peuvent être trouvées ici:

https://wiki.ubuntu.com/Kernel/MainlineBuilds

Assurez-vous de sélectionner le noyau 3.9 ou supérieur lors du démarrage, sinon cela ne fonctionnera pas et votre lecteur disparaîtra.

Installez bcache-tools, pour le moment, vous devrez l’installer à partir du référentiel git:

git clone http://evilpiepirate.org/git/bcache-tools.git

Si vous parvenez à compacter bcache-tools pour debian, faites-le nous savoir et cette question sera mise à jour pour vous. (Les dépendances de construction de bcache-tools sont uuid-dev et libblkid-dev. Elles doivent être installées pour pouvoir construire bcache-tools.)

Une fois que vous avez tous les outils en place, vous êtes prêt à essayer de suivre le guide ici:

http://atlas.evilpiepirate.org/git/linux-bcache.git/tree/Documentation/bcache.txt

Ce guide explique comment formater les lecteurs (disque dur SSD ET), puis les associer pour créer un nouveau bloc de périphérique à l'aide de bcache. Postez un commentaire si vous trouvez que les instructions sont confuses et je mettrai à jour cette réponse avec des simplifications.

je pensais venir ici et commenter ce qui m’était arrivé lorsque j’installais un nouveau noyau. J'utilisais flashcache pour ma partition/home/folder uniquement. J'ai installé un nouveau noyau, je l'ai démarré et il s'est arrêté au démarrage. Il m'a dit qu'il ne pouvait pas trouver/dev/mapper/home_cached. Il y a 3 choix possibles lorsque vous recevez ce message et j'ai choisi l'option de connexion en tant que root et essayer de le réparer. J'ai d'abord essayé de charger le module flashcache et il a été dit qu'il ne pouvait pas le trouver. J'ai donc pensé que je devrais le compiler et l'installer pour ce nouveau noyau que je viens d'installer. J'avais toujours le dossier/flashcache/situé dans/root/donc je l'ai gravé dessus et j'ai couru

make -f Makefile.dkms boot_conf

alors j'ai couru

make install

puis j'ai chargé le module flashcache avec

modprobe flashcache

alors je devais juste charger mon périphérique flashcache existant qui était

flashcache_load /dev/sdb1

puis montez juste ma partition à la maison avec

mount /home

puis quittez la connexion en tant que root avec exit dans la ligne de commande et le démarrage devrait se poursuivre normalement. terminé!

2
Ubu the Tech Guru