Bcache: differenze tra le versioni
Wtf (discussione | contributi) |
S3v (discussione | contributi) m (→Introduzione) |
||
(16 versioni intermedie di 2 utenti non mostrate) | |||
Riga 2: | Riga 2: | ||
== Introduzione == | == Introduzione == | ||
'''bcache''' è uno strumento che permette di creare un volume dati costituito da più partizioni, di cui una che fungerà da cache per tutte le altre. | '''bcache''' è uno strumento che permette di creare un volume dati costituito da più partizioni, di cui una che fungerà da cache per tutte le altre.<br/> | ||
Il minimo numero di partizioni coinvolte è quindi pari a due, una di cache e una con i dati. L'obiettivo è sfruttare un disco SSD per velocizzare l'accesso casuale ai dati di un tradizionale disco meccanico (''SSD caching''). | Il minimo numero di partizioni coinvolte è quindi pari a due, una di cache e una con i dati. L'obiettivo è sfruttare un disco [[SSD]] per velocizzare l'accesso casuale ai dati di un tradizionale disco meccanico (''SSD caching''). | ||
Considerazioni: | Considerazioni: | ||
* i benefici di una simile soluzione rispetto a quella del singolo | * i benefici di una simile soluzione rispetto a quella del singolo disco meccanico sono assolutamente marginali, o inesistenti, nel caso di IO sequenziale; | ||
* questo tipo di strumento fu concepito agli albori degli SSD, quando un disco a stato solido da 32 GB costava ancora un patrimonio. | * questo tipo di strumento fu 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.). | 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.). | ||
Riga 13: | Riga 13: | ||
=== Note su Windows === | === Note su Windows === | ||
Uno strumento simile per | 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 chipset della propria scheda madre (o del controller | * il chipset della propria scheda madre (o del controller SATA aggiuntivo) supporti tale tecnologia; | ||
* il controller SATA sia impostato su RAID nelle opzioni del firmware della scheda madre (BIOS, UEFI, ecc.) o del controller | * il controller SATA sia impostato su RAID nelle opzioni del [[firmware]] della scheda madre ([[BIOS]], [[UEFI]], ecc.) o del controller SATA aggiuntivo. | ||
== Installazione == | == Installazione == | ||
Serve il pacchetto <code>bcache-tools</code> disponibile da repository: | Serve il pacchetto <code>bcache-tools</code> disponibile da [[repository]]: | ||
<pre># aptitude install bcache-tools</pre> | <pre># aptitude install bcache-tools</pre> | ||
Riga 27: | Riga 27: | ||
Creare due partizioni senza specificare alcun file system: | Creare due partizioni senza specificare alcun file system: | ||
* una sul disco solido che fungerà da cache, es. <code> | * una sul disco solido che fungerà da cache, es. <code>sdx6</code>; | ||
* una su un disco meccanico per i dati veri e propri (tecnicamente chiamata di ''backup''), es. <code> | * una su un disco meccanico per i dati veri e propri (tecnicamente chiamata di ''backup''), es. <code>sdy6</code>. | ||
: {{Box|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}} | : {{Box|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 <code>wipefs</code> per eliminare tutti i dati relativi al file system di una partizione ('''attenzione''' che contestualmente si perdono eventuali dati memorizzati su tale partizione): | Se necessario è possibile usare il comando <code>wipefs</code> per eliminare tutti i dati relativi al file system di una partizione ('''attenzione''' che contestualmente si perdono eventuali dati memorizzati su tale partizione): | ||
<pre># wipefs -a /dev/sdXY</pre> | <pre># wipefs -a /dev/sdXY</pre> | ||
Riga 42: | Riga 42: | ||
È possibile creare il volume <code>bcache0</code> in un solo passo col seguente comando: | È possibile creare il volume <code>bcache0</code> in un solo passo col seguente comando: | ||
<pre># make-bcache -B /dev/ | <pre># make-bcache -B /dev/sdy6 -C /dev/sdx6</pre> | ||
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 <code>-B</code> | 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 <code>-B</code> | ||
Riga 49: | Riga 49: | ||
Molto semplicemente si trasformano individualmente le partizioni di backup e caching e poi si associano le une alle altre: | Molto semplicemente si trasformano individualmente le partizioni di backup e caching e poi si associano le une alle altre: | ||
<pre> | <pre> | ||
# make-bcache -B /dev/ | # make-bcache -B /dev/sdy6<br/> | ||
# make-bcache -C /dev/ | # make-bcache -C /dev/sdx6 | ||
</pre> | </pre> | ||
Quando si trasformano le partizioni vengono stampate a video diverse informazioni; in particolare si prenda nota del valore <code>Set UUID</code> associato alla trasformazione della partizione di cache. | Quando si trasformano le partizioni vengono stampate a video diverse informazioni; in particolare si prenda nota del valore <code>Set UUID</code> associato alla trasformazione della partizione di cache.<br/> | ||
Associare le partizioni di backup e caching col seguente comando: | Associare le partizioni di backup e caching col seguente comando: | ||
<pre>echo CSET-UUID > /sys/block/bcache0/bcache/attach</pre> | <pre># echo CSET-UUID > /sys/block/bcache0/bcache/attach</pre> | ||
dove "CSET-UUID" non è nient'altro che il valore <code>Set UUID</code> della partizione di cache. Chiaramente se esistono già altri volumi ''bcache'' sarà necessario modificare il precedente comando sostituendo <code>bcache0</code> con il volume corretto (<code>bcache1</code> o quello che è).<br/> | dove "CSET-UUID" non è nient'altro che il valore <code>Set UUID</code> della partizione di cache. Chiaramente se esistono già altri volumi ''bcache'' sarà necessario modificare il precedente comando sostituendo <code>bcache0</code> con il volume corretto (<code>bcache1</code> o quello che è).<br/> | ||
Nel caso si sia perso il valore <code>Set UUID</code> dovrebbe essere possibile recuperarlo col comando: | Nel caso si sia perso il valore <code>Set UUID</code> dovrebbe essere possibile recuperarlo col comando: | ||
<pre>bcache-super-show /dev/ | <pre>$ bcache-super-show /dev/sdx6</pre> | ||
dove si ricorda che <code>/dev/ | dove si ricorda che <code>/dev/sdx6</code> è la partizione di caching ai fini di questa guida (il valore da segnare è <code>Set UUID</code> non semplicemente <code>UUID</code> o <code>dev.uuid</code>). | ||
=== Utilizzo volume === | === Utilizzo volume === | ||
Testare lo stato del volume col seguente comando: | Testare lo stato del volume col seguente comando: | ||
<pre>cat /sys/block/bcache0/bcache/state</pre> | <pre>$ cat /sys/block/bcache0/bcache/state</pre> | ||
che dovrebbe restituire <code>clean</code>. | che dovrebbe restituire <code>clean</code>. | ||
{{Warningbox|Se non è la prima volta che il volume <code>bcache0</code> viene creato è necessario pulirlo con <code>wipefs -a /dev/bcache0</code> prima di creare il nuovo file system, altrimenti si potrebbero avere errori in fase di montaggio dello stesso.}} | |||
A questo punto è possibile formattare e usare il volume <code>bcache0</code> come qualsiasi altro dispositivo. Per esempio per formattarlo in ext4: | A questo punto è possibile formattare e usare il volume <code>bcache0</code> come qualsiasi altro dispositivo. Per esempio per formattarlo in ext4: | ||
<pre>mkfs.ext4 /dev/bcache0</pre> | <pre># mkfs.ext4 /dev/bcache0</pre> | ||
Se lo si desidera è anche possibile cambiare la modalità di caching, per esempio per passare da quella più sicura <code>writethrough</code> a quella più performante | Se lo si desidera è anche possibile cambiare la modalità di caching, per esempio per passare da quella più sicura <code>writethrough</code> a quella più performante <code>writeback</code>: | ||
<pre># echo writeback > /sys/block/bcache0/bcache/cache_mode</pre> | <pre># echo writeback > /sys/block/bcache0/bcache/cache_mode</pre> | ||
Riga 76: | Riga 77: | ||
Nel caso si abbia necessità di cambiare la partizione di cache procedere come segue: | Nel caso si abbia necessità di cambiare la partizione di cache procedere come segue: | ||
# se possibile fare un backup dei dati presenti sul volume ''bcache''; | # se possibile fare un backup dei dati presenti sul volume ''bcache''; | ||
# assicurarsi che il volume ''bcache'' non sia in uso, per esempio smontandolo del tutto | # assicurarsi che il volume ''bcache'' non sia in uso, per esempio smontandolo del tutto; | ||
# distaccare la cache esistente col seguente comando: | # distaccare la cache esistente col seguente comando: | ||
: <pre>echo CSET-UUID > /sys/block/bcache0/bcache/detach</pre> | : <pre># echo CSET-UUID > /sys/block/bcache0/bcache/detach</pre> | ||
: dove il valore ''CSET-UUID'' è ricavabile con il comando <code>bcache-super-show</code> come mostrato nel paragrafo dedicato alla creazione del volume in più passi. Al solito sostituire nel precedente comando il volume bcache corretto se diverso da <code>bcache0</code> (<code>bcache1</code> o quello che è). | : dove il valore ''CSET-UUID'' è ricavabile con il comando <code>bcache-super-show</code> come mostrato nel paragrafo dedicato alla creazione del volume in più passi. Al solito sostituire nel precedente comando il volume bcache corretto se diverso da <code>bcache0</code> (<code>bcache1</code> o quello che è). | ||
:4. il comando: | :4. il comando: | ||
: <pre>cat /sys/block/bcache0/bcache/state</pre> | : <pre>$ cat /sys/block/bcache0/bcache/state</pre> | ||
: dovrebbe | : dovrebbe restituire ora <code>no cache</code> | ||
:5. creare una nuova partizione di cache ed associarla al volume dati esistente come descritto nel paragrafo dedicato alla creazione del volume in più passi. | :5. creare una nuova partizione di cache ed associarla al volume dati esistente come descritto nel paragrafo dedicato alla creazione del volume in più passi. | ||
Riga 88: | Riga 89: | ||
Stessa procedura descritta nella sezione ''Sostituzione cache'', ma omettendo il punto 5. | Stessa procedura descritta nella sezione ''Sostituzione cache'', ma omettendo il punto 5. | ||
=== Eliminazione volume bcache === | |||
Nel caso si abbia necessità di rivedere il partizionamento del disco contenente la partizione dati del volume bcache è necessario distruggere prima il volume bcache stesso, diversamente non sarà possibile modificare e/o eliminare la suddetta partizione dati. | |||
{{Warningbox|La seguente procedura comporterà la perdita di tutti i dati memorizzati nel volume bcache.}} | |||
Posto che il volume bcache si chiami <code>bcache0</code>, che la partizione di cache sia <code>sdx6</code> e quella dati <code>sdy6</code> (usare il comando <code>bcache-super-show</code> per ottenere i riferimenti corretti), procedere come segue: | |||
# eliminare la cache come descritto nella precedente sezione, ''Eliminazione cache''; | |||
# smontare la partizione dati del volume bcache se ancora non lo si è fatto; | |||
# fermare il volume bcache con il seguente comando: | |||
: <pre># echo 1 > /sys/block/sdy/sdy1/bcache/stop</pre> | |||
# Eseguire il comando: | |||
: <pre>$ cat /sys/block/bcache0/bcache/state</pre> | |||
: se il risultato è ''cat: /sys/block/bcache0/bcache/state: File o directory non esistente'' allora il volume bcache è stato fermato correttamente e la partizione dati può essere modificata come di norma. | |||
==== Pulire le partizioni ==== | |||
È probabile che la partizione di caching risulti ancora registrata a questo punto, quindi risulterà impossibile eliminarla con <code>wipefs</code> o semplicemente riutilizzarla per un nuovo volume bcache. Entrambe le operazioni infatti restituiranno probabilmente un errore contenente ''Device or resource busy''.<br/> | |||
In tal caso: | |||
<pre># cd /sys/fs/bcache/<cset.uuid></pre> | |||
dove al solito ''<cset.uuid>'' è l'identificativo del volume bcache appena fermato. Digitare: | |||
<pre># echo 1 > stop</pre> | |||
per annullare la registrazione delle partizioni e quindi pulirle: | |||
<pre> | |||
# wipefs -a /dev/sdx6 | |||
/dev/sdx6: 16 bytes were erased at offset 0x00001018 (bcache): c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81 | |||
# wipefs -a /dev/sdy6 | |||
/dev/sdy6: 16 bytes were erased at offset 0x00001018 (bcache): c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81 | |||
</pre> | |||
A questo punto il volume <code>bcache0</code> dovrebbe essere scomparso da <code>/dev/</code> e la directory <code>/sys/fs/bcache/</code> dovrebbe risultare inesistente (eventualmente provare a riavviare il PC).<br> | |||
È ora possibile configurare normalmente le partizioni pulite, compreso riutilizzarle per creare un nuovo volume bcache (dopo averle ridimensionate per esempio). | |||
== Approfondimenti == | == Approfondimenti == |
Versione attuale delle 10:12, 30 apr 2017
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. |
Versioni Compatibili Debian testing (anno: 2016) |
Introduzione
bcache è uno strumento che permette di creare un volume dati costituito da più partizioni, di cui una che fungerà da cache per tutte le altre.
Il minimo numero di partizioni coinvolte è quindi pari a due, una di cache e una con i dati. 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 disco meccanico sono assolutamente marginali, o inesistenti, nel caso di IO sequenziale;
- questo tipo di strumento fu 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 chipset della propria scheda madre (o del controller SATA aggiuntivo) supporti tale tecnologia;
- il controller SATA sia impostato su RAID nelle opzioni del firmware della scheda madre (BIOS, UEFI, ecc.) o del controller SATA aggiuntivo.
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.
sdx6
; - una su un disco meccanico per i dati veri e propri (tecnicamente chiamata di backup), es.
sdy6
.
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
Notare che nei comandi che seguiranno si indicherà il volume bcache come bcache0
, ma nel caso l'utente abbia già più volumi bcache tale notazione dovrà essere modificata di conseguenza (usare bcache1
se per esempio si possiede già un singolo volume bcache).
Modalità di caching
Esistono diverse modalità di caching, ma in questa guida si utilizza quella predefinita e più sicura, ovvero writethrough
.
È possibile cambiare la modalità in uso dopo aver creato un volume bcache.
Creazione volume in un solo passo
È possibile creare il volume bcache0
in un solo passo col seguente comando:
# make-bcache -B /dev/sdy6 -C /dev/sdx6
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/sdy6<br/> # make-bcache -C /dev/sdx6
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/sdx6
dove si ricorda che /dev/sdx6
è la partizione di caching ai fini di questa guida (il valore da segnare è Set UUID
non semplicemente UUID
o dev.uuid
).
Utilizzo volume
Testare lo stato del volume col seguente comando:
$ cat /sys/block/bcache0/bcache/state
che dovrebbe restituire clean
.
A questo punto è possibile formattare e usare il volume bcache0
come qualsiasi altro dispositivo. Per esempio per formattarlo in ext4:
# mkfs.ext4 /dev/bcache0
Se lo si desidera è anche possibile cambiare la modalità di caching, per esempio per passare da quella più sicura writethrough
a quella più performante writeback
:
# echo writeback > /sys/block/bcache0/bcache/cache_mode
Gestione
Sostituzione cache
Nel caso si abbia necessità di cambiare la partizione di cache procedere come segue:
- se possibile fare un backup dei dati presenti sul volume bcache;
- assicurarsi che il volume bcache non sia in uso, per esempio smontandolo del tutto;
- distaccare la cache esistente col seguente comando:
# echo CSET-UUID > /sys/block/bcache0/bcache/detach
- dove il valore CSET-UUID è ricavabile con il comando
bcache-super-show
come mostrato nel paragrafo dedicato alla creazione del volume in più passi. Al solito sostituire nel precedente comando il volume bcache corretto se diverso dabcache0
(bcache1
o quello che è). - 4. il comando:
$ cat /sys/block/bcache0/bcache/state
- dovrebbe restituire ora
no cache
- 5. creare una nuova partizione di cache ed associarla al volume dati esistente come descritto nel paragrafo dedicato alla creazione del volume in più passi.
Eliminazione cache
Stessa procedura descritta nella sezione Sostituzione cache, ma omettendo il punto 5.
Eliminazione volume bcache
Nel caso si abbia necessità di rivedere il partizionamento del disco contenente la partizione dati del volume bcache è necessario distruggere prima il volume bcache stesso, diversamente non sarà possibile modificare e/o eliminare la suddetta partizione dati.
ATTENZIONE La seguente procedura comporterà la perdita di tutti i dati memorizzati nel volume bcache. |
Posto che il volume bcache si chiami bcache0
, che la partizione di cache sia sdx6
e quella dati sdy6
(usare il comando bcache-super-show
per ottenere i riferimenti corretti), procedere come segue:
- eliminare la cache come descritto nella precedente sezione, Eliminazione cache;
- smontare la partizione dati del volume bcache se ancora non lo si è fatto;
- fermare il volume bcache con il seguente comando:
# echo 1 > /sys/block/sdy/sdy1/bcache/stop
- Eseguire il comando:
$ cat /sys/block/bcache0/bcache/state
- se il risultato è cat: /sys/block/bcache0/bcache/state: File o directory non esistente allora il volume bcache è stato fermato correttamente e la partizione dati può essere modificata come di norma.
Pulire le partizioni
È probabile che la partizione di caching risulti ancora registrata a questo punto, quindi risulterà impossibile eliminarla con wipefs
o semplicemente riutilizzarla per un nuovo volume bcache. Entrambe le operazioni infatti restituiranno probabilmente un errore contenente Device or resource busy.
In tal caso:
# cd /sys/fs/bcache/<cset.uuid>
dove al solito <cset.uuid> è l'identificativo del volume bcache appena fermato. Digitare:
# echo 1 > stop
per annullare la registrazione delle partizioni e quindi pulirle:
# wipefs -a /dev/sdx6 /dev/sdx6: 16 bytes were erased at offset 0x00001018 (bcache): c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81 # wipefs -a /dev/sdy6 /dev/sdy6: 16 bytes were erased at offset 0x00001018 (bcache): c6 85 73 f6 4e 1a 45 ca 82 65 f5 7f 48 ba 6d 81
A questo punto il volume bcache0
dovrebbe essere scomparso da /dev/
e la directory /sys/fs/bcache/
dovrebbe risultare inesistente (eventualmente provare a riavviare il PC).
È ora possibile configurare normalmente le partizioni pulite, compreso riutilizzarle per creare un nuovo volume bcache (dopo averle ridimensionate per esempio).
Approfondimenti
Sitografia
- documentazione ufficiale kernel.org
- wiki archlinux
Guida scritta da: Wtf 12:48, 10 dic 2016 (CET) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |