Wie installiere und verwende ich Flashcache / Bcache, um die Festplatte auf SSD zwischenzuspeichern?

52

Ich möchte wissen, ob jemand versucht hat, seinen mit Flashcache oder Bcache für SSD-Caching erstellten Kernel zu installieren und auszuführen .

Wie hast du es geschafft?

kapad
quelle
Gute Frage. Ich habe Flashcache in einigen meiner Antworten vorgeschlagen ( 1 , 2 ). Es scheint das Werkzeug für den Job neben dm-cache zu sein. Es ist auch relevant für alle, die nach einer Alternative zu Intel Smart Response für Ubuntu / Linux suchen .
Gertvdijk
Ich habe es auch als Alternative zu Intel SRT angesehen. Das Arch-Wiki hier sagt mit ein paar Worten, dass es nichts für schwache Nerven ist. Das Problem ist, dass ich vorhabe, damit auf meinem einzigen PC zu arbeiten und zu spielen :), also war ich besorgt und hoffte, hier eine Anleitung zu bekommen. Glauben Sie, dass es möglich sein wird, Ubuntu auf einer VM auszuführen und ein Laufwerk (dateibasiert) auf der Festplatte eines auf der SSD (wiederum dateibasiert) zu testen.
Bereit
Schöne Frage, aber wird eine Antwort, die VMs als Testumgebung verwendet, als vollständig betrachtet? Viele Leute haben nicht die notwendige Hardware, um dies wirklich zu beantworten.
RobotHumans
4
schon für Flashcache ausprobiert? gerrit-tamboer.net/…
Jasmine
4
dm-cache wurde nun in die stabile Version 3.9 des Linux-Kernels integriert. Ich denke, diese Frage mit 26 Stimmen verdient jetzt eine Antwort. :)
gertvdijk

Antworten:

10

Nun, wir haben eine Antwort im Cache, aber keine Antwort im Flashcache. Ich habe mich für Flashcache entschieden, weil ich bereits eine Installation hatte, daher kam Bcache nicht in Frage. Mir schien es auch einfacher, sich einzurichten. Ich habe mich für die DKMS-Methode entschieden, damit ich nicht jedes Mal, wenn ich ein Kernel-Upgrade bekomme, die Module / Tools neu erstellen muss.

Diese Schritte sind in README-DKMS auf Github beschrieben.

Modul erstellen

  1. Als erstes installieren Sie die Gebäudevoraussetzungen:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Dann schnappen Sie sich die Quelle:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Erstellen und installieren Sie die Module:

    make -f Makefile.dkms
    

Erstellen eines Flashcache-Geräts

(In diesem Beispiel verwende ich Writeback-Caching - die Standardeinstellung - aber Flashcache kann auch Writearound und Writethrough ausführen.)

Caching eines Nicht-Root-Geräts (nicht unter / gemountet)

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX Dabei ist fcache das erstellte Gerät (/ dev / mapper / fcache), / dev / sdaX die SSD-Partition (oder die gesamte Festplatte) und / dev / sdbX die Festplattenpartition.

Caching Ihres Root-Geräts

Es gibt noch ein paar Schritte, wenn Sie Ihr Root-Gerät zwischenspeichern. Für diesen Abschnitt benötigen Sie eine Ubuntu LiveCD / USB.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Bearbeiten Sie /boot/grub/grub.cnf und /etc/fstab, um von / dev / mapper / fcache zu booten (ich glaube nicht, dass dieser Schritt wirklich notwendig ist, aber er sagt es aus). Notieren Sie sich unbedingt die UUID Ihres ursprünglichen Root-Geräts.

  4. Starten Sie mit der LiveCD / LiveUSB neu.

  5. mount /dev/sda4 /mntMounten Sie Ihr Root-Gerät: (/ dev / sda4 ist meine Linux-Root-Partition)

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

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

  8. make; sudo make install Das gesamte DKMS-Setup muss nicht in der Live-Umgebung durchgeführt werden

  9. Hängen Sie das Root-Gerät aus sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] Wobei fcache das erstellte Gerät ist (es sollte dasselbe sein wie in / etc / fstab und /boot/grub/grub.cnf, in meinem Fall war es fcache), / dev / sdbX ist die SSD-Partition (oder die gesamte Festplatte) ) und [UUID] ist die UUID Ihrer Root-Partition.

  11. Neustart!

Vorsichtsmaßnahmen bei der Verwendung des Root-Geräts

Ein kleines Ärgernis bei der Verwendung von Flashcache für das Root-Gerät ist, dass grub-probe das Root-Gerät nicht erkennt und Ihr Boot-Menü durcheinander bringen kann, sodass Sie zwei Ubuntu-Geräte haben. Es sollte jedoch keine Rolle spielen, welche Sie in der Realität verwenden, da der make -f Makefile.dkms boot_confobige Schritt einige Skripte in Ihrer initrd installiert, die das Flashcache-Gerät erkennen und verwenden.

Chuck R
quelle
2
Ich sehe, dass es zumindest in raring Pakete für flashcache-dkms und flashcache-utils gibt. Wie würde sich die Installation ändern?
IVANT
Ja wirklich? Ich hatte es nicht bemerkt. Ich verwende auch Raring, installiere es aber aus dem Git-Repository. Ich müsste mir das Paket ansehen, aber ich kann mir vorstellen, dass Sie die ersten paar Abschnitte überspringen und trotzdem den Prozess des Bootens eines Root-Geräts durchlaufen können.
Chuck R
1
Das flashcache-dkms-Paket von Ubuntu 13.10 enthält keine Flashcache-Module und Binärdateien für das initramfs. Wenn Sie also Ihr Root-Verzeichnis im Flashcache speichern, können Sie es nicht booten. Ich habe einen Fehler erstellt: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148 Ich habe den Flashcache wie oben beschrieben aus dem Quellcode erstellt und konnte die folgende Kette booten: sda7 -> flashcache -> dm- Krypta -> Lvm -> ext4. Füge einfach den Flashcache-Entwickler zu / etc / crypttab hinzu und aktualisiere-initramfs -u
Martin Vysny
können Sie einen Kommentar mit den Änderungen hinzufügen, die Sie an der Grub-Datei vornehmen mussten.
Kapad
Ich ändere die grub.cfg nicht mehr, es scheint nicht notwendig zu sein. Sie nehmen jedoch eine Änderung wie folgt vor: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetzu linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(dh ändern Sie den root = -Parameter)
Chuck R
12

Es gibt ein Konvertierungstool zum Aktivieren von bcache auf einem vorhandenen Gerät (Offenlegung: Ich habe es geschrieben). Dies ist auch der Weg für Neuinstallationen, da die aktuellen Distributoren nicht wissen, wie sie Bcache-Geräte erstellen sollen (in diesem Fall: Beginnen Sie mit der Installation auf der Festplatte).

Anweisungen finden Sie unter Konvertieren Ihres Root-Dateisystems in den Bcache in der blocksREADME- Datei .

Für bcache ist Linux 3.10 oder neuer erforderlich, das in der aktuellen Version enthalten ist. Es kann manuell unter http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D installiert werden (suchen Sie nach der neuesten Version mit Tags) , zur Zeit v3.11.5-saucy, und die debs installieren , die Ihre Architektur übereinstimmen).

bcache-toolsund blockskann von meinem Speicher ppa installiert werden .

Gabriel
quelle
1
Dieses Tool ist für die aktuelle (15.04) Version von Ubuntu defekt. siehe github.com/g2p/maintboot/issues/1 und github.com/g2p/blocks/issues/13
Jean Jordaan
Eigentlich ist das Tool selbst momentan nicht kaputt (gestern auf einer 350GB Festplatte getestet). Allerdings aktuelle Versionen können nicht konvertieren Systemplatten verwendet werden ( /, /home, /usr/, ...) , während das System läuft (wie maintboot gebrochen wird). Alternativ können Sie einen Live-USB-Stick verwenden, dort installieren blocksund zum Konvertieren Ihrer Festplatten verwenden. Beachten Sie jedoch, dass dieses Tool nur für primäre MBR- und GPT-Partitionstabellen funktioniert und vor jeder Partition 1 MB zusätzlichen Speicherplatz benötigt.
ntninja
5

Vorherige Warnung: bcache kann nicht für Ihre bestehende Ubuntu-Installation verwendet werden. Wenn Sie SSD-Caching für Ihr Betriebssystem benötigen, sollten Sie auf eine zukünftige oder spezielle Version des Ubuntu-Installationsprogramms warten, die Ihren SSD-Cache einrichten könnte. Sehen Sie diese Antwort von Oli hier: Benötigt bcache eine Neuinstallation?

Für alle anderen, die ein Bcache-Laufwerk für Nicht-OS-Daten wünschen:

Das erste, was Sie tun müssen, ist, Ihren Kernel zu aktualisieren, wenn Sie 13.04 oder älter verwenden und das Kernel-Mainline-PPA verwenden. Eine Anleitung dazu finden Sie hier:

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

Stellen Sie sicher, dass Sie beim Booten den Kernel 3.9 oder höher auswählen, da er sonst nicht funktioniert und Ihr Laufwerk verschwindet.

Installiere bcache-tools, im Moment musst du es aus dem Git-Repository installieren:

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

Wenn es Ihnen gelingt, ein Paket bcache-toolsfür Debian zu erstellen , lassen Sie es uns wissen, und diese Frage wird für Sie aktualisiert. ( bcache-toolsDie Build-Abhängigkeiten sind uuid-devund libblkid-dev. Sie müssen installiert sein, um zu bauen bcache-tools.)

Sobald Sie alle Tools installiert haben, können Sie versuchen, die Anleitung hier zu befolgen:

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

Diese Anleitung zeigt, wie Sie die Laufwerke (SSD UND Festplatte) formatieren und dann zusammenfügen, um mit bcache einen neuen Geräteblock zu erstellen. Schreiben Sie einen Kommentar, wenn Sie die Anweisungen verwirrend finden und ich diese Antwort mit Vereinfachungen aktualisieren werde.

Martin Owens -doctormo-
quelle
Ist es möglich, eine Startdiskette mit Kernel 3.9 zu erstellen und dann das bcache-Laufwerk zu erstellen und Ubuntu auf diesem Laufwerk zu installieren?
Kapad
kapad - es sollte möglich sein, aber Sie müssten sicherstellen, dass bei der Ubuntu-Installation die richtigen Treiber zum Startzeitpunkt verfügbar waren, und Sie müssen möglicherweise einen Start außerhalb von bcache durchführen, damit grub ihn finden kann.
Martin Owens -doctormo-
2

Ich dachte, ich würde hierher kommen und kommentieren, was mir einfiel, als ich einen neuen Kernel installierte. Ich habe Flashcache nur für meine / home / Ordner-Partition verwendet. Ich habe einen neuen Kernel installiert, ihn gebootet und während des Bootvorgangs angehalten. Er konnte / dev / mapper / home_cached nicht finden. Sie haben drei Möglichkeiten, wenn Sie diese Nachricht erhalten, und ich wähle die Option, mich als root und anzumelden versuchen Sie es zu beheben. Ich habe zuerst versucht, das Flashcache-Modul zu laden und es wurde gemeldet, dass es nicht gefunden werden konnte. Also dachte ich, ich müsste es für diesen neuen Kernel, den ich gerade installiert habe, kompilieren und installieren. Ich hatte immer noch den / flashcache / -Ordner in / root /, also habe ich die CD eingelegt und lief

make -f Makefile.dkms boot_conf

dann rannte ich

make install

dann habe ich das flashcache modul mit geladen

modprobe flashcache

dann musste ich nur noch mein vorhandenes flashcache-gerät laden, das war

flashcache_load /dev/sdb1

dann mounte einfach meine home partition mit

mount /home

Beenden Sie dann die Anmeldung als root mit exit in der Befehlszeile, und der Start sollte wie gewohnt fortgesetzt werden. alles erledigt!

Ubu der Tech Guru
quelle
Ich bin neugierig, ob dies noch funktioniert. Schließlich habe ich gewechselt und keinen Flashcache mehr verwendet. Ich habe Arch nur auf der 64-GB-SSD installiert (der Linux-Kernel glaubt jedoch, dass es nur 32 GB sind). Ich konnte dies als einen Caching-Antrieb für einige Steam-Spiele ansehen.
Ubu the Tech Guru