Как я удаляю устройство кэша из bcache?

Несколько более длительный ответ, чем мой комментарий о тестах, состоявших главным образом из маленьких транзакций.

Рабочая нагрузка, недостаточная для тестирования

Если Вы захотите к стресс-тесту свою файловую систему, то Вам будут нужны большие наборы работы.

В зависимости от того, сколько памяти Вы имеете на своем поле, даже 10-е тысяч операций создания папки не покажут заметное различие между двумя. Так, измените свою рабочую нагрузку для достаточного тестирования файловых систем, приняв во внимание память, которая привыкнет как буфер.

Существует множество способов создать тест, который инвертирует преимущества Вашего системного поршня и других факторов, которые скосят Ваши результаты испытаний.

Или, Вы можете, использовал комплект стандартизированного теста, как bonnie ++

7
05.12.2019, 15:49
3 ответа

Предположим, вы успешно настроили bcache, вы уже работаете над ним, поместили туда много важных данных, слишком больших, чтобы просто выполнить резервное копирование и начать заново, когда вы поняли, что вам лучше заменить устройство кэширования. Вот как это можно сделать. Это решение основано на испытаниях виртуальной машины.

Допустим, мы говорим об устройстве / dev / bcache0 , новое устройство кэш-памяти - / dev / sdf1 , а вспомогательное устройство - / dev / md1 . Все команды выполняются root.

  1. Убедитесь, что это устройство bcache0 ничем не используется.
  2. Выполнить в любом порядке
    1. Удалите устройство кэш-памяти, как написал Мартин фон Виттих, указав setUUID в / sys / block / bcache0 / bcache / detach . Если вы хотите переразбить кэширующее устройство, вам необходимо перезагрузить его, потому что bcache по-прежнему блокирует разделы, если вы не отмените его регистрацию.
    2. формат - новое устройство кэширования с помощью make-bcache -C / dev / sdf1 и запишите setUUID этого устройства.
  3. Зарегистрируйте наше поддерживающее устройство с новым набором кэша:

    echo [setUUID нового устройства кеширования]> / sys / block / bcache0 / bcache / attach

Нет необходимости перезагружаться.

2
27.01.2020, 20:15

Я использовал bcache только в конфигурации writethrough, и IIRC даже тогда bcache совсем не нравится, если устройство кэша исчезает во время работы машины. Ожидайте, что устройство bcache полностью заглохнет, если это произойдет.

Я не пробовал удалять устройство кэша, когда машина выключена, поэтому не могу ничего сказать об этом. Однако я думаю, что bcache все еще довольно чувствителен, поэтому я бы рекомендовал сначала попробовать это на виртуальной или физической тестовой машине.


Чтобы безопасно удалить устройство кэша, вы можете отсоединить набор кэша от устройства bcache:

echo <cache-set-uuid> > /sys/block/bcache0/bcache/detach

Чтобы определить UUID необходимого набора кэша, посмотрите в /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

Например, в этом случае выполните:

echo eb99feda-fac7-43dc-b89d-18765e9febb6 > /sys/block/bcache0/bcache/detach

В файле state должно быть написано no cache после этого:

host ~ # cat /sys/block/bcache0/bcache/state
no cache
12
27.01.2020, 20:15

Однострочный:

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

Затем подождите, пока очистится кеш-память:

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
2
27.01.2020, 20:15

Теги

Похожие вопросы