Разработчики) | Джо Торнбер, Хайнц Мауэльсхаген, Майк Снитцер и другие |
---|---|
Написано в | C |
Операционная система | Linux |
Тип | Функция ядра Linux |
Лицензия | GNU GPL |
Веб-сайт | ядро |
дм-кэша является компонентом (более конкретно, мишень) из ядра Linux «с устройства отображени , который является основой для отображения блочных устройств на устройства виртуальных блоков более высокого уровня. Он позволяет одному или нескольким быстрым устройствам хранения, например твердотельным накопителям (SSD) на основе флэш- памяти, выступать в качестве кеша для одного или нескольких более медленных устройств хранения, таких как жесткие диски (HDD); это эффективно создает гибридные тома и обеспечивает повышение производительности вторичного хранилища .
Конструкция dm-cache требует трех физических запоминающих устройств для создания единого гибридного тома; dm-cache использует эти устройства хранения для отдельного хранения фактических данных, данных кеша и необходимых метаданных . Настраиваемые режимы работы и политики кеширования, причем последние в виде отдельных модулей, определяют способ фактического кэширования данных.
dm-cache находится под лицензией GNU General Public License (GPL), основными разработчиками которой являются Джо Торнбер, Хайнц Мауэльсхаген и Майк Снитцер.
Обзор [ править ]
dm-cache использует твердотельные накопители ( SSD ) в качестве дополнительного уровня косвенного доступа при доступе к жестким дискам ( HDD ), повышая общую производительность за счет использования быстрых SSD на основе флэш- памяти в качестве кешей для более медленных механических жестких дисков на основе вращающихся магнитных носителей . В результате дорогостоящая скорость твердотельных накопителей сочетается с емкостью хранения, предлагаемой более медленными, но менее дорогими жесткими дисками. [1] Более того, в случае сетей хранения данных (SAN), используемых в облачных средах в качестве общих систем хранения для виртуальных машин., dm-cache также может повысить общую производительность и снизить нагрузку на сети SAN за счет кэширования данных с использованием локального хранилища на стороне клиента. [2] [3] [4]
dm-cache реализован как компонент сопоставителя устройств ядра Linux , который представляет собой структуру управления томами, которая позволяет создавать различные сопоставления между физическими и виртуальными блочными устройствами. Способ создания сопоставления между устройствами определяет, как виртуальные блоки транслируются в базовые физические блоки, при этом конкретные типы трансляции называются целями . [5] Выступая в качестве цели сопоставления, dm-cache позволяет кэшированию на основе SSD быть частью созданного виртуального блочного устройства, в то время как настраиваемые режимы работы и политики кеширования определяют, как dm-cache работает внутри. Рабочий режим выбирает способ, которым данные синхронизируются между жестким диском и твердотельным накопителем, в то время как политика кэширования, выбираемая из отдельных модулей, реализующих каждую из политик, обеспечивает алгоритм для определения того, какие блоки продвигаются (перемещаются из С жесткого диска на твердотельный накопитель), понижен в должности (перенесен с твердотельного накопителя на жесткий диск), очищен и т. Д. [6]
При настройке использовать multiqueue (MQ) или стохастической multiqueue (SMQ) политику кэширования, причем последний по умолчанию, использует дм-кэш твердотельных накопителей в для хранения данных , связанных с выполняется случайного чтения и записи , спекулируя на близкой к нулю время поиска по SSD и отказ от таких операций ввода-вывода, как типичные узкие места для жестких дисков. Данные, связанные с последовательным чтением и записью, не кэшируются на твердотельных накопителях, что позволяет избежать нежелательной аннулирования кеша во время таких операций; С точки зрения производительности это выгодно, потому что последовательные операции ввода-вывода подходят для жестких дисков из-за их механической природы. Отсутствие кеширования последовательного ввода-вывода также помогает в расширениивремя жизни 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 года [Обновить]и версии ядра Linux 4.2, [12] следующие три политики кеширования распространяются вместе с основной веткой ядра Linux, из которых dm-cache по умолчанию использует стохастическую политику множественной очереди : [6] [7]
- множественная очередь (mq)
- Multiqueue (кв.м.) политика имеет три набора из 16 очередей , используя первый набор для записей , ожидающих кэша , а оставшиеся два набора для записи уже в кэше, причем последний отделен так чистой и грязной записи относятся к каждому из два набора. Возраст записей кэша в очередях зависит от связанного с ними логического времени. Выбор записей, поступающих в кэш (т. Е. Продвигаемых), основан на переменных пороговых значениях, а выбор очереди основан на количестве попаданий записи. Эта политика направлена на то, чтобы учесть различные затраты на промахи в кэше и произвести автоматическую корректировку различных схем загрузки.
- Эта политика внутренне отслеживает последовательные операции ввода-вывода, чтобы их можно было маршрутизировать вокруг кеша, с различными настраиваемыми пороговыми значениями для различения между случайными операциями ввода- вывода и последовательными операциями ввода-вывода. В результате большие непрерывные операции ввода-вывода остаются для выполнения исходным устройством, потому что такие шаблоны доступа к данным подходят для жестких дисков и потому, что они избегают нежелательной инвалидации кеша.
- стохастическая множественная очередь (smq)
- Стохастическая multiqueue (SMQ) выполняет политики в аналогичным образом , как и multiqueue политики, но требует меньше ресурсов для работы; в частности, он использует существенно меньшие объемы основной памяти для отслеживания кэшированных блоков. Он также заменяет хит отсчет от multiqueue политики с очередью «горячих точек», и принимает решение о продвижении данных и понижение в должности по крайней мере, в последнее время используется (НДИ) основе. В результате эта политика обеспечивает лучшую производительность по сравнению с политикой нескольких очередей , лучше автоматически подстраивается под различные шаблоны нагрузки и устраняет настройку различных пороговых значений.
- очиститель
- Политика очистки записывает обратно в исходное устройство все блоки, помеченные в метаданных как грязные. После завершения этой операции гибридный том можно вывести из эксплуатации или уменьшить размер кэш-памяти.
Использовать с LVM [ править ]
Logical Volume Manager включает в lvmcache
себя оболочку для dm-cache
интеграции с LVM. [13]
См. Также [ править ]
- bcache - кеш уровня блоков ядра Linux, разработанный Кентом Оверстритом
- Flashcache - компонент кеширования диска для ядра Linux, первоначально разработанный Facebook.
- Гибридный накопитель - устройство хранения, сочетающее в себе технологии хранения на основе флэш-памяти и вращающихся магнитных носителей.
- ReadyBoost - программный компонент кэширования дисков в Windows Vista и более поздних операционных системах Microsoft.
- Smart Response Technology (SRT) - запатентованный механизм кэширования дискового хранилища, разработанный Intel для своих наборов микросхем.
- ZFS - кросс-OS система управления хранилищем, которая имеет аналогичную интегрированную поддержку устройств кэширования (L2ARC)
Ссылки [ править ]
- ^ Петрос Koutoupis (25 ноября 2013). «Продвинутые методы кэширования жесткого диска» . Linux Journal . Проверено 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 г.). «Кэширование Flash на стороне клиента для облачных систем» . visa.cs.fiu.edu . ACM . Архивировано из оригинального (PDF) 6 сентября 2015 года . Проверено 31 августа 2015 года .
- ^ «Документация по Red Hat Enterprise Linux 6, приложение A. Устройство сопоставления устройств» . Красная шляпа . 8 октября 2014 . Проверено 23 декабря 2014 года .
- ^ Б с д е е г Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (20 июля 2015 г.). «Документация ядра Linux: Documentation / device-mapper / cache.txt» . kernel.org . Проверено 31 августа 2015 года .
- ^ a b c Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (29 июня 2015 г.). «Документация по ядру Linux: Documentation / device-mapper / cache-policies.txt» . kernel.org . Проверено 31 августа 2015 года .
- ^ Эрик Ван Хенсберген; Мин Чжао (28 ноября 2006 г.). «Кэширование диска с динамической политикой для сетей хранения данных» (PDF) . Отчет об исследованиях IBM. 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 cache: add passthrough mode" . kernel.org . Проверено 6 февраля 2014 года .
- ↑ Джонатан Корбет (1 июля 2015 г.). «4.2 Окно слияния, часть 2» . LWN.net . Проверено 31 августа 2015 года .
- ^ Red Hat, Inc. "lvmcache - кэширование LVM" . Debian Manpages.
Кэш горячих точек чтения и записи с использованием модуля ядра dm-cache.
Внешние ссылки [ править ]
- Linux Block Caching Choices in Stable Upstream Kernel (PDF), Dell , декабрь 2013 г.
- Сравнение производительности EnhanceIO , bcache и dm-cache , LKML , 11 июня 2013 г.
- Тестирование EnhanceIO, Bcache и DM-Cache , Phoronix , 11 июня 2013 г., Майкл Ларабель
- Кэширование SSD с использованием dm-cache Tutorial , июль 2014 г., автор: Кайл Манна
- Re: [dm-devel] [PATCH 8/8] [dm-cache] цель кэша , 14 декабря 2012 г. (рекомендации по определению размера устройства с метаданными)