У меня установлена серверная система Linux на SSD и жесткий диск для пользовательских данных. Поскольку на SSD осталось место, я хочу использовать его в качестве кеша чтения для жесткого диска.
Рассматривая возможности, я обнаружил:
dm-cache: требуется много чтений, прежде чем кеширование показывает улучшения производительности в соответствии с https://www.redhat.com/en/blog/improving-read-performance-dm-cache. Я думаю, что в моем случае это плохая стратегия.
lvmcache: строится на dm-cache, и мне нужно было бы поместить SSD и HDD в один LV. Я хотел бы, чтобы кеш был прозрачным, чтобы я мог легко перенести жесткий диск в другую систему без необходимости сначала выполнять магию LVM.
Bcache: мне нужно отформатировать жесткий диск для Bcache. Не то, что я хочу.
Flashcache: похоже на то, что я хочу (просто включите его), но больше не поддерживается активно в соответствии с https://github.com/facebookarchive/flashcache.
EnhanceIO: строится на Flashcache, но не работает с 2015 года.
Есть ли что-нибудь похожее на Flashcache или EnhanceIO, но все еще активно поддерживаемое?
EnhanceIO по-прежнему поддерживается сообществом. Eсть вилка через lanconnected который был пропатчен для последних ядер и пары других форков с последними коммитами примерно в то же время (апрель 2019 г.). Я использовал его с btrfs на Arch через dkms пару лет и не заметил никаких серьезных проблем.
Это достойный обзор кешей блоков ядра Linux. Из них я рассматриваю только lvmcache и bcache: интегрированные в ядро и документированные стабильными дистрибутивами.
Оба требуют формата метаданных, избежать которого будет нелегко.
Переместить диски в другую систему относительно просто, если целевая система также поддерживает кэширование. Дистрибутивы с поддержкой LVM будут сканировать тома, если не автоматически, с помощью простой команды. Аналогично bcache.
В любом случае монтируйте тома по UUID файловой системы или метке, абстрагируясь от нумерации устройств.
Тестовые процедуры удаления кеша в запланированных и незапланированных сценариях. Например, bcache в режиме отдельной сквозной передачи. Как только вы сможете восстановить только резервный диск без его кеша, больше не нужно будет возвращаться к необработанному, предварительно кэшированному диску.
Я бы посоветовал изменить размер раздела и создать на нем систему или использовать USB-жесткий диск и развернуть его там временно?