
Estaba probando bcache pero no tengo un SSD, así que quería usar memoria libre como sustituto. Como el disco RAM aparece /proc/devices
como dispositivo de bloque, supuse que esto funcionaría bien, pero con la prueba simple a continuación no puedo hacerlo funcionar.
Esto está en Ubuntu 15.10 con el último kernel 4.5 instalado y estoy usando los /dev/ram
dispositivos predeterminados como mi sustituto de SSD.
losetup -f
dd if=/dev/zero of=/tmp/bcache_origin bs=1M count=200
losetup /dev/loop2 /tmp/bcache_origin
make-bcache -B /dev/loop2 -C /dev/ram9
No se produjo ningún error ni resultado de make-bcache
. En este punto, espero que el nuevo dispositivo bcache aparezca en las siguientes rutas, ya sea por UUID o por nombre, pero no hay nada.
ls -al /sys/fs/bcache/
ls -al /sys/block/bcache*
Aquí están los resultados decache-super-show
para caché
bcache-super-show /dev/ram9
sb.magic ok
sb.first_sector 8 [match]
sb.csum 53EDD9C169F73E1B [match]
sb.version 0 [cache device]
dev.label (empty)
dev.uuid 2189aa3b-67e7-4296-bb25-6b5ba886befa
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 130048
dev.cache.total_sectors 131072
dev.cache.ordered no
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid 0a6b3824-72c1-489e-9d96-d976cb49e8a9
y origen
bcache-super-show /dev/loop2
sb.magic ok
sb.first_sector 8 [match]
sb.csum ECBC84E42E6F52B9 [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid aff690a4-7ee1-4b62-85cc-ad41c775d7d8
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 0 [writethrough]
dev.data.cache_state 0 [detached]
cset.uuid 0a6b3824-72c1-489e-9d96-d976cb49e8a9
También intenté usar dispositivos de bucle para ambos, pero falló aún peor. La ejecución del siguiente comando da como resultado kernel BUG
un volcado desagradable en dmesg.
losetup -f
dd if=/dev/zero of=/tmp/bcache_data bs=1M count=200
dd if=/dev/zero of=/tmp/bcache_cache bs=1M count=200
losetup /dev/loop5 /tmp/bcache_data
losetup /dev/loop6 /tmp/bcache_cache
make-bcache -B /dev/loop5 -C /dev/loop6
ll /sys/fs/bcache/
¿Alguien ha conseguido que un disco ram funcione como dispositivo de almacenamiento en caché con bcache? Sin ningún tipo de salida estándar/err para indicar dónde está fallando, no estoy seguro de si se trata de un error de configuración o de un error.
gracias flo
Respuesta1
Algunos dispositivos deben registrarse para poder usarse.
después de hacer los dispositivos de caché con
# make-bcache -B /dev/loop2 -C /dev/ram9
necesita registrar ambos (al menos el disco ram, los dispositivos de bucle y los discos duros parecen registrarse automáticamente la mayor parte del tiempo) con
# echo /dev/ram9 >/sys/fs/bcache/register
la entrada uuid en /sys/fs/bcache debería aparecer y el dispositivo debería conectarse automáticamente como se ve en
# cat /sys/block/bcache0/bcache/state
clean
si realiza un cache en el caché y el dispositivo de respaldo por separado con
# make-bcache -B /dev/loop2
# make-bcache -C /dev/ram9
Este no es el caso e incluso después de registrar el disco RAM, dirá
# cat /sys/block/bcache0/bcache/state
no-cache
aunque aparecerá la entrada en /sys/fs/bcache:
# ls /sys/fs/bcache
f876ea9b-af2c-4b01-84ba-43a87d60501c register register_quiet
entonces necesitas adjuntarlo con
# echo f876ea9b-af2c-4b01-84ba-43a87d60501c >/sys/block/bcache0/bcache/attach
# cat /sys/block/bcache0/bcache/state
clean
Error complicado: una vez conectado a un bcache, no se puede eliminar el dispositivo de bucle con
# losetup -d /dev/loop2
esto fallará silenciosamente, aunque el código de salida sea 0 (¡éxito!)
primero debes deshacer todo con
# echo 1 >/sys/block/bcache0/bcache/stop
# echo 1 >/sys/fs/bcache/f876ea9b-af2c-4b01-84ba-43a87d60501c/unregister