У меня есть LVM, и я хотел использовать bcache для кэширования одного из его LV. (Да, я знаю, что могу использовать lvmcache, но у меня возникли проблемы с загрузкой, и я отказался от него.)
Сначала я использовалблокидля преобразования LV в устройство резервного копирования bcache (кажется, это действительно работает!):
blocks to-bcache /dev/my_vg/my_lv
Я создал устройство кэширования на своем SSD:
make-bcache --block 4k --bucket 2M -C /dev/sdc4
Затем я попытался прикрепить кэш к резервному устройству:
bcache-super-show /dev/sdc4 | grep cset.uuid
echo 'above_uuid' > /sys/block/bcache0/bcache/attach
Затем я перезагрузил машину (после добавления /dev/bcache0
в /etc/fstab
) и обнаружил, что кэш не запущен.
# cat /sys/block/bcache0/bcache/state
no cache
# bcache-super-show /dev/my_vg/my_lv | grep cache_state
dev.data.cache_state 0 [detached]
Я что-то упустил? Есть ли другая команда, которую нужно использовать, чтобы включить кэширование?
Почему bcache не нравится мое устройство кэширования и не позволяет мне подключить его к моему устройству резервного копирования? Я использовал неправильные значения для --block
и --bucket
?
решение1
Мне удалось исправить это, пересоздав суперблок на /dev/sdc4
. Похоже, что --block 4k --bucket 2M
был неправильным, и поэтому устройство кэширования не подключалось.
Я очистил суперблок, затем запустил:
make-bcache -C /dev/sdc4
Теперь, когда я это сделал:
echo 'uuid' > /sys/block/bcache0/bcache/attach
это сработало!
решение2
У меня такая же проблема:
make-bcache --block 4k --bucket 2M -C /dev/nvme0n1p1
вызвало ошибку записи: Недопустимый аргумент.
В частности, проблема была вызвана --block 4k.
make-bcache --bucket 2M -C /dev/nvme0n1p1
Сработало отлично.
решение3
Для начала попробуйте провести уборку:
echo $cset_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
echo $backing_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
Используйте bcache-super-show
для получения UUID.
Затем попробуйте зарегистрироваться еще раз:
echo $cset_uuid | sudo tee /sys/fs/bcache/register
echo $backing_uuid | sudo tee /sys/fs/bcache/register
Если устройство кэширования успешно зарегистрировано, uuid кэша должен существовать в /dev/fs/bcache.
Если на вашем устройстве резервного копирования установлено cache_state
значение invalid
, ваши резервные данные находятся во власти fsck
.
Если bcache-super-show
сообщается, что dev.data.cache_state
состояние резервной копии равно clean
и cset.uuid
состоит только из нулей, устройство bcache находится в недопустимом состоянии и должно быть создано заново. [источник]
Однако, если все чисто, можно попробовать принудительно запустить резервное устройство без кэш-устройства:
echo 1 | sudo tee /sys/class/block/$dev/bcache/running