bcache
Разработчик(и) | Кент Оверстрит и другие. |
---|---|
Первоначальный выпуск | 30 июня 2013 г | (Linux 3.10)
Репозиторий | |
Написано в | С |
Операционная система | Линукс |
Тип | Возможности ядра Linux |
Лицензия | GNU GPL |
Веб-сайт | bcache |
bcache (сокращенно от Block Cache ) — это кеш на блочном уровне ядра Linux , который используется для доступа к дополнительным устройствам хранения данных. Он позволяет одному или нескольким быстрым устройствам хранения, таким как твердотельные накопители на основе флэш-памяти (SSD), выступать в качестве кэша для одного или нескольких более медленных устройств хранения, таких как жесткие диски (HDD); это эффективно создает гибридные тома и обеспечивает повышение производительности.
Разработанный с учетом особенностей и характеристик производительности твердотельных накопителей, bcache также минимизирует усиление записи , избегая случайной записи и вместо этого превращая ее в последовательную запись . Такое объединение операций ввода-вывода выполняется как для кэша, так и для основного хранилища, что помогает продлить срок службы флэш-устройств, используемых в качестве кэшей, а также повысить производительность чувствительных к записи первичных хранилищ, таких как наборы RAID 5 .
bcache распространяется по лицензии GNU General Public License (GPL), а его основным разработчиком является Кент Оверстрит. Оверстрит рассматривает bcache как «прототип» для разработки bcachefs , файловой системы со значительными улучшениями по сравнению с bcache. [1]
Обзор
[ редактировать ]Использование bcache позволяет использовать твердотельные накопители в качестве еще одного уровня косвенности в путях доступа к хранилищу данных, что приводит к повышению общей производительности за счет использования быстрых твердотельных накопителей на основе флэш-памяти в качестве кэшей для более медленных механических жестких дисков (HDD) с вращающимися магнитными носителями . Таким образом, можно преодолеть разрыв между твердотельными накопителями и жесткими дисками — дорогая скорость твердотельных накопителей сочетается с дешевой емкостью традиционных жестких дисков. [2]
Кэширование реализуется с использованием твердотельных накопителей для хранения данных, связанных с выполненными случайными операциями чтения и случайной записи, с использованием почти нулевого времени поиска в качестве наиболее заметной особенности твердотельных накопителей. Последовательный ввод-вывод не кэшируется, чтобы избежать быстрого аннулирования кэша SSD при таких операциях, которые уже достаточно подходят для жестких дисков; обход кеша для больших последовательных записей известен как политика обходной записи . Отсутствие кэширования последовательного ввода-вывода также помогает продлить срок службы твердотельных накопителей, используемых в качестве кэшей. [3] Усиления записи можно избежать, не выполняя произвольную запись на твердотельные накопители; вместо этого все случайные записи в кэши SSD всегда объединяются в записи на уровне блоков, в результате чего перезаписывается только полный стираемый блок на SSD. [4] [5]
Для кэширования операций записи поддерживаются политики как обратной, так и сквозной записи (по умолчанию). В случае политики обратной записи записанные данные сначала сохраняются в кэшах SSD, а затем распространяются на жесткие диски в пакетном режиме при выполнении операций поиска, благодаря чему bcache также действует как планировщик ввода-вывода . Для политики сквозной записи, которая гарантирует, что ни одна операция записи не будет помечена как завершенная до тех пор, пока данные, запрошенные для записи, не достигнут как твердотельных, так и жестких дисков, повышение производительности снижается за счет эффективного кэширования только записанных данных. [4] [5]
Политика обратной записи с пакетной записью на жесткие диски обеспечивает дополнительные преимущества для чувствительных к записи избыточных массивов независимых дисков (RAID), таких как RAID 5 и RAID 6 , которые выполняют фактические операции записи в виде атомарных последовательностей чтения-изменения-записи . Таким образом, штрафы за производительность [6] Для таких макетов RAID сокращается или исключается количество небольших случайных записей за счет их группировки и выполнения пакетной последовательной записи. [4] [5]
Кэширование, выполняемое bcache, работает на уровне блочного устройства , делая себя независимым от файловой системы , пока файловая система предоставляет встроенный универсальный уникальный идентификатор (UUID); этому требованию удовлетворяют практически все стандартные файловые системы Linux , а также разделы подкачки . Размеры логических блоков, используемых внутри bcache в качестве экстентов кэширования, могут достигать размера одного сектора жесткого диска. [7]
История
[ редактировать ]bcache был впервые анонсирован Кентом Оверстритом в июле 2010 года как полностью рабочий модуль ядра Linux, хотя и на ранней стадии бета-тестирования. [8] Разработка продолжалась почти два года, до мая 2012 года, когда bcache достиг состояния готовности к производству. [5]
Он был объединен с основной веткой ядра Linux в версии ядра 3.10, выпущенной 30 июня 2013 года. [9] [10] С тех пор Оверстрит разрабатывает файловую систему bcachefs , основываясь на идеях, впервые разработанных в bcache, которые, по его словам, начали «развиваться… в полноценную файловую систему POSIX общего назначения ». [11] Он описывает bcache как «прототип» идей, которые стали bcachef, и намеревается заменить bcache. [12] Он официально анонсировал bcachef в 2015 году и объединил его с основным ядром Linux в октябре 2023 года. [13]
Функции
[ редактировать ]Начиная с версии 3.10 ядра Linux, bcache предоставляет следующие возможности: [4]
- Одно и то же кэш-устройство можно использовать для кэширования произвольного количества основных устройств хранения данных.
- Подключение и отключение основных устройств хранения данных во время выполнения от их кэшей, когда они подключены и используются (работают в транзитном режиме, если они не кэшированы)
- Автоматическое восстановление после некорректного завершения работы — запись не завершается до тех пор, пока кэш не станет согласованным по отношению к основному устройству хранения данных; внутренне bcache не делает различий между чистыми и нечистыми завершениями работы
- Прозрачная обработка ошибок ввода-вывода, генерируемых устройствами кэширования. [3]
- Барьеры записи и связанные с ними очистки кэша обрабатываются должным образом.
- Политики сквозной записи (по умолчанию), обратной записи и обходной записи.
- Последовательный ввод-вывод обнаруживается и блокируется с помощью настраиваемых пороговых значений; обход также можно отключить
- Регулирование ввода-вывода на SSD, если он перегружен, что обнаруживается по измеренной задержке операций ввода-вывода SSD, превышающей настраиваемый порог; полезно для конфигураций, в которых один твердотельный накопитель обеспечивает кэширование для многих жестких дисков.
- Упреждающее чтение при промахе в кэше (по умолчанию отключено)
- Высокоэффективная реализация обратной записи: «грязные» данные всегда записываются в отсортированном порядке, а при необходимости фоновая обратная запись плавно ограничивается до сохранения настроенного процента «грязного» кэша.
- Внутренне используются высокопроизводительные деревья B+ — bcache способен выполнять около 1 000 000 операций ввода-вывода в секунду при случайном чтении, если оборудование достаточно быстрое.
- Различные статистические данные времени выполнения и параметры конфигурации доступны через sysfs. [3]
Улучшения
[ редактировать ]По состоянию на февраль 2014 г. [update], в будущих выпусках bcache запланированы следующие новые функции: [10]
- Осведомленность о чередовании данных в макетах 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 (SRT) — запатентованный механизм кэширования дискового хранилища, разработанный Intel для своих чипсетов.
Ссылки
[ редактировать ]- ^ «Часто задаваемые вопросы по bcache» . bcache.evilpiepirate.org . Проверено 7 мая 2021 г.
- ^ Петрос Кутупис (25 ноября 2013 г.). «Продвинутые методы кэширования жесткого диска» . Linux-журнал . Проверено 2 декабря 2013 г.
- ^ Jump up to: а б с «Документация по ядру Linux: Documentation/bcache.txt» . ядро.орг . 12 августа 2013 года . Проверено 24 января 2014 г.
- ^ Jump up to: а б с д Кент Оверстрит. «bcache: кеш блочного уровня ядра Linux» . bcache.evilpiepirate.org . Проверено 2 декабря 2013 г.
- ^ Jump up to: а б с д Джонатан Корбет (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 г.
- ^ Jump up to: а б Либби Кларк (11 июня 2013 г.). «Все о ядре Linux: bcache» . Linux.com . Архивировано из оригинала 29 сентября 2013 года . Проверено 9 октября 2013 г.
- ^ Ларабель, Майкл (21 августа 2015 г.). «Новая файловая система Linux нацелена на скорость, но при этом имеет функции, подобные ZFS/Btrfs» . Фороникс . Проверено 22 ноября 2018 г.
- ^ Эдж, Джейк (23 мая 2018 г.). «Обновление bcachefs» . LWN.net . Проверено 22 ноября 2018 г.
- ^ Ларабель, Майкл (31 октября 2023 г.). «Bcachefs объединены с ядром Linux 6.7» . Фороникс . Проверено 20 ноября 2023 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- LSFMM: Кэширование — dm-cache и bcache , LWN.net , 1 мая 2013 г., Джейк Эдж
- Варианты блочного кэширования Linux в стабильном восходящем ядре (PDF), Dell , декабрь 2013 г.
- Серия тестов bcache: пропускная способность [узурпировал] , операций ввода-вывода в секунду [узурпировал] , Метаданные [узурпировал] и Большие файлы и итоги [узурпировал] , Журнал Linux Magazine , август – сентябрь 2010 г., Джеффри Б. Лейтон
- Сравнение производительности EnhanceIO, bcache и dm-cache , LKML , 11 июня 2013 г.
- Тестирование EnhanceIO, Bcache и DM-Cache , Phoronix , 11 июня 2013 г., Майкл Ларабель