Ho usato bcache
solo in una configurazione write-through, e IIRC anche allora bcache
non gli piace affatto se il dispositivo cache svanisce mentre la macchina è in esecuzione. Aspettati il bcache
dispositivo per bloccarsi completamente se ciò accade.
Non ho provato a rimuovere il dispositivo cache mentre la macchina è spenta, quindi non posso dire nulla al riguardo. Penso però che bcache
è ancora piuttosto permaloso, quindi ti consiglio di provarlo prima con una VM o una macchina di prova fisica.
Per rimuovere in modo sicuro il dispositivo cache, puoi scollegare il set di cache dal dispositivo bcache:
echo <cache-set-uuid> > /sys/block/bcache0/bcache/detach
Per determinare l'UUID del set di cache necessario, guarda in /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 state
il file dovrebbe contenere no cache
dopodiché:
host ~ # cat /sys/block/bcache0/bcache/state
no cache
Supponiamo che tu abbia configurato con successo una bcache, ci stai già lavorando, metti lì molti dati importanti troppo grandi per un semplice backup e ricomincia da capo, quando ti sei reso conto che faresti meglio a sostituire il dispositivo di memorizzazione nella cache. Ecco come puoi farlo. Questa soluzione si basa su prove di VM.
Diciamo che stiamo parlando del dispositivo /dev/bcache0
, il nuovo dispositivo cache è /dev/sdf1
e il dispositivo di supporto è /dev/md1
. Tutti i comandi eseguiti da root.
- Assicurati che il dispositivo bcache0 non sia in uso.
- Fai in qualsiasi ordine
- Rimuovi il dispositivo cache proprio come ha scritto Martin von Wittich, echeggiando setUUID in
/sys/block/bcache0/bcache/detach
. Se si desidera ripartizionare il dispositivo di memorizzazione nella cache, è necessario riavviare, perché bcache continua a bloccare le partizioni a meno che non venga annullata la registrazione. - format- nuovo dispositivo cache con
make-bcache -C /dev/sdf1
e prendi nota del setUUID di quel dispositivo.
- Rimuovi il dispositivo cache proprio come ha scritto Martin von Wittich, echeggiando setUUID in
-
Registra il nostro dispositivo di supporto con il nuovo set di cache:
echo [setUUID of new cache device] >/sys/block/bcache0/bcache/attach
Non è necessario riavviare.
Una riga:
echo $(ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/) > /sys/block/bcache0/bcache/detach
Quindi attendi fino a quando la cache non viene cancellata:
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