Невозможно присоединить кэш-устройство к резервному устройству

Невозможно присоединить кэш-устройство к резервному устройству

У меня есть 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

Связанный контент