Flashcache

Бесплатно
Открытый исходный код
Linux

Сайт: github.com/facebookarchive/flashcache

Flashcache — это модуль блочного кэша для ядра Linux, разработанный для использования флеш-памяти (SSD, USB-накопителей, SD-карт и аналогичных устройств) в роли кэша между основным блочным устройством хранения и файловой системой или другим слоем хранения. Проект был инициирован и поддерживался командой Facebook с целью повышения производительности ввода-вывода за счёт снижения задержек при обращениях к часто используемым блокам и уменьшения нагрузки на основные медленные устройства хранения. Flashcache работает на уровне блочного устройства, перехватывая операции чтения и записи и перенаправляя их через ускоряющее устройство при соблюдении выбранной политики кэширования.

Архитектурно Flashcache представляет собой блоковое устройство, которое занимает место между вышележащими слоями (например, файловой системой) и нижележащим физическим диском. Он поддерживает режимы write-back и write-through, управление размером кэша и различные стратегии вытеснения данных. Проект ориентирован на практическое использование в серверных средах и облачных инфраструктурах, где добавление флеш-устройств позволяет заметно повысить пропускную способность и снизить время отклика для рабочих нагрузок с высокой локальностью доступа. В документированных реализациях уделялось внимание устойчивости данных и восстановлению после сбоев, хотя детали зависят от конкретной версии и конфигурации.

  • Уровень работы: блочный модуль, интегрируется как устройство-обёртка между файловой системой и физическим диском.
  • Поддерживаемые режимы: write-back (записи буферизуются в кэше и применяются асинхронно) и write-through (записи одновременно проходят в кэш и на основное устройство).
  • Политики вытеснения: реализуются алгоритмы вытеснения холодных блоков для освобождения места в кэше в зависимости от частоты и недавности доступа.
  • Конфигурация размера: возможность задать объём флеш-устройства, выделяемого под кэш, и параметры порогов использования.
  • Согласованность и защита данных: механизмы синхронизации и записи на основное устройство, опции для снижения риска потери данных при отключении питания или сбоях.
  • Прозрачность для приложений: приложение и файловая система работают с кэшируемым устройством как с обычным блочным устройством без необходимости модификации кода.
  • Производительность: уменьшение латентности чтения и прирост IOPS для рабочих нагрузок с повторным доступом к данным, за счёт использования флеш-памяти с более коротким временем доступа по сравнению с HDD.
  • Совместимость: рассчитан на использование с существующими инструментами управления блочными устройствами в Linux; подробности зависят от версии ядра и поставляемого пакета.
  • Ограничения: эффективность зависит от характера нагрузки, рабочая величина кэша и характеристик флеш-носителя; возможны компромиссы между долговечностью флеш-памяти и приростом производительности.
  • Исторический контекст: проект возник как ответ на потребность крупных облачных провайдеров и дата-центров в доступном ускорении ввода-вывода с использованием массово доступных флеш-устройств.
Подробнее