dm-кэш
Разработчик(и) | Джо Торнбер, Хайнц Мауэльсхаген, Майк Снитцер и другие |
---|---|
Первоначальный выпуск | 28 апреля 2013 г | (Linux 3.9)
Написано в | С |
Операционная система | Линукс |
Тип | Функция ядра Linux |
Лицензия | GNU GPL |
Веб-сайт | ядро |
dm-cache — это компонент (точнее, цель) Linux ядра устройства отображения устройств , которое представляет собой платформу для сопоставления блочных устройств с виртуальными блочными устройствами более высокого уровня. Он позволяет одному или нескольким быстрым устройствам хранения, таким как твердотельные накопители на базе флэш-памяти (SSD), выступать в качестве кэша для одного или нескольких более медленных устройств хранения, таких как жесткие диски (HDD); это эффективно создает гибридные тома и обеспечивает вторичного хранилища повышение производительности .
Конструкция dm-cache требует трех физических устройств хранения для создания одного гибридного тома; dm-cache использует эти устройства хранения для отдельного хранения фактических данных, данных кэша и необходимых метаданных . Настраиваемые режимы работы и политики кэширования, причем последние в виде отдельных модулей, определяют способ фактического кэширования данных.
dm-cache лицензируется на условиях GNU General Public License (GPL), основными разработчиками которого являются Джо Торнбер, Хайнц Мауэльсхаген и Майк Снитцер.
Обзор
[ редактировать ]dm-cache использует твердотельные накопители ( SSD ) в качестве дополнительного уровня косвенности при доступе к жестким дискам ( HDD ), улучшая общую производительность за счет использования быстрых твердотельных накопителей на основе флэш-памяти в качестве кэшей для более медленных механических жестких дисков на основе вращающихся магнитных носителей . В результате дорогая скорость твердотельных накопителей сочетается с емкостью более медленных, но менее дорогих жестких дисков. [1] Более того, в случае сетей хранения данных (SAN), используемых в облачных средах в качестве общих систем хранения для виртуальных машин , dm-cache также может улучшить общую производительность и снизить нагрузку на сети SAN, обеспечивая кэширование данных с использованием локального хранилища на стороне клиента. [2] [3] [4]
dm-cache реализован как компонент устройства сопоставления устройств ядра Linux , который представляет собой структуру управления томами , позволяющую создавать различные сопоставления между физическими и виртуальными блочными устройствами. Способ создания сопоставления между устройствами определяет, как виртуальные блоки преобразуются в базовые физические блоки, при этом определенные типы преобразования называются целями . [5] Выступая в качестве цели сопоставления, dm-cache позволяет кэшированию на основе SSD быть частью созданного виртуального блочного устройства, а настраиваемые режимы работы и политики кэширования определяют, как dm-cache работает внутри. Режим работы выбирает способ синхронизации данных между HDD и SSD, а политика кэширования, выбираемая из отдельных модулей, реализующих каждую из политик, обеспечивает алгоритм определения того, какие блоки продвигаются (перемещаются из HDD на SSD), понижен в должности (перенесен с SSD на HDD), очищен и т.д. [6]
При настройке на использование политики кэширования с несколькими очередями (mq) или стохастической многоочередности (smq), причем последняя используется по умолчанию, dm-cache использует твердотельные накопители для хранения данных, связанных с выполненными случайными операциями чтения и записи , используя почти нулевое время поиска . SSD и избегать таких операций ввода-вывода , которые являются типичными узкими местами производительности жестких дисков. Данные, связанные с последовательным чтением и записью, не кэшируются на твердотельных накопителях, что позволяет избежать нежелательной аннулирования кэша во время таких операций; с точки зрения производительности это выгодно, поскольку последовательные операции ввода-вывода подходят для жестких дисков из-за их механической природы. Отсутствие кэширования последовательного ввода-вывода также помогает продлить срок службы твердотельных накопителей, используемых в качестве кэшей. [7]
История
[ редактировать ]Еще один проект dm-cache с аналогичными целями был анонсирован Эриком Ван Хенсбергеном и Мин Чжао в 2006 году в результате стажировки в IBM . [8]
Позже Джо Торнбер, Хайнц Мауэльсхаген и Майк Снитцер представили собственную реализацию концепции, в результате которой dm-cache был включен в ядро Linux. dm-cache был объединен с основной веткой ядра Linux в версии ядра 3.9, выпущенной 28 апреля 2013 года. [6] [9]
Дизайн
[ редактировать ]В dm-cache для создания сопоставленного виртуального блочного устройства, действующего как гибридный том, требуется три физических устройства хранения: [6]
- Исходное устройство – обеспечивает медленное основное хранилище (обычно жесткий диск).
- Устройство кэширования – обеспечивает быстрый кэш (обычно SSD).
- Устройство метаданных — записывает размещение блоков и их грязные флаги, а также другие внутренние данные, требуемые политикой кэширования, включая количество попаданий для каждого блока; устройство метаданных не может использоваться несколькими устройствами кэширования, и его рекомендуется зеркалировать .
Внутри dm-cache ссылается на каждое из исходных устройств через ряд блоков фиксированного размера; размер этих блоков, равный размеру экстента кэширования , настраивается только при создании гибридного тома. Размер экстента кэширования должен находиться в диапазоне от 32 КБ до 1 ГБ и быть кратным 32 КБ; обычно размер экстента кэширования составляет от 256 до 1024 КБ. Выбор экстентов кэширования, превышающих размеры секторов диска, представляет собой компромисс между размером метаданных и возможностью бесполезной траты пространства кэша. Слишком маленькие экстенты кэширования увеличивают размер метаданных как на устройстве метаданных, так и в памяти ядра, тогда как слишком большие экстенты кэширования увеличивают объем неиспользуемого кэш-пространства из-за кэширования целых экстентов даже в случае высоких показателей попадания только для некоторых из своих частей. [6] [10]
Режимы работы, поддерживаемые dm-cache, — это обратная запись , которая используется по умолчанию, сквозная запись и сквозная запись . В режиме обратной записи запись в кэшированные блоки осуществляется только на устройство кэширования, тогда как блоки на исходном устройстве помечаются как «грязные» в метаданных. В режиме сквозной записи запросы на запись не возвращаются как выполненные до тех пор, пока данные не достигнут как источника, так и устройства кэша, при этом чистые блоки не помечаются как грязные. В режиме сквозной работы все чтения выполняются непосредственно с исходного устройства, минуя кэш, а все записи идут непосредственно на исходное устройство; любые попадания в кэш также приводят к аннулированию кэшированных блоков. Режим сквозной передачи позволяет активировать гибридный том, когда неизвестно, что состояние кэш-устройства соответствует состоянию исходного устройства. [6] [11]
Скорость миграции данных, которую dm-cache выполняет в обоих направлениях (т. е. повышение и понижение уровня данных), может быть ограничена до настроенной скорости, чтобы можно было сохранить регулярный ввод-вывод на исходные и кэш-устройства. Вывод из эксплуатации гибридного тома или уменьшение размера кэш-устройства требует использования политики очистки , которая эффективно сбрасывает все блоки, помеченные в метаданных как «грязные», с кэш-устройства на исходное устройство. [6] [7]
Политики кэширования
[ редактировать ]По состоянию на август 2015 г. [update] и версия 4.2 ядра Linux, [12] Следующие три политики кэширования распространяются вместе с основной линией ядра Linux, из которых dm-cache по умолчанию использует политику стохастической многоочередности : [6] [7]
- многоочередность (мк)
- Политика многоочередности (mq) имеет три набора по 16 очередей , в которых первый набор используется для записей, ожидающих кэша, а остальные два набора для записей, уже находящихся в кэше, причем последние разделены, поэтому чистые и грязные записи принадлежат каждой из два комплекта. Возраст записей кэша в очередях зависит от связанного с ними логического времени. Выбор записей, попадающих в кэш (т. е. продвигающихся по службе), основан на переменных пороговых значениях, а выбор очереди основан на количестве попаданий записи. Целью этой политики является учет различных затрат на промахи в кэше и автоматическая корректировка различных шаблонов нагрузки.
- Эта политика внутренне отслеживает последовательные операции ввода-вывода , чтобы их можно было маршрутизировать по кэшу, с различными настраиваемыми пороговыми значениями для различения случайных операций ввода-вывода и последовательных операций ввода-вывода. В результате исходному устройству приходится выполнять большие непрерывные операции ввода-вывода, поскольку такие шаблоны доступа к данным подходят для жестких дисков и позволяют избежать нежелательной аннулирования кэша.
- стохастическая множественная очередь (smq)
- Политика стохастической многоочередности (smq) работает аналогично политике многоочередности , но для ее работы требуется меньше ресурсов; в частности, он использует существенно меньшие объемы оперативной памяти для отслеживания кэшированных блоков. Он также заменяет подсчет попаданий из политики нескольких очередей очередью «горячей точки» и принимает решения о повышении и понижении уровня данных на основе самого последнего использования (LRU). В результате эта политика обеспечивает более высокую производительность по сравнению с политикой нескольких очередей , лучше автоматически адаптируется к различным шаблонам нагрузки и исключает настройку различных пороговых значений.
- чище
- Политика очистки записывает обратно на исходное устройство все блоки, помеченные в метаданных как «грязные». После завершения этой операции гибридный том можно вывести из эксплуатации или уменьшить размер кэш-устройства.
Использование с LVM
[ редактировать ]Менеджер логических томов включает в себя lvmcache
, который предоставляет оболочку для dm-cache
интегрирован с LVM. [13]
См. также
[ редактировать ]- bcache - кеш блочного уровня ядра Linux, разработанный Кентом Оверстритом.
- Flashcache — компонент дискового кэша для ядра Linux, первоначально разработанный Facebook.
- Гибридный накопитель - устройство хранения данных, сочетающее в себе технологии хранения данных на основе флэш-памяти и вращающихся магнитных носителей.
- ReadyBoost - программный компонент кэширования диска в Windows Vista и более поздних операционных системах Microsoft.
- Технология Smart Response (SRT) — запатентованный механизм кэширования дискового хранилища, разработанный Intel для своих чипсетов.
- ZFS – межоперационная система управления хранилищем с аналогичной встроенной поддержкой устройств кэширования (L2ARC).
Ссылки
[ редактировать ]- ^ Петрос Кутупис (25 ноября 2013 г.). «Продвинутые методы кэширования жесткого диска» . Linux-журнал . Проверено 2 декабря 2013 г.
- ^ «dm-cache: динамическое кэширование хранилища на уровне блоков» . Visa.cs.fiu.edu . Архивировано из оригинала 18 июля 2014 года . Проверено 24 июля 2014 г.
- ^ Дулькардо Артеага; Дуглас Отстотт; Мин Чжао (16 мая 2012 г.). «Динамическое управление кэшем на уровне блоков для систем облачных вычислений» . Visa.cs.fiu.edu . Архивировано из оригинала (PDF) 3 декабря 2013 года . Проверено 2 декабря 2013 г.
- ^ Дулькардо Артеага; Мин Чжао (21 июня 2014 г.). «Клиентское флэш-кэширование для облачных систем» . Visa.cs.fiu.edu . АКМ . Архивировано из оригинала (PDF) 6 сентября 2015 года . Проверено 31 августа 2015 г.
- ^ «Документация Red Hat Enterprise Linux 6, Приложение A. Устройство сопоставления устройств» . Красная шляпа . 8 октября 2014 года . Проверено 23 декабря 2014 г.
- ^ Jump up to: а б с д и ж г Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (20 июля 2015 г.). «Документация по ядру Linux: Documentation/device-mapper/cache.txt» . ядро.орг . Проверено 31 августа 2015 г.
- ^ Jump up to: а б с Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (29 июня 2015 г.). «Документация по ядру Linux: Documentation/device-mapper/cache-policies.txt» . ядро.орг . Проверено 31 августа 2015 г.
- ^ Эрик Ван Хенсберген; Мин Чжао (28 ноября 2006 г.). «Динамическая политика кэширования диска для сетей хранения данных» (PDF) . Отчет об исследовании IBM. ИБМ . Проверено 2 декабря 2013 г.
- ^ «Ядро Linux 3.9, раздел 1.3. Устройства SSD-кэша» . kernelnewbies.org . 28 апреля 2013 года . Проверено 7 октября 2013 г.
- ^ Джейк Эдж (1 мая 2013 г.). «LSFMM: Кэширование – dm-cache и bcache» . LWN.net . Проверено 7 октября 2013 г.
- ^ Джо Торнбер (11 ноября 2013 г.). «Дерево исходного кода ядра Linux: kernel/git/torvalds/linux.git: кэш dm: добавить сквозной режим» . ядро.орг . Проверено 6 февраля 2014 г.
- ^ Джонатан Корбет (1 июля 2015 г.). «4.2 Объединение окна, часть 2» . LWN.net . Проверено 31 августа 2015 г.
- ^ Red Hat, Inc. «lvmcache — кэширование LVM» . Страницы руководства Debian.
Кэш горячей точки для чтения и записи с использованием модуля ядра dm-cache.
Внешние ссылки
[ редактировать ]- Варианты блочного кэширования Linux в стабильном восходящем ядре (PDF), Dell , декабрь 2013 г.
- Сравнение производительности EnhanceIO, bcache и dm-cache , LKML , 11 июня 2013 г.
- Тестирование EnhanceIO, Bcache и DM-Cache , Phoronix , 11 июня 2013 г., Майкл Ларабель
- Учебное пособие по SSD-кэшированию с использованием dm-cache , июль 2014 г., автор: Кайл Манна
- Re: [dm-devel] [ИСПРАВЛЕНИЕ 8/8] [dm-cache] цель кэша , 14 декабря 2012 г. (рекомендации по определению размеров устройства с метаданными)