Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian testing (anno: 2016)

Introduzione

bcache è uno strumento che permette di creare un volume dati costituito da due partizioni (nel caso domestico più comune): una contenente i dati veri e propri ed una che fungerà da cache per la prima. L'obiettivo è sfruttare un disco SSD per velocizzare l'accesso casuale ai dati di un tradizionale disco meccanico (SSD caching). Considerazioni:

  • i benefici di una simile soluzione rispetto a quella del singolo discolo meccanico sono assolutamente marginali, o inesistenti, nel caso di IO sequenziale;
  • questo tipo di strumento viene concepito agli albori degli SSD, quando un disco a stato solido da 32 GB costava ancora un patrimonio.

In base a quanto scritto è evidente come oggi giorno l'SSD caching abbia praticamente perso di significato, almeno per quanto riguarda gli utenti comuni. È più semplice e performante la soluzione disco SSD più disco meccanico: sull'SSD si installa il sistema operativo e gli applicativi di uso più frequente, mentre sul disco meccanico i dati più voluminosi (film, musica, ecc.). Premesso questo, se si ha voglia di sperimentare vale la pena riservare 10-30 GB del proprio disco solido al caching dei dati di un disco meccanico. Non esagerare con lo spazio riservato perché tanto come già scritto l'utilizzo della cache sarà probabilmente minimo, visto che non ha alcun effetto sugli IO sequenziali.

Note su Windows

Uno strumento simile per windows è costituito da "Rapid Storage Tecnology" di intel, che però non permette di usare lo stesso disco su cui è installato windows e inoltre richiede che il controller SATA sia impostato su RAID nelle opzioni del firmware della scheda madre (BIOS, UEFI, ecc.).

Installazione

Serve il pacchetto bcache-tools disponibile da repository:

# aptitude install bcache-tools

Configurazione

Creare due partizioni senza specificare alcun file system:

  • una sul disco solido che fungerà da cache, es. sda3;
  • una su un disco meccanico per i dati veri e propri (tecnicamente chiamata di backup), es. sdb1.
  Nota
Chi scrive non è sicuro che sia possibile convertire una partizione esistente in una utilizzabile da bcache, pertanto l'intera guida si fonda sul presupposto che l'utente prima crei il volume bcache e poi proceda a popolarlo con i suoi dati

Se necessario è possibile usare il comando wipefs per eliminare tutti i dati relativi al file system di una partizione (attenzione che contestualmente si perdono eventuali dati memorizzati su tale partizione):

# wipefs -a /dev/sdXY

Creazione volume in un solo passo

È possibile creare il volume bcache0 in un solo passo col seguente comando:

# make-bcache -B /dev/sdb1 -C /dev/sda3

Nel caso si voglia associare una cache a più partizioni di backup è sufficiente indicare tali partizioni una di seguito all'altra subito dopo l'opzione -B

Creazione volume in più passi

Molto semplicemente si trasformano individualmente le partizioni di backup e caching e poi si associano le une alle altre:

# make-bcache -B /dev/sdb1<br/>
# make-bcache -C /dev/sda3

Quando si trasformano le partizioni vengono stampate a video diverse informazioni; in particolare si prenda nota del valore Set UUID associato alla trasformazione della partizione di cache. Associare le partizioni di backup e caching col seguente comando:

echo CSET-UUID > /sys/block/bcache0/bcache/attach

dove "CSET-UUID" non è nient'altro che il valore Set UUID della partizione di cache. Chiaramente se esistono già altri volumi bcache sarà necessario modificare il precedente comando sostituendo bcache0 con il volume corretto (bcache1 o quello che è). Nel caso si sia perso il valore Set UUID dovrebbe essere possibile recuperarlo col comando:

bcache-super-show /dev/sda3

dove si ricorda che /dev/sda3 è la partizione di caching ai fini di questa guida (il valore da segnare è Set UUID non semplicemente UUID o dev.uuid).