Usare Bcache per velocizzare l’hard disk usando una cache su SSD

da Gen 7, 2014Blog0 commenti

Schema funzionamento bcacheMolti computer di recente distribuzione hanno al loro interno una piccola scheda SSD affiancata al tradizionale disco rigido. Tipicamente su questo supporto viene installato il sistema operativo, in modo da rendere veloce l’accensione, e tutto il resto dei dati e dei programmi vengono messi normalmente sul disco più lento. Ma se invece volessimo un sistema più veloce potremmo usare l’SSD come cache del disco fisso, in questo modo non sarà solo il sistema operativo a beneficiare della velocità del disco a stato solido ma tutti i dati!

Attualmente non è possibile fare una nuova installazione di Ubuntu o Fedora usando Bcache. I passaggi consigliati sono di eseguire un’installazione tradizionale sul disco fisso e procedere poi all’aggiunta dell’SSD con Bcache in seguito.

ATTENZIONE! Tutte queste operazioni sono molto delicate e devono essere eseguite da un esperto. E’ sempre buona norma eseguire un backup prima di effettuare questo tipo di modifiche al sistema, ed in ogni caso YetOpen non può essere ritenuta responsabile di alcun danno causato dall’uso proprio o improprio di questa guida.

 

Per iniziare vediamo come aggiungere un disco dati (/dev/sdb) che usi una SSD (/dev/sdc) come cache per un sistema Ubuntu già installato (in /dev/sda).

Bcache richiede un kernel relativamente recente, almeno 3.10 (presente in Ubuntu Saucy). Le distribuzioni meno recenti dovranno avvalersi di un PPA con un kernel adeguato.

Come prima cosa occorre aggiungere un PPA con i software di gestione di Bcache:

sudo add-apt-repository ppa:g2p/storage
sudo apt-get update
sudo apt-get install bcache-tools

A questo punto occorre prima creare il filesystem ext4 su entrambi i dispositivi, disco e SSD, (manualmente tramite mkfs.ext4 o con gparted), quindi aggiungere i dispositivi a Bcache. Come detto sopra il disco dati sdb è il cosiddetto backing device, mentre l’SSD sdc è il caching device. I comandi da eseguire sono:

sudo make-bcache -B /dev/sdb1
sudo make-bcache -C /dev/sdc1

fare attenzione ai diversi parametri! Se viene restituito un errore che esiston già dei superblocchi non bcache sui dispositivi effettuare una inizializzazione con il comando:

sudo wipefs -a /dev/sdb1

potrebbe essere necessario su entrambe le partizioni, backing e caching.

A questo punto udev dovrebbe essersi preso carico della registrazione dei dispositivi, che dovremmo trovare in /dev/bcacheX, dove X è un numero (come avviene tradizionalmente per i dischi). Se al riavvio della macchina la registrazione dei dispositivi non dovesse essere fatta automaticamente è possibile forzarla aggiungendo in /etc/rc.local (prima di exit 0) una riga con questo contenuto:

echo /dev/sd* > /sys/fs/bcache/register_quiet

questo provvederà a fare una scansione dei dispositivi bcache e registrarli nel sistema.

Ora finalmente possiamo montare il nostro disco fisso con cache con il tradizionale mount:

mount /dev/bcache0 /DATI

Ultimo passaggio prima di poter usare il disco è eseguire l’attach dei dispositivi. Ottenere l’UUID della cache con il comando

ls /sys/fs/bcache

otterremo un id alfanumerico da usare nel comando successivo:

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

A questo punto è possibile scrivere in /DATI, e la velocità dovebbe essere molto maggiore dello standard! Per verificare che la cache stia funzionando usare il comando:

tail /sys/block/bcache0/bcache/stats_total/*

e verificarne l’output.

 

Abilitare il writeback

Il metodo di caching predefinito è il writethrough. Questo significa che le letture vengono fatte tramite la cache ma le scritture invece sono effettuate direttamente sul disco di backing. Questa modalità è ovviamente meno performante ma assicura una maggiore integrità dei dati. Un’ulteriore incremento della velocità si può avere abilitando la modalità writeback, che impiega la cache anche per la scrittura dei dati. Ovviamente questo comporta maggiori rischi in quanto in caso di crash del sistema i dati scritti nell’SSD verranno perduti, in quanto non ancora scritti sul dispositivo di backend. Per abilitare questa modalità:

echo writeback > /sys/block/bcache0/bcache/cache_mode

 

Convertire un sistema esistente

Sebbene come detto all’inizio non è possibile effettuare direttamente un’installazione con Bcache possiamo convertire un sistema esistente. Un passaggio manuale è molto rischioso, per questo ci viene in aiuto il tool di conversione blocks.

Prima di cominciare verificare che in /etc/fstab tutte le partizioni vengano referenziate tramite UUID (e non per device name, ad esempio). Installare bcache come da istruzioni sopra quindi rigenerare initramfs con il comando:

update-initramfs -u -k all

Modificare /boot/grub/grub.cfg per fare in modo che le righe linux del kernel facciano riferimento agli UUID. Ad esempio nel caso di LVM update-grub tende a mettere il percorso della partizione logica.

Assicurarsi di avere una partizione /boot separata. Lanciare quindi il comando:

sudo make-bcache -C /dev/sdc1

dove /dev/sdc1 è la partizione dell’SSD. Otterremo l’ID del dispositivo bcache. Quindi lanciare

sudo blocks to-bcache –maintboot /dev/<root-device> –join <cset-uuid>

 

 

Articolo originale di Jack Wallen su Linux.com liberamente tradotto. Per la conversione del sistema esistente tramite blocks la guida è quella di blocks stesso.

Per altre informazioni visitate la sezione del nostro blog.

CREATE YOUR PROJECT

Book a free consultation

Your business is constantly evolving. Tell us about the project you have in mind, whether it's an e-commerce website or a strategic business solution.