Bcache, который я поставил примерно 6 недель назад, успешно отсох и перестал кэшировать. Похоже, что причиной тому не проблемы с SSD, а какие-то его внутренние процессы — сейчас оно ругается в dmesg о том, что btree corrupted и кэш не подключает. На самом деле случилось это не сейчас, а еще две недели назад, и я ничего бы не заметил, если бы не легкие подтормаживания, ну и привычка иногда мониторить состояние всего свеженастроенного. В итоге оно просто переключилось в passthrough режим и продолжило работать как ни в чём не бывало. Потерь данных нет. В логах от 3/11 есть такая запись:

Mar 11 22:29:48 debian kernel: [198437.484482] corrupted btree at bucket 107995, block 446, 504 keys
Mar 11 22:29:48 debian kernel: [198437.484483] , disabling caching
Mar 11 22:29:54 debian kernel: [198443.041803] bcache: cached_dev_detach_finish() Caching disabled for sda
Mar 11 22:29:54 debian kernel: [198443.045608] bcache: cache_set_free() Cache set f73f7a39-fc4c-45dc-acef-7c250128e1ab unregistered


За полным отсутсвием воспроизводимости проблемы и отсутствием диагностических инструментов для bcache (даже fsck нет), писать в какое-либо спортлото считаю бессмысленным. Пересоздал кэш, посмотрим что дальше будет.
TL;DR bcache работает и он рулез.

Меж тем, завел в хозяйстве SSD кэш для диска (несколько лет собирался аж). Ниже впечатления кратко.

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

Итак, герои дня:

1. Flashcache. Исторически первая реализация, написанная людьми из facebook. Похоже, сдох. Последний условно-содержательный коммит от сентября 2015, да и репозиторий в github/facebookarchive/flashcache как бы намекает. В дебиане есть, но на ядре 4.8 уже не собирается, а версия 3.1.3 из /testing роняет ядро в бесконечный oops. На ядре 3.16/stable впрочем работает. По итогам отправился в мусорку.

2. EnhanceIO. Форк flashcache, заброшен также осенью 2015. В дебиане нет, даже не стал пытаться заводить.

3. bcache. Выглядит самым вменяемым из всех, плюс наличие его в mainline дает некоторую надежду. Есть поддержка в дебиане. По итогам на нём и остановился. Имеет маленький недостаток: требуется полное переразбиение дисков, поскольку хочет записать на разделы свой суперблок.

4. dm-cache. Еще одна mainline-реализация, вроде бы рабочая, но в моем случае она отпала по причине того, что получался слишком замороченный io-стэк (lvm over lvm).

Сам bcache устанавливается достаточно прямолинейно. Инструкция из archwiki вполне подойдет: размечаем разделы, говорим make-bcache на backing device и на кэш, аттачим одно к другому. Очень понравилось то, что режимы можно переключать на ходу, а также работать без кэша, отцеплять его на ходу, итд. Как обычно, LVM позволяет не прерывать рабочий процесс на всякую ерунду вроде форматирования дисков, но, разумеется, понадобится еще один диск размером не менее чем основной, чтобы было куда сохранить данные (lvconvert -m1/-m0, vgreduce и далее в таком духе). На этом в принципе все.

Маленький нюанс. Вроде бы в некоторых версиях bcache себя не очень хорошо ведет с sleep/hibernate, и для компенсации этого может потребоваться маленький скрипт. В более новых ядрах все должно быть хорошо, но могут загрузить и старое, да и на проверку времени пока нет.

За неделю полет нормальный, потерь данных нет. Скорость тоже стала очень ок.

Profile

ex0_planet

July 2017

S M T W T F S
      1
2345678
9101112131415
1617 1819202122
23242526272829
3031     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2017 06:31 pm
Powered by Dreamwidth Studios