Bcache (сокращенно от блочного кеша ) - это кэш на уровне блоков ядра Linux , который используется для доступа к вторичным устройствам хранения . Он позволяет одному или нескольким быстрым запоминающим устройствам, таким как твердотельные накопители (SSD) на основе флэш- памяти, выступать в качестве кеша для одного или нескольких более медленных запоминающих устройств, таких как жесткие диски (HDD); это эффективно создает гибридные тома и обеспечивает повышение производительности.
Разработчики) | Кент Оверстрит и другие |
---|---|
Репозиторий | |
Написано в | C |
Операционная система | Linux |
Тип | Особенности ядра Linux |
Лицензия | GNU GPL |
Веб-сайт | bcache |
Разработанный с учетом характера и характеристик производительности твердотельных накопителей, Bcache также сводит к минимуму усиление записи , избегая случайных записей и вместо этого превращая их в последовательную . Это объединение операций ввода-вывода выполняется как для кеша, так и для основного хранилища, помогая продлить срок службы флэш-устройств, используемых в качестве кешей, и повысить производительность чувствительных к записи основных хранилищ, таких как наборы RAID 5 .
Bcache находится под лицензией GNU General Public License (GPL), и Кент Оверстрит является его основным разработчиком. Оверстрит рассматривает Bcache как «прототип» для разработки Bcachefs , файловой системы со значительными улучшениями. [1] [2]
Обзор
Использование Bcache позволяет использовать твердотельные накопители в качестве еще одного уровня косвенности в путях доступа к хранилищу данных, что приводит к повышению общей производительности за счет использования быстрых твердотельных накопителей на основе флэш- памяти в качестве кэшей для более медленных механических жестких дисков (HDD) с вращающимися магнитными носителями . Таким образом, можно преодолеть разрыв между твердотельными накопителями и жесткими дисками - дорогостоящая скорость твердотельных накопителей сочетается с дешевой емкостью традиционных жестких дисков. [3]
Кэширование реализуется за счет использования твердотельных накопителей для хранения данных, связанных с выполненными произвольными чтениями и произвольными записями, с использованием почти нулевого времени поиска как наиболее важной особенности твердотельных накопителей. Последовательный ввод-вывод не кэшируется, чтобы избежать быстрого отключения кэша SSD при таких операциях, которые уже подходят для жестких дисков; обходя кэш для больших последовательных операций записи известен как записи вокруг политики. Отказ от кэширования последовательного ввода-вывода также помогает продлить срок службы твердотельных накопителей, используемых в качестве кешей. [4] Усиление записи предотвращается за счет того, что не выполняется произвольная запись на твердотельные накопители; вместо этого все случайные записи в кэши SSD всегда объединяются в записи на уровне блоков, в результате чего перезаписываются только полные блоки стирания на SSD. [5] [6]
Оба обратной записи и записи через (который по умолчанию) политика поддерживается кэширование операций записи. В случае политики обратной записи записанные данные сначала сохраняются в кэше SSD, а затем передаются на жесткие диски пакетным способом, выполняя операции, удобные для поиска, что делает Bcache также планировщиком ввода-вывода . Для политики сквозной записи, которая гарантирует, что никакая операция записи не будет помечена как завершенная до тех пор, пока данные, запрошенные для записи, не достигнут как твердотельных, так и жестких дисков, улучшения производительности снижаются за счет эффективного выполнения кэширования только записанных данных. [5] [6]
Политика обратной записи с пакетной записью на жесткие диски обеспечивает дополнительные преимущества для чувствительного к записи избыточного массива независимых дисков (RAID), таких как RAID 5 и RAID 6 , которые выполняют фактические операции записи как атомарные последовательности чтения-изменения-записи . Таким образом, потери производительности [7] небольших случайных записей уменьшаются или избегаются для таких схем RAID, сгруппировав их вместе и выполняя как пакетные последовательные записи. [5] [6]
Кэширование, выполняемое Bcache, работает на уровне блочного устройства , выполняя диагностику файловой системы до тех пор, пока файловая система предоставляет встроенный универсальный уникальный идентификатор (UUID); этому требованию удовлетворяют практически все стандартные файловые системы Linux , а также разделы подкачки . Размеры логических блоков, используемых Bcache для внутреннего использования в качестве экстентов кэширования, могут уменьшаться до размера одного сектора жесткого диска. [8]
История
Bcache был впервые анонсирован Кентом Оверстритом в июле 2010 года как полностью рабочий модуль ядра Linux, хотя и на ранней стадии бета-тестирования. [9] Разработка продолжалась почти два года, до мая 2012 года, после чего Bcache достиг состояния готовности к работе. [6]
Он был объединен с основной веткой ядра Linux в версии ядра 3.10, выпущенной 30 июня 2013 года. [10] [11] Оверстрит с тех пор занимается разработкой файловой системы Bcachefs на основе идей, впервые разработанных в Bcache, которые, по его словам, начали «развиваться». .. в полноценную файловую систему POSIX общего назначения ". [12] Он описывает Bcache как «прототип» идей, которые превратились в Bcachefs, и намеревается, что Bcachefs заменит Bcache. [13] Он официально объявил о Bcachefs в 2015 году [14], а с 2018 года отправляет его на рассмотрение для включения в основную линию ядра Linux. [15]
Функции
Начиная с версии 3.10 ядра Linux, Bcache предоставляет следующие функции: [5]
- Одно и то же устройство кэш-памяти можно использовать для кэширования произвольного количества первичных запоминающих устройств.
- Подключение и отключение первичных запоминающих устройств от их кешей во время выполнения, когда они подключены и используются (работает в режиме сквозной передачи, когда они не кэшированы)
- Автоматическое восстановление после нечистых отключений - запись не завершается до тех пор, пока кэш не согласуется с основным устройством хранения; внутри Bcache не делает различий между чистым и нечистым выключением.
- Прозрачная обработка ошибок ввода-вывода, генерируемых устройствами кэширования [4]
- Барьеры записи и связанные сбросы кеша обрабатываются должным образом
- Политика сквозной записи (по умолчанию), обратной записи и обратной записи
- Последовательный ввод-вывод обнаруживается и обходится с настраиваемыми пороговыми значениями; обход также может быть отключен
- Регулирование ввода-вывода на SSD, если он становится перегруженным, что определяется измеренной задержкой операций ввода-вывода SSD, превышающей настраиваемый порог; полезно для конфигураций с одним SSD, обеспечивающим кэширование для многих HDD
- Опережающее чтение при промахе в кеше (по умолчанию отключено)
- Высокоэффективная реализация обратной записи - грязные данные всегда записываются в отсортированном порядке, и, возможно, фоновая обратная запись плавно снижается, чтобы сохранить настроенный процент кеша грязным
- Внутри используются высокопроизводительные деревья B + - Bcache способен выполнять около 1000000 операций ввода-вывода в секунду при произвольном чтении, если оборудование достаточно быстрое.
- Различные статистические данные времени выполнения и параметры конфигурации доступны через sysfs [4]
Улучшения
По состоянию на февраль 2014 г.[Обновить], в будущих выпусках Bcache запланированы следующие новые функции: [11]
- Осведомленность о чередовании данных в схемах RAID 5 и RAID 6 - добавление информации о структуре полос в политику обратной записи, поэтому решения по кэшированию будут отдавать предпочтение уже «грязным» полосам, а фактическая фоновая очистка будет записывать полные полосы первый
- Обработка промахов кеша с уже заполненными узлами B +-дерева - начиная с версии Bcache в ядре Linux 3.10, при записи происходит разбиение внутренних узлов B +-дерева при записи, что делает первоначальный разогрев кеша труднодостижимым
- Несколько твердотельных накопителей в наборе кеша - зеркалируются только грязные данные (для политики обратной записи) и метаданные , не тратя впустую пространство SSD для чистых данных и кешей чтения.
- Контрольная сумма данных
Смотрите также
- dm-cache - цель сопоставления устройств ядра Linux, которая позволяет создавать гибридные тома
- EnhanceIO - модуль дискового кеширования для ядра Linux.
- Flashcache - компонент кеширования диска для ядра Linux, первоначально разработанный Facebook.
- Гибридный накопитель - устройство хранения, сочетающее в себе технологии хранения на основе флэш-памяти и вращающихся магнитных носителей
- ReadyBoost - программный компонент кэширования дисков в Windows Vista и более поздних операционных системах Microsoft.
- Smart Response Technology (SRT) - запатентованный механизм кэширования дискового хранилища, разработанный Intel для своих наборов микросхем.
Рекомендации
- ^ "bcache" . bcache.evilpiepirate.org . Проверено 7 мая 2021 года .
- ^ «FAQ» . bcache.evilpiepirate.org . Проверено 7 мая 2021 года .
- ^ Петрос Кутупис (25 ноября 2013 г.). «Продвинутые методы кэширования жесткого диска» . Linux Journal . Проверено 2 декабря 2013 года .
- ^ а б в «Документация ядра Linux: Documentation / bcache.txt» . kernel.org . 12 августа 2013 . Проверено 24 января 2014 года .
- ^ а б в г Кент Оверстрит. "bcache: кеш уровня блоков ядра Linux" . bcache.evilpiepirate.org . Проверено 2 декабря 2013 года .
- ^ а б в г Джонатан Корбет (12 мая 2012 г.). "Обновление bcache" . LWN.net . Проверено 4 октября 2013 года .
- ^ «Основные организации RAID» . ecs.umass.edu . Проверено 4 октября 2013 года .
- ^ Уильям Стернс; Кент Оверстрит (2 июля 2010 г.). «Bcache: кэширование не только в ОЗУ» . LWN.net . Проверено 4 октября 2013 года .
- ^ Кент Оверстрит (4 июля 2010 г.). «Bcache: версия 6» . LWN.net . Проверено 4 октября 2013 года .
- ^ «Ядро Linux 3.10, раздел 1.2. Bcache, кэш уровня блоков для кэширования SSD» . kernelnewbies.org . 30 июня 2013 . Проверено 4 октября 2013 года .
- ^ а б Либби Кларк (11 июня 2013 г.). «Все о ядре Linux: Bcache» . linux.com . Архивировано из оригинального 29 сентября 2013 года . Проверено 9 октября 2013 года .
- ^ Ларабель 2015 .
- ^ Край 2018 .
- ^ Джексон 2015 .
- ^ Ларабель 2018 .
Процитированные работы
- Эдж, Джейк (23 мая 2018 г.). "Обновление bcachefs" . LWN.net . Архивировано из оригинала на 1 июня 2018 года . Проверено 22 ноября 2018 года .
- Джексон, Иоав (21 августа 2015 г.). «Бывший инженер Google модернизирует новую файловую систему Linux» . PCWorld . Проверено 22 ноября 2018 года .
- Ларабель, Майкл (21 августа 2015 г.). «Новая файловая система Linux нацелена на скорость при наличии функций, подобных ZFS / Btrfs» . Фороникс . Архивировано из оригинального 23 августа 2015 года . Проверено 22 ноября 2018 года .
- Ларабель, Майкл (9 мая 2018 г.). «Файловая система Bcachefs работает над расширением ядра Linux» . Фороникс . Архивировано из оригинала 9 июля 2018 года . Проверено 22 ноября 2018 года .
Внешние ссылки
- Официальный веб-сайт
- LSFMM: Кэширование - dm-cache и bcache , LWN.net , 1 мая 2013 г., Джейк Эдж
- Linux Block Caching Choices in Stable Upstream Kernel (PDF), Dell , декабрь 2013 г.
- Серия «Тестирование Bcache: пропускная способность , количество операций ввода-вывода в секунду , метаданные и большие файлы, а также подведение итогов» , журнал Linux , август – сентябрь 2010 г., Джеффри Б. Лейтон.
- Сравнение производительности EnhanceIO , bcache и dm-cache , LKML , 11 июня 2013 г.
- Тестирование EnhanceIO, Bcache и DM-Cache , Phoronix , 11 июня 2013 г., Майкл Ларабель