Usé bcache
solo en una configuración de escritura simultánea, e IIRC incluso entonces bcache
no le gusta nada si el dispositivo de caché desaparece mientras la máquina está funcionando. Espere el bcache
dispositivo para detenerse por completo si eso sucede.
No he intentado eliminar el dispositivo de caché mientras la máquina está apagada, así que no puedo decir nada al respecto. Aunque creo que bcache
todavía es bastante delicado, así que te recomiendo que lo intentes primero con una VM o una máquina de prueba física.
Para eliminar de forma segura el dispositivo de caché, puede desconectar el conjunto de caché del dispositivo bcache:
echo <cache-set-uuid> > /sys/block/bcache0/bcache/detach
Para determinar el UUID del conjunto de caché necesario, busque en /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
Entonces, por ejemplo, en este caso, ejecute:
echo eb99feda-fac7-43dc-b89d-18765e9febb6 > /sys/block/bcache0/bcache/detach
El state
el archivo debe decir no cache
después de eso:
host ~ # cat /sys/block/bcache0/bcache/state
no cache
Suponga que configuró con éxito un bcache, ya está trabajando en él, colocó allí una gran cantidad de datos importantes demasiado grandes para simplemente hacer una copia de seguridad y comenzar de nuevo, cuando se dio cuenta de que sería mejor reemplazar el dispositivo de almacenamiento en caché. Así es como puedes hacerlo. Esta solución se basa en pruebas de una máquina virtual.
Digamos que estamos hablando del dispositivo /dev/bcache0
, el nuevo dispositivo de caché es /dev/sdf1
y el dispositivo de respaldo es /dev/md1
. Todos los comandos hechos por root.
- Asegúrese de que nada esté usando ese dispositivo bcache0.
- Hacer en cualquier orden
- Elimine el dispositivo de caché tal como escribió Martin von Wittich, haciendo eco de setUUID en
/sys/block/bcache0/bcache/detach
. Si desea volver a particionar el dispositivo de almacenamiento en caché, debe reiniciar, porque bcache aún bloquea las particiones a menos que lo cancele. - formato:nuevo dispositivo de caché con
make-bcache -C /dev/sdf1
y tome nota del setUUID de ese dispositivo.
- Elimine el dispositivo de caché tal como escribió Martin von Wittich, haciendo eco de setUUID en
-
Registre nuestro dispositivo de respaldo con el nuevo conjunto de caché:
echo [setUUID of new cache device] >/sys/block/bcache0/bcache/attach
No es necesario reiniciar.
De una sola línea:
echo $(ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/) > /sys/block/bcache0/bcache/detach
Luego espere hasta que se borre el caché:
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