?

Log in

linux SSD caching, 2017 - Все не как у людей [entries|archive|friends|userinfo]
ex0_planet

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

linux SSD caching, 2017 [Feb. 6th, 2017|04:51 am]
ex0_planet
[Tags|, ]

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, и для компенсации этого может потребоваться маленький скрипт. В более новых ядрах все должно быть хорошо, но могут загрузить и старое, да и на проверку времени пока нет.

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

Comments:
[User Picture]From: tanner_of_kha
2017-02-06 03:55 am (UTC)
У меня была довольно свежая инструкция. Только для dm_cache.
(Reply) (Thread)
From: ex0_planet
2017-02-06 10:51 am (UTC)
Ждем когда протухнет :) Я на самом деле именно поэтому не стал писать конкретику с командами, чтобы была возможность подменить ссылку и сказать что так и было поправить, если настанет такой момент.

На самом деле это очень большая проблема, что линуксовые факи и хаутушки довольно редко актуализируются, или хотя бы указываются "границы применимости". archwiki в этом смысле это чуть ли не лучшее что есть.
(Reply) (Parent) (Thread)