stringtranslate.com

dm-кэш

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]

Внутри dm-cache ссылается на каждое из исходных устройств через ряд блоков фиксированного размера; размер этих блоков, равный размеру экстента кэширования , настраивается только при создании гибридного тома. Размер экстента кэширования должен находиться в диапазоне от 32  КБ до 1  ГБ и быть кратным 32 КБ; обычно размер экстента кэширования составляет от 256 до 1024 КБ. Выбор экстентов кэширования, превышающих размеры секторов диска, представляет собой компромисс между размером метаданных и возможностью бесполезной траты места в кэше. Слишком маленькие экстенты кэширования увеличивают размер метаданных как на устройстве метаданных, так и в памяти ядра, тогда как слишком большие экстенты кэширования увеличивают объем неиспользуемого кэш-пространства из-за кэширования целых экстентов даже в случае высоких показателей попадания только для некоторых из своих частей. [6] [10]

Режимы работы, поддерживаемые dm-cache, — это обратная запись , которая используется по умолчанию, сквозная запись и сквозная запись . В режиме обратной записи запись в кэшированные блоки осуществляется только на устройство кэширования, тогда как блоки на исходном устройстве помечаются как «грязные» в метаданных. В режиме сквозной записи запросы на запись не возвращаются как выполненные до тех пор, пока данные не достигнут как источника, так и устройства кэша, при этом чистые блоки не помечаются как грязные. В режиме сквозной работы все чтения выполняются непосредственно с исходного устройства, минуя кэш, а все записи идут непосредственно на исходное устройство; любые попадания в кэш также приводят к аннулированию кэшированных блоков. Режим сквозной передачи позволяет активировать гибридный том, когда состояние кэш-устройства не соответствует состоянию исходного устройства. [6] [11]

Скорость миграции данных, которую dm-cache выполняет в обоих направлениях (т. е. повышение и понижение уровня данных), может быть ограничена до настроенной скорости, чтобы можно было сохранить регулярный ввод-вывод на исходные и кэш-устройства. Вывод из эксплуатации гибридного тома или уменьшение размера кэш-устройства требует использования политики очистки , которая эффективно сбрасывает все блоки, помеченные в метаданных как «грязные», с кэш-устройства на исходное устройство. [6] [7]

Политики кэширования

По состоянию на август 2015 года и версии 4.2 ядра Linux [12] следующие три политики кэширования распространяются вместе с основной линией ядра Linux, из которых dm-cache по умолчанию использует политику стохастической многоочередности : [6] [7]

многоочередность (мк)
Политика многоочередности (mq) имеет три набора по 16 очередей , в которых первый набор используется для записей, ожидающих кэша, а остальные два набора для записей, уже находящихся в кэше, причем последние разделены, поэтому чистые и грязные записи принадлежат каждой из два набора. Возраст записей кэша в очередях зависит от связанного с ними логического времени. Выбор записей, попадающих в кэш (т. е. повышающихся), основан на переменных пороговых значениях, а выбор очереди основан на количестве попаданий записи. Целью этой политики является учет различных затрат на промахи в кэше и автоматическая корректировка различных шаблонов нагрузки.
Эта политика внутренне отслеживает последовательные операции ввода-вывода , чтобы их можно было маршрутизировать по кэшу, с различными настраиваемыми пороговыми значениями для различения случайных операций ввода-вывода и последовательных операций ввода-вывода. В результате исходному устройству приходится выполнять большие непрерывные операции ввода-вывода, поскольку такие шаблоны доступа к данным подходят для жестких дисков и позволяют избежать нежелательной аннулирования кэша.
стохастическая множественная очередь (smq)
Политика стохастической многоочередности (smq) работает аналогично политике многоочередности , но требует меньше ресурсов для работы; в частности, он использует существенно меньшие объемы оперативной памяти для отслеживания кэшированных блоков. Он также заменяет подсчет попаданий из политики нескольких очередей очередью «горячей точки» и принимает решения о повышении и понижении уровня данных на основе самого последнего использования (LRU). В результате эта политика обеспечивает более высокую производительность по сравнению с политикой нескольких очередей , лучше автоматически адаптируется к различным шаблонам нагрузки и исключает настройку различных пороговых значений.
очиститель
Политика очистки записывает обратно на исходное устройство все блоки, помеченные в метаданных как «грязные» . После завершения этой операции гибридный том можно вывести из эксплуатации или уменьшить размер кэш-устройства.

Использование с LVM

В состав диспетчера логических томов входит lvmcache, который предоставляет оболочку для dm-cacheинтеграции с LVM. [13]

Смотрите также

Рекомендации

  1. Петрос Кутупис (25 ноября 2013 г.). «Продвинутые методы кэширования жесткого диска». Linux-журнал . Проверено 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 г.). «Клиентское флэш-кэширование для облачных систем». Visa.cs.fiu.edu . АКМ . Архивировано из оригинала (PDF) 6 сентября 2015 года . Проверено 31 августа 2015 г.
  5. ^ «Документация Red Hat Enterprise Linux 6, Приложение A. Устройство сопоставления устройств» . Красная Шапка . 8 октября 2014 года . Проверено 23 декабря 2014 г.
  6. ^ abcdefg Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (20 июля 2015 г.). «Документация по ядру Linux: Documentation/device-mapper/cache.txt». ядро.орг . Проверено 31 августа 2015 г.
  7. ^ abc Джо Торнбер; Хайнц Мауэльсхаген; Майк Снитцер (29 июня 2015 г.). «Документация по ядру Linux: Documentation/device-mapper/cache-policies.txt». ядро.орг . Проверено 31 августа 2015 г.
  8. ^ Эрик Ван Хенсберген; Мин Чжао (28 ноября 2006 г.). «Динамическая политика кэширования диска для сетей хранения данных» (PDF) . Отчет об исследовании 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: добавить сквозной режим». ядро.орг . Проверено 6 февраля 2014 г.
  12. Джонатан Корбет (1 июля 2015 г.). «4.2 Объединить окно, часть 2». LWN.net . Проверено 31 августа 2015 г.
  13. ^ Red Hat, Inc. «lvmcache — кэширование LVM». Страницы руководства Debian. Кэш горячей точки для чтения и записи с использованием модуля ядра dm-cache.

Внешние ссылки