¿Cómo elimino el dispositivo de caché de bcache?


7

Creo que una vez que me aseguré de que el estado de mi dispositivo de caché esté "limpio":

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

Simplemente puedo eliminarlo físicamente de la máquina cuando está apagado o arrancar con liveCD y limpiar el superbloque con:

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

Pero no puedo encontrar una confirmación en ningún lado, de que este procedimiento no arruine nada.

Respuestas:


12

Utilicé bcachesolo en una configuración de escritura, e incluso a IIRC bcacheno le gusta en absoluto si el dispositivo de caché desaparece mientras la máquina está en funcionamiento. Espere que el bcachedispositivo se bloquee completamente si eso sucede.

No he tratado de eliminar el dispositivo de caché mientras la máquina está apagada, así que no puedo decir nada al respecto. Sin embargo, creo que bcachetodavía es bastante delicado, por lo que te recomiendo que lo pruebes primero con una máquina virtual 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 statearchivo debería decir no cachedespués de eso:

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

66
Puede que me falte alguna advertencia aquí, pero AFAICT el UUID de caché no necesita repetirse en / sys / block / bcache0 / bcache / detach, solo puede repetir '1'. Al menos, eso me funciona en el kernel 3.13. Sin embargo, para adjuntar, debe proporcionar el UUID.
DanielSmedegaardBuus

2

Supongamos que ha configurado con éxito un bcache, ya está trabajando en él, coloca 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 es mejor reemplazar el dispositivo de almacenamiento en caché. Así es como puedes hacerlo. Esta solución se basa en pruebas de VM.

Digamos que estamos hablando del dispositivo /dev/bcache0, el nuevo dispositivo de caché es /dev/sdf1y el dispositivo de respaldo es /dev/md1. Todos los comandos hechos por root.

  1. Asegúrese de que nada esté usando ese dispositivo bcache0.
  2. Hacer en cualquier orden
    1. 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 todavía bloquea las particiones a menos que lo anule.
    2. formatee el nuevo dispositivo de caché con make-bcache -C /dev/sdf1y tome nota del setUUID de ese dispositivo.
  3. 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.


2

Un trazador de líneas:

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

Luego espere hasta que el caché se despeje:

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.