Come installo e utilizzo flashcache / bcache per memorizzare nella cache HDD su SSD?


52

Voglio sapere se c'è qualcuno che ha provato a installare ed eseguire il proprio kernel compilato con flashcache o bcache per la cache SSD?

Come sei riuscito a farlo?


Buona domanda. Ho suggerito flashcache in alcune delle mie risposte ( 1 , 2 ). Sembra lo strumento per il lavoro, accanto a dm-cache. È anche rilevante per tutti coloro che cercano un'alternativa a Intel Smart Response per Ubuntu / Linux.
gertvdijk,

Anch'io lo guardavo come un'alternativa a Intel SRT. Il wiki dell'arco qui dice, in poche parole, che non è per i deboli di cuore. Il problema è che sto pianificando di giocarci sul mio unico PC sia per lavoro che per gioco :), quindi ero preoccupato e speravo di capire come. Pensi che sarà possibile eseguire Ubuntu su una VM e avere un disco (basato su file) sul disco uno sull'SSD (di nuovo, basato su file) per testare. Disponibile a
provarlo

Bella domanda, ma una risposta che utilizza le macchine virtuali come banco di prova è considerata completa? Molte persone non hanno l'hardware necessario per rispondere davvero a questo.
RobotHumans,

4
lo hai già provato per Flashcache? gerrit-tamboer.net/...
gelsomini

4
dm-cache è stato ora unito alla versione stabile del kernel Linux 3.9. Immagino che questa domanda a 26 voti meriti una risposta ora. :)
gertvdijk,

Risposte:


10

Bene, abbiamo una risposta bcache ma nessuna risposta flashcache. Ho scelto flashcache perché avevo già un'installazione esistente, quindi bcache era fuori discussione. Anche a me è sembrato più facile installarlo. Ho scelto il metodo DKMS in modo da non essere bloccato a ricostruire il modulo / gli strumenti ogni volta che ho ricevuto un aggiornamento del kernel.

Questi passaggi sono descritti in README-DKMS su Github.

Costruire il modulo

  1. La prima cosa da fare è installare i prerequisiti di costruzione:

    sudo apt-get install dkms build-essential linux-headers-$(uname -r) git
    
  2. Quindi afferrare la fonte:

    git clone git://github.com/facebook/flashcache; cd flashcache
    
  3. Compilare e installare i moduli:

    make -f Makefile.dkms
    

Creazione di un dispositivo flashcache

(In questo esempio utilizzo la cache di writeback - impostazione predefinita - ma flashcache può eseguire anche writeearound e writeethrough)

Memorizzazione nella cache di un dispositivo non root (non montato su /)

sudo flashcache_create -p back fcache /dev/sdbX /dev/sdaX Dove fcache è il dispositivo creato (/ dev / mapper / fcache), / dev / sdaX è la partizione SSD (o l'intero disco) e / dev / sdbX è la partizione HDD.

Memorizzazione nella cache del dispositivo root

Ci sono alcuni altri passaggi se si memorizza nella cache il dispositivo di root. Per questa sezione è necessario un LiveCD / USB Ubuntu.

  1. cd /path/to/flashcache/source

  2. make -f Makefile.dkms boot_conf

  3. Modifica /boot/grub/grub.cnf e / etc / fstab per eseguire l'avvio da / dev / mapper / fcache (non credo che questo passaggio sia davvero necessario, ma dice a). Assicurati di annotare l'UUID del dispositivo root originale.

  4. Riavviare con LiveCD / LiveUSB.

  5. Monta il tuo dispositivo root: mount /dev/sda4 /mnt(/ dev / sda4 è la mia partizione root 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 Non è necessario eseguire l'intera configurazione DKMS nell'ambiente live

  9. Smonta il dispositivo root sudo umount /mnt

  10. sudo flashcache_create -p back fcache /dev/sdbX /dev/disk/by-uuid/[UUID] Dove fcache è il dispositivo creato (dovrebbe essere lo stesso che hai inserito in / etc / fstab e /boot/grub/grub.cnf, nel mio caso era fcache), / dev / sdbX è la partizione SSD (o l'intero disco ) e [UUID] è l'UUID della partizione di root.

  11. Reboot!

Avvertenze quando si utilizza il dispositivo radice

Un piccolo fastidio quando si usa flashcache per il dispositivo root è che grub-probe non riesce a rilevare il dispositivo root e può rovinare il menu di avvio in modo da avere due desideri di Ubuntu. Ma non dovrebbe importare quale usi in tutta la realtà poiché il make -f Makefile.dkms boot_confpassaggio precedente installa alcuni script nel tuo initrd che rileveranno e utilizzeranno il dispositivo flashcache.


2
Vedo che almeno in raring ci sono pacchetti per flashcache-dkms e flashcache-utils. Come cambierebbe l'installazione?
Ivant

Oh veramente? Non me ne ero accorto. Sto eseguendo anche Raring ma l'ho installato dal repository Git. Dovrei guardare il pacchetto, ma posso immaginare che saresti in grado di saltare le prime due sezioni e continuare comunque il processo di avvio di un dispositivo root.
Chuck R,

1
Il pacchetto flashcache-dkms di ubuntu 13.10 non include moduli flashcache e binari su initramfs, quindi se si esegue il flashcache del root non sarà possibile avviarlo. Ho creato un bug: bugs.launchpad.net/ubuntu/+source/flashcache/+bug/1290148 Ho creato flashcache dal sorgente come descritto sopra e sono stato in grado di avviare la seguente catena: sda7 -> flashcache -> dm- crypt -> lvm -> ext4. Basta aggiungere il dev flashcache a / etc / crypttab e update-initramfs -u
Martin Vysny

puoi aggiungere un commento con le modifiche che hai dovuto apportare al file grub.
Kapad

Non modifico più grub.cfg, non sembra necessario. Tuttavia, fai una modifica come questa: linux /boot/vmlinuz-3.19.0-51-lowlatency root=UUID=0a540b91-5990-4df0-bc99-5d6e2cd3fed6 ro recovery nomodesetin linux /boot/vmlinuz-3.19.0-51-lowlatency root=/dev/mapper/fcache ro recovery nomodeset(cioè, modifica il parametro root =)
Chuck R

12

Esiste uno strumento di conversione per abilitare bcache su un dispositivo esistente (divulgazione: l'ho scritto). È anche la strada da percorrere per nuove installazioni, poiché gli attuali installatori di distro non sanno come creare dispositivi bcache (nel qual caso: iniziare installando sull'HDD).

Vedere la conversione del file system di root in bcache nel fileblocks README per istruzioni.

bcache richiede Linux 3.10 o più recente, che è impertinente, e può essere installato manualmente da http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D (cercare la versione con tag più recente , attualmente v3.11.5-saucye installa i debs che corrispondono alla tua architettura).

bcache-toolse blockspuò essere installato dal mio ppa di archiviazione .


1
Questo strumento è rotto per l'attuale versione (15.04) di Ubuntu; vedi github.com/g2p/maintboot/issues/1 e github.com/g2p/blocks/issues/13
Jean Jordaan,

In realtà lo strumento stesso non è attualmente rotto (testato ieri su un disco rigido da 350 GB). Tuttavia le versioni attuali non possono essere utilizzati per convertire dischi di sistema ( /, /home, /usr/, ...) mentre il sistema è in funzione (come maintboot è rotto). In alternativa, è possibile utilizzare una chiavetta USB live, installarla blockse utilizzarla per convertire i dischi. Tuttavia, questo strumento funziona solo su tabelle di partizione MBR e GPT primarie e richiede 1 MiB di spazio extra prima di ogni partizione.
ntninja,

5

Avviso precedente: bcache non può essere utilizzato per l'installazione di Ubuntu esistente. Se hai bisogno della cache SSD per il tuo sistema operativo, dovresti aspettare una versione futura o speciale del programma di installazione di Ubuntu che potrebbe impostare la cache SSD. Vedi questa risposta di Oli qui: bcache richiede una nuova installazione?

Per tutti coloro che desiderano un'unità bcache per dati non OS:

La prima cosa da fare è aggiornare il kernel se si utilizza la versione 13.04 o precedente utilizzando il PPA della linea principale del kernel. Le istruzioni per l'uso sono disponibili qui:

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

Assicurati di selezionare il kernel 3.9 o superiore all'avvio o non funzionerà e il tuo disco scomparirà.

Installa bcache-tools, al momento dovrai installare dal repository git:

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

Se riesci a bcache-toolscreare pacchetti per debian, faccelo sapere e questa domanda verrà aggiornata per te. ( bcache-toolsLe dipendenze di build sono uuid-deve libblkid-dev. Devono essere installate, per compilare bcache-tools.)

Dopo aver installato tutti gli strumenti, sei pronto per provare a seguire la guida qui:

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

Questa guida mostra come formattare le unità (SSD E disco rigido) e quindi collegarle insieme per creare un nuovo blocco dispositivo utilizzando bcache. Pubblica un commento se trovi le istruzioni confuse e aggiornerò questa risposta con delle semplificazioni.


È possibile creare un disco di avvio che esegue il kernel 3.9 e quindi creare l'unità bcache e installare Ubuntu su questa unità?
Kapad,

kapad - dovrebbe essere possibile, ma dovresti assicurarti che l'installazione di Ubuntu avesse i driver giusti disponibili al momento dell'avvio e potresti dover fare l'avvio al di fuori di bcache in modo che grub potesse trovarlo.
Martin Owens -doctormo-

2

ho pensato di venire qui e commentare cosa mi è successo quando ho installato un nuovo kernel. Stavo usando flashcache solo per la mia partizione / home / cartella. Ho installato un nuovo kernel, avviato in esso e si è arrestato durante l'avvio e ha detto che non riusciva a trovare / dev / mapper / home_cached, ci sono 3 scelte che hai quando ricevi questo messaggio e scelgo l'opzione per accedere come root e tenta di risolverlo. Prima ho provato a caricare il modulo flashcache e mi ha detto che non riusciva a trovarlo. Quindi ho pensato che avrei dovuto compilare e installarlo per questo nuovo kernel che ho appena installato. avevo ancora la cartella / flashcache / all'interno di / root / quindi l'ho inserita e funzionata

make -f Makefile.dkms boot_conf

poi ho corso

make install

quindi ho caricato il modulo flashcache con

modprobe flashcache

poi ho dovuto solo caricare il mio dispositivo flashcache esistente che era

flashcache_load /dev/sdb1

quindi monta semplicemente la mia partizione home con

mount /home

quindi uscire dall'accesso come root con exit dalla riga di comando e dovrebbe continuare ad avviarsi normalmente. tutto fatto!


sono curioso di sapere se funziona ancora, ho finito per passare e non usando più flashcache, ho appena installato Arch sull'SSD da 64 GB (il kernel di Linux pensa che sia solo 32 GB) a causa del firmware interno. Ho potuto vedere che questo è utile come unità di memorizzazione nella cache per alcuni giochi di Steam.
Ubu the Tech Guru,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.