WikiDer > Dm-cache - Википедия
Разработчики) | Джо Торнбер, Хайнц Мауэльсхаген, Майк Снитцер и другие |
---|---|
Написано в | C |
Операционная система | Linux |
Тип | Функция ядра Linux |
Лицензия | GNU GPL |
Интернет сайт | ядро |
dm-cache является компонентом (точнее, целью) Ядро Linuxс сопоставитель устройств, который является рамки для картографии блочные устройства на виртуальные блочные устройства более высокого уровня. Это позволяет использовать одно или несколько быстрых запоминающих устройств, например флэш-память. твердотельные накопители (SSD), чтобы действовать как тайник для одного или нескольких более медленных устройств хранения, таких как жесткие диски (HDD); это эффективно создает гибридные тома и предоставляет вторичное хранилище улучшения производительности.
Конструкция dm-cache требует трех физических запоминающих устройств для создания единого гибридного тома; dm-cache использует эти устройства хранения для отдельного хранения фактических данных, данных кеша и необходимых метаданные. Настраиваемые режимы работы и политики кеширования, причем последние в виде отдельных модулей, определяют способ фактического кэширования данных.
dm-cache лицензируется на условиях Стандартная общественная лицензия GNU (GPL) с Джо Торнбером, Хайнцем Мауэльсхагеном и Майком Снитцером в качестве основных разработчиков.
Обзор
dm-cache использует твердотельные накопители (SSD) как дополнительный уровень косвенного доступа при доступе к жестким дискам (Жесткие диски), улучшая общую производительность за счет быстрого вспышкаSSD-накопители в качестве кэшей для более медленных механических жестких дисков на основе вращательного магнитные носители. В результате дорогостоящая скорость твердотельных накопителей сочетается с емкостью хранения, предлагаемой более медленными, но менее дорогими жесткими дисками.[1] Более того, в случае сети хранения данных (SAN) используется в облако среды как общие системы хранения для виртуальные машины, dm-cache также может улучшить общую производительность и снизить нагрузку на сети SAN, обеспечивая кэширование данных с использованием локального хранилища на стороне клиента.[2][3][4]
dm-cache реализован как компонент ядра Linux сопоставитель устройств, который является управление томом инфраструктура, которая позволяет создавать различные сопоставления между физическими и виртуальными блочными устройствами. Способ создания сопоставления между устройствами определяет, как виртуальный блоки переводятся в базовые физические блоки, при этом конкретные типы перевода называются цели.[5] Выступая в качестве цели сопоставления, dm-cache позволяет кэшированию на основе SSD быть частью созданного виртуального блочного устройства, в то время как настраиваемые режимы работы и политики кеширования определяют, как dm-cache работает внутри. Рабочий режим выбирает способ, которым данные синхронизируются между жестким диском и твердотельным накопителем, в то время как политика кеширования, выбираемая из отдельных модулей, реализующих каждую из политик, обеспечивает алгоритм для определения того, какие блоки повышаются (перемещаются с жесткого диска на SSD), понижаются (перемещаются с SSD на жесткий диск), очищаются и т. д.[6]
При настройке на использование множественная очередь (mq) или стохастическая множественная очередь (smq) политика кеширования, последняя по умолчанию, dm-cache использует твердотельные накопители для хранения данных, связанных с выполненными случайное чтение и запись, используя почти нулевую время поиска твердотельных накопителей и избегая таких Ввод / вывод операции как типичные узкие места производительности жесткого диска. Данные, связанные с последовательные чтения и записи не кэшируются на 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)
- В множественная очередь (mq) policy состоит из трех наборов по 16 очереди, используя первый набор для записей, ожидающих кеширования, и оставшиеся два набора для записей, уже находящихся в кэше, причем последний разделен, поэтому чистые и грязные записи принадлежат каждому из двух наборов. Возраст записей кэша в очередях зависит от связанного с ними логического времени. Выбор записей, попадающих в кэш (т. Е. Становящихся продвигаемыми), основан на переменных пороговых значениях, а выбор очереди основан на количестве совпадений записи. Эта политика направлена на то, чтобы промах в кеше затраты во внимание, а также для автоматической корректировки различных моделей нагрузки.
- Эта политика внутренне отслеживает последовательный ввод / вывод операций, чтобы их можно было маршрутизировать вокруг кеша, с различными настраиваемыми пороговыми значениями для различения случайный ввод / вывод и последовательные операции ввода-вывода. В результате большие непрерывные операции ввода-вывода остаются для выполнения исходным устройством, потому что такие шаблоны доступа к данным подходят для жестких дисков и потому, что они избегают нежелательной недействительности кеша.
- стохастическая множественная очередь (smq)
- В стохастическая множественная очередь (smq) политика работает так же, как и множественная очередь политика, но требует меньше ресурсов для работы; в частности, он использует существенно меньшее количество основная память для отслеживания кешированных блоков. Он также заменяет подсчет попаданий из множественная очередь политики с очередью «точки доступа» и принимает решение о повышении и понижении уровня данных в наименее недавно использованный (LRU) основа. В результате эта политика обеспечивает лучшую производительность по сравнению с множественная очередь политика, лучше автоматически подстраивается под различные шаблоны нагрузки и устраняет настройку различных пороговых значений.
- очиститель
- В очиститель policy записывает обратно на исходное устройство все блоки, помеченные как грязные в метаданных. После завершения этой операции гибридный том можно вывести из эксплуатации или уменьшить размер кэш-памяти.
Использование с LVM
Диспетчер логических томов включает lvmcache
, который предоставляет оболочку для dm-cache
интегрирован с LVM.[13]
Смотрите также
- bcache - кэш уровня блоков ядра Linux, разработанный Кентом Оверстритом
- Flashcache - компонент кеширования диска для ядра Linux, изначально разработанный Facebook
- Гибридный привод - запоминающее устройство, сочетающее в себе технологии флэш-памяти и вращающиеся магнитные носители.
- ReadyBoost - программный компонент кэширования дисков Windows Vista и более поздних операционных систем Microsoft
- Технология Smart Response (SRT) - проприетарный механизм кэширования дискового хранилища, разработанный Intel для своих чипсетов.
- ZFS - кросс-OS система управления хранилищем, которая имеет аналогичную интегрированную поддержку устройств кэширования (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 г.). «Кэширование Flash на стороне клиента для облачных систем». visa.cs.fiu.edu. ACM. Архивировано из оригинал (PDF) 6 сентября 2015 г.. Получено 31 августа, 2015.
- ^ «Документация по Red Hat Enterprise Linux 6, приложение A. Устройство отображения». Красная шляпа. 8 октября 2014 г.. Получено 23 декабря, 2014.
- ^ а б c d е ж грамм Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (20 июля 2015 г.). «Документация по ядру Linux: Documentation / device-mapper / cache.txt». kernel.org. Получено 31 августа, 2015.
- ^ а б 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 в стабильном ядре восходящего потока (PDF), Dell, Декабрь 2013
- Сравнение производительности EnhanceIO, bcache и dm-cache, LKML, 11 июня 2013 г.
- Тестирование EnhanceIO, Bcache и DM-Cache, Фороникс, 11 июня 2013 г., Майкл Ларабель
- Кэширование SSD с использованием dm-cache Tutorial, Июль 2014, Кайл Манна
- Re: [dm-devel] [PATCH 8/8] [dm-cache] цель кеширования, 14 декабря 2012 г. (рекомендации по определению размеров устройства с метаданными)