Система кэширования на SSD-накопителях BCache претендует на включение в ядро Linux

16.01.2013 12:16

Кент Оверстрит (Kent Overstreet) объявил в списке рассылки разработчиков ядра Linux о готовности реализации системы кэширования блочных устройств на SSD-накопителях BCache для интеграции в ядро Linux. Первые реализации Bcache были представлены ещё в 2010 году и развивались обособленно, теперь все требования по оформлению кода выполнены, а ранее мешавшие интеграции кода ограничения в уровне блочных устройств Linux обойдены, и проект в скором времени может быть принят в основное ядро. Проект отмечается как стабильный и достаточно давно используемый на нескольких крупных серверах в режиме промышленной эксплуатации.

Bcache позволяет организовать кэширование доступа к медленным жестким дискам на быстрых SSD-накопителях, при этом кэширование ведётся на уровне блочного устройства, что позволяет ускорить доступ к накопителю независимо от используемых на нём файловых систем. Один SSD-накопитель может использоваться для кэширования нескольких различных блочных устройств. Блочное устройство может быть на лету прикреплено к кэшу и отключено от него, без размонтирования и временной остановки работы.

Поддерживается два режима кэширования: сквозное кэширование (writethrough), при котором записываемые данные сразу сохраняются на исходном накопителе и оседают в кэше только для ускорения операций чтения; режим отложенной записи (writeback) при котором данные записываются на исходный носитель не сразу, что позволяет обеспечить ускорение операций записи но может привести к потере блоков данных при сбое SSD-накопителя. Дополнительно поддерживается, но отключен по умолчанию, режим readahead, при котором кэш наполняется не только при записи, но и при операциях чтения.

Из особенностей Bcache также можно отметить достаточно продвинутую логику кэширования, например, Bcache выявляет и не сохраняет в кэше последовательные обращения к большому объему данных, кэшируется только операции случайного чтения и записи. Bcache пытается оптимально использовать характеристики SSD-накопителей, учитывая ограниченный ресурс по записи данных и преобразуя случайные операции записи в последовательное заполнение накопителя. При writeback-кэшировании, при сбросе данных на диск, данные группируются с учётом минимизации перемещения головок диска. Универсальный подход к кэшированию делает Bcache подходящим решением как для серверных систем и крупных массивов хранения, так и для рабочих станций и встраиваемых систем.

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