Come rimuovo il dispositivo cache da bcache?


7

Credo che una volta verificato che lo stato del mio dispositivo cache sia "pulito":

$ sudo cat /sys/block/bcache0/bcache/state

Posso semplicemente rimuoverlo fisicamente dalla macchina quando è spento o avviare con liveCD e pulire il superblocco con:

$ sudo dd if=/dev/zero of=<backing device for cache> bs=1024 count=1024

Ma non riesco a trovare da nessuna parte una conferma, che questa procedura non rovinerebbe nulla.

Risposte:


12

Ho usato bcachesolo in una configurazione scritta e anche IIRC bcachenon mi piace affatto se il dispositivo cache svanisce mentre la macchina è in esecuzione. Aspettatevi che il bcachedispositivo si blocchi completamente se ciò accade.

Non ho provato a rimuovere il dispositivo cache mentre la macchina è spenta, quindi non posso dire nulla al riguardo. Penso che bcachesia ancora abbastanza permaloso, quindi ti consiglio di provarlo prima con una VM o una macchina per test fisici.


Per rimuovere in sicurezza il dispositivo cache, è possibile scollegare il set di cache dal dispositivo bcache:

echo <cache-set-uuid> > /sys/block/bcache0/bcache/detach

Per determinare la cache necessaria impostare l'UUID, cercare /sys/fs/bcache/:

host ~ # ll /sys/fs/bcache/
total 0
drwxr-xr-x 7 root root    0 Feb 19 00:11 eb99feda-fac7-43dc-b89d-18765e9febb6
--w------- 1 root root 4096 Feb 19 00:11 register
--w------- 1 root root 4096 Feb  7 07:17 register_quiet

Quindi, ad esempio, in questo caso, esegui:

echo eb99feda-fac7-43dc-b89d-18765e9febb6 > /sys/block/bcache0/bcache/detach

Il statefile dovrebbe dire no cachedopo che:

host ~ # cat /sys/block/bcache0/bcache/state
no cache

6
Potrei mancare alcuni avvertimenti qui, ma AFAICT l'UUID della cache non ha bisogno di essere ripetuto su / sys / block / bcache0 / bcache / detach, puoi solo fare eco '1'. Almeno, questo funziona per me sul kernel 3.13. Per il collegamento, tuttavia, è necessario fornire l'UUID.
DanielSmedegaard Buu,

2

Supponiamo che tu abbia configurato correttamente un bcache, ci stia già lavorando, metti molti dati importanti troppo grandi per fare semplicemente il backup e ricominciare, quando ti rendi conto, che è meglio sostituire il dispositivo di memorizzazione nella cache. Ecco come puoi farlo. Questa soluzione si basa su una prova VM.

Diciamo che stiamo parlando del dispositivo /dev/bcache0, del nuovo dispositivo cache /dev/sdf1e del dispositivo di backup /dev/md1. Tutti i comandi eseguiti da root.

  1. Assicurarsi che nulla stia utilizzando quel dispositivo bcache0.
  2. Fare in qualsiasi ordine
    1. Rimuovi il dispositivo cache proprio come ha scritto Martin von Wittich, facendo eco a setUUID in /sys/block/bcache0/bcache/detach. Se si desidera ripartizionare il dispositivo di memorizzazione nella cache, è necessario riavviare, poiché bcache blocca ancora le partizioni a meno che non si annulli la registrazione.
    2. formatta un nuovo dispositivo cache con make-bcache -C /dev/sdf1e prendi nota del setUUID di quel dispositivo.
  3. Registra il nostro dispositivo di backup con il nuovo set di cache:

    echo [setUUID of new cache device] >/sys/block/bcache0/bcache/attach

Non è necessario riavviare.


2

One-liner:

echo $(ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/) > /sys/block/bcache0/bcache/detach

Quindi attendi fino alla cancellazione della cache:

while true; do if [[ $(cat /sys/block/bcache0/bcache/state) != "dirty" ]]; 
then echo "DONE"; break; 
else cat /sys/block/bcache0/bcache/dirty_data; sleep 30; fi; done
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.