Временно отключите кеширование чтения bcache, чтобы выполнить очистку.

Вопрос или проблема

Я использую btrfs вместе с bcache. Он кэширует небольшие чтения, и это отлично работает.

Однако при выполнении проверки btrfs я хотел бы, чтобы эти чтения прошли на основные устройства, потому что их содержимое является исходной правдой; то, что я хочу проверить.

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

Можно ли как-то достичь этого, не теряя кэш? Я хочу, чтобы bcache продолжал отслеживать все свои обычные состояния; обновлять и аннулировать кэш. Однако, когда дело доходит до использования кэша, он должен просто читать напрямую с основных дисков и игнорировать любые кэшированные данные.

Недавно я также наткнулся на это, и, похоже, достаточно отключить кэширование, записав “none” в файлы sysfs основных устройств по адресу “/sys/fs/bache/BCACHE_UUID/bdev*/cache_mode”.

Я протестировал результаты с помощью netdata. После отключения режима кэширования больше не засчитывались Hits кэша. Так что я предполагаю, что кэш был отключен после этого.

Должно быть безопасно делать это на активном устройстве bcache.

Ответ или решение

Временное отключение чтения кэша bcache для выполнения сканирования btrfs: Полное руководство

В ситуации, когда у вас настроен файловая система Btrfs поверх bcache и вы хотите запустить процесс проверки данных (scrub), важно минимизировать доступ к кэшу для получения достоверной информации о данных на задних устройствах. Scrub проверяет целостность данных, и для этого лучше всего пойти напрямую к исходным данным, а не использовать потенциально устаревшие кэшированные версии.

Проблема

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

Решение

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

Шаги для отключения кэша

  1. Определите UUID вашего кэша bcache:
    Вам нужно найти UUID вашего устройства, чтобы выполнить дальнейшие действия. Вы можете использовать команду lsblk для просмотра подключенных устройств и их UUID.

    lsblk -o UUID,NAME,MOUNTPOINT
  2. Измените режим кэширования для устройств хранения:
    Для каждого из ваших устройств вы можете изменить режим кэширования, выставив его в "none".

    Для этого выполните следующие команды:

    echo none > /sys/fs/bcache/BCACHE_UUID/bdev*/cache_mode

    Убедитесь, что заменили BCACHE_UUID на соответствующий UUID вашего устройства.

  3. Проверка результата:
    После отключения кэша проверьте метрики кэширования с помощью инструментов мониторинга, таких как Netdata. Вам нужно убедиться, что кэш-попадания больше не отображаются:

    netdata
  4. Запустите scrub:
    Теперь, когда кэширование отключено, запустите процесс проверки данных Btrfs с помощью команды:

    btrfs scrub start /mnt/your_btrfs_mount_point
  5. Восстановление режима кэширования:
    После завершения scrub вы можете вернуть кэширование обратно в прежний режим, выполнив:

    echo writeback > /sys/fs/bcache/BCACHE_UUID/bdev*/cache_mode

Итог

Таким образом, вы можете временно отключить кэширование в bcache во время выполнения проверки (scrub) для Btrfs без потери состояния кэша. Этот подход позволяет сохранить целостность данных и гарантировать, что вы работаете с самой свежей и надежной информацией с задних устройств.

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

Оцените материал
Добавить комментарий

Капча загружается...