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

52

Je veux savoir s'il y a des personnes qui ont essayé d'installer et d'exécuter leur noyau construit avec flashcache ou bcache pour la mise en cache SSD?

Comment avez-vous réussi à le faire?

kapad
la source
Bonne question. J'ai suggéré flashcache dans certaines de mes réponses ( 1 , 2 ). Il semble que l' outil pour le travail, à côté de dm-cache. Cela concerne également tous ceux qui recherchent une alternative à Intel Smart Response pour Ubuntu / Linux.
gertvdijk
Moi aussi, je le considérais comme une alternative à Intel SRT. L'arch wiki ici , dans quelques mots de plus, dit que ce n'est pas pour les âmes sensibles. Le problème, c’est que j’ai l’intention de jouer avec cela sur mon seul PC, que ce soit pour le travail ou pour les loisirs :), j’étais donc inquiet et espérais avoir un aperçu de la façon dont il était ici. Pensez-vous qu’il sera possible d’exécuter Ubuntu sur une machine virtuelle et d’avoir un lecteur (basé sur un fichier) sur le disque, un disque situé sur le disque SSD (encore une fois, basé sur un fichier) à tester?
Prêt à tenter le
Belle question, mais une réponse utilisant des ordinateurs virtuels comme un banc d’essai est-elle considérée comme complète? Beaucoup de gens ne disposent pas du matériel nécessaire pour répondre à cette question.
RobotHumans
4
déjà essayé cela pour Flashcache? gerrit-tamboer.net/...
jasmins
4
dm-cache a maintenant été fusionné dans la version stable 3.9 du noyau Linux. Je suppose que cette question de 26 votes mérite une réponse maintenant. :)
gertvdijk

Réponses:

10

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 le fichier README-DKMS sur Github.

Construire le 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.

Mettre en cache 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émonter 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 le disque entier ) 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 dans la réalité, l’ make -f Makefile.dkms boot_confétape ci-dessus installe dans votre initrd des scripts qui détecteront et utiliseront le périphérique flashcache.

Chuck R
la source
2
Je vois qu'au moins dans la distribution il existe des paquets pour flashcache-dkms et flashcache-utils. Comment l'installation changerait-elle?
Mars
Oh vraiment? Je n'avais pas remarqué. J'exécute aussi Raring, mais je l'ai installé à partir du référentiel Git. Je devrais regarder le paquet, mais je peux imaginer que vous seriez capable d'ignorer les deux premières sections et de continuer à exécuter le processus de démarrage d'un périphérique racine.
Chuck R
1
Le paquet flashcache-dkms d'ubuntu 13.10 n'inclut pas les modules flashcache ni les fichiers binaires d'initramfs. Par conséquent, si vous flashcachez votre racine, vous ne pourrez pas l'amorcer. J'ai créé un bogue: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148 J'ai construit flashcache à partir du source comme décrit ci-dessus et j'ai pu démarrer la chaîne suivante: sda7 -> flashcache -> dm- crypt -> lvm -> ext4. Ajoutez simplement le dev flashcache à / etc / crypttab et update-initramfs -u
Martin Vysny
pouvez-vous ajouter un commentaire avec les modifications que vous avez dû apporter au fichier grub.
Kapad
Je ne modifie plus le fichier grub.cfg, cela ne semble pas nécessaire. Cependant, vous effectuez un changement comme celui-ci: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetto linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(c.- à -d. Changez le paramètre root =)
Chuck R
12

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).

Reportez- vous à la section conversion de votre système de fichiers racine en bcache dans le blocksfichier 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 qui correspondent à votre architecture).

bcache-toolset blockspeut être installé à partir de mon ppa de stockage .

Gabriel
la source
1
Cet outil est cassé pour la version actuelle (15.04) d’Ubuntu; voir github.com/g2p/maintboot/issues/1 et github.com/g2p/blocks/issues/13
Jean Jordaan
En réalité, l’outil lui-même n’est pas endommagé (testé hier sur un disque dur de 350 Go). Cependant les versions actuelles ne peuvent pas être utilisés pour convertir les disques du système ( /, /home, /usr/, ...) alors que le système est en cours d' exécution (comme maintboot est cassé). Au lieu de cela, vous pouvez utiliser une clé USB connectée, l’installer blockset l’utiliser pour convertir vos disques. Attention, cet outil ne fonctionne que sur les tables de partitions principales MBR et GPT et nécessite 1 Mo d'espace supplémentaire avant chaque partition.
ntninja
5

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 à compiler bcache-toolsDebian, faites-le nous savoir et cette question sera mise à jour pour vous. ( bcache-toolsLes dépendances de construction sont uuid-devet libblkid-dev. Elles doivent être installées pour pouvoir être construites 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 (SSD ET disque dur), 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.

Martin Owens -doctormo-
la source
Est-il possible de créer un disque de démarrage exécutant le noyau 3.9, puis de créer le lecteur bcache et d'installer ubuntu au-dessus de ce lecteur?
Kapad
kapad - cela devrait être possible, mais vous devez vous assurer que l'installation d'ubuntu dispose des bons pilotes disponibles au démarrage et que vous devrez peut-être démarrer en dehors de bcache pour que grub puisse le trouver.
Martin Owens -doctormo-
2

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é pendant le démarrage et a déclaré qu'il ne pouvait pas trouver / dev / mapper / home_cached, il y a 3 choix à votre disposition 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é!

Ubu le gourou de la technologie
la source
Je suis curieux de savoir si cela fonctionne toujours, j’ai fini par changer sans utiliser flashcache. Je viens d’installer Arch sur le SSD de 64 Go (le noyau Linux pense que c’est seulement 32 Go) en raison du firmware interne. Je pourrais voir cela être bénéfique en tant que lecteur de cache pour certains jeux de vapeur.
Ubu the Tech Guru Le