Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

дм-кэша является компонентом (более конкретно, мишень) из ядра 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)

Ссылки [ править ]

  1. ^ Петрос Koutoupis (25 ноября 2013). «Продвинутые методы кэширования жесткого диска» . Linux Journal . Проверено 2 декабря 2013 года .
  2. ^ «dm-cache: динамическое кэширование хранилища на уровне блоков» . visa.cs.fiu.edu . Архивировано из оригинала 18 июля 2014 года . Проверено 24 июля 2014 года .
  3. ^ Дулькардо Артеага; Дуглас Отстотт; Мин Чжао (16 мая 2012 г.). «Динамическое управление кешем на уровне блоков для облачных вычислительных систем» . visa.cs.fiu.edu . Архивировано из оригинального (PDF) 3 декабря 2013 года . Проверено 2 декабря 2013 года .
  4. ^ Дулькардо Артеага; Мин Чжао (21 июня 2014 г.). «Кэширование Flash на стороне клиента для облачных систем» . visa.cs.fiu.edu . ACM . Архивировано из оригинального (PDF) 6 сентября 2015 года . Проверено 31 августа 2015 года .
  5. ^ «Документация по Red Hat Enterprise Linux 6, приложение A. Устройство сопоставления устройств» . Красная шляпа . 8 октября 2014 . Проверено 23 декабря 2014 года .
  6. ^ Б с д е е г Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (20 июля 2015 г.). «Документация ядра Linux: Documentation / device-mapper / cache.txt» . kernel.org . Проверено 31 августа 2015 года .
  7. ^ a b c Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (29 июня 2015 г.). «Документация по ядру Linux: Documentation / device-mapper / cache-policies.txt» . kernel.org . Проверено 31 августа 2015 года .
  8. ^ Эрик Ван Хенсберген; Мин Чжао (28 ноября 2006 г.). «Кэширование диска с динамической политикой для сетей хранения данных» (PDF) . Отчет об исследованиях IBM. IBM . Проверено 2 декабря 2013 года .
  9. ^ «Ядро Linux 3.9, Раздел 1.3. Устройства кэширования SSD» . kernelnewbies.org . 28 апреля 2013 . Проверено 7 октября 2013 года .
  10. Джейк Эдж (1 мая 2013 г.). «LSFMM: Кеширование - dm-cache и bcache» . LWN.net . Проверено 7 октября 2013 года .
  11. Джо Торнбер (11 ноября 2013 г.). "Дерево исходных текстов ядра Linux: kernel / git / torvalds / linux.git: dm cache: add passthrough mode" . kernel.org . Проверено 6 февраля 2014 года .
  12. Джонатан Корбет (1 июля 2015 г.). «4.2 Окно слияния, часть 2» . LWN.net . Проверено 31 августа 2015 года .
  13. ^ 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 г. (рекомендации по определению размера устройства с метаданными)