6 999
contributi
Wtf (discussione | contributi) |
S3v (discussione | contributi) m (→Introduzione) |
||
(9 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 92: | Riga 93: | ||
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. | 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}} | {{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: | 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''; | # eliminare la cache come descritto nella precedente sezione, ''Eliminazione cache''; | ||
# smontare la partizione dati del volume bcache se ancora non lo si è fatto; | # smontare la partizione dati del volume bcache se ancora non lo si è fatto; | ||
# fermare il volume bcache con il seguente comando: | # fermare il volume bcache con il seguente comando: | ||
: <pre>echo 1 > /sys/block/sdy/sdy1/bcache/stop</pre> | : <pre># echo 1 > /sys/block/sdy/sdy1/bcache/stop</pre> | ||
# Eseguire il comando | # Eseguire il comando: | ||
: <pre>cat /sys/block/bcache0/bcache/state</pre> | : <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. | : 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. | ||
==== | |||
È 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''. | ==== Pulire le partizioni ==== | ||
In tal caso | È 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> | <pre># cd /sys/fs/bcache/<cset.uuid></pre> | ||
dove al solito ''<cset.uuid>'' è l'identificativo del volume bcache appena fermato. Digitare | dove al solito ''<cset.uuid>'' è l'identificativo del volume bcache appena fermato. Digitare: | ||
<pre># echo 1 > stop</pre> | <pre># echo 1 > stop</pre> | ||
e quindi | per annullare la registrazione delle partizioni e quindi pulirle: | ||
<pre> | <pre> | ||
# wipefs -a /dev/sdx6 | # wipefs -a /dev/sdx6 | ||
Riga 114: | Riga 116: | ||
/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 | /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> | </pre> | ||
A questo punto il volume <code>bcache0</code> dovrebbe essere scomparso da <code>/dev/</code> | 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 == |
contributi