6 999
contributi
Wtf (discussione | contributi) |
S3v (discussione | contributi) m (Correzioni minori) |
||
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 29: | Riga 29: | ||
* una sul disco solido che fungerà da cache, es. <code>sdx6</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>sdy6</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 52: | Riga 52: | ||
# make-bcache -C /dev/sdx6 | # 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> | ||
Riga 65: | Riga 65: | ||
<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 | {{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 77: | 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> | ||
Riga 83: | Riga 83: | ||
: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 93: | 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''; | ||
Riga 99: | Riga 99: | ||
# 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. | ||
==== Pulire le partizioni ==== | ==== 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''. | È 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 | 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> | ||
per annullare la registrazione delle partizioni e quindi pulirle: | per annullare la registrazione delle partizioni e quindi pulirle: |
contributi