Device mapper

Поделись знанием:
Перейти к: навигация, поиск

Device mapper (dm) — подсистема (модуль) ядра Linux, позволяющая создавать виртуальные блочные устройства (ВБУ). При обращении к таким устройствам выполняется ряд действий, в число которых обычно входит чтение/запись данных с других блочных устройств (БУ). Подсистема используется для реализации менеджера логических томов LVM, программного RAID, системы шифрования дисков dm-crypt. Одной из возможностей подсистемы является создание снимков файловой системы[1].

Возможности dm также предоставляются одноимённой подсистемой ядра ОС DragonFly BSD[2]. На этой странице описана реализация dm для ядра Linux.





Описание

Приложения (такие как lvm, EVMS, mdadm), работающие в пространстве пользователя, взаимодействуют с dm с помощью библиотеки libdevmapper.so. Библиотека использует системный вызов ioctl() для обращения к файлу устройства /dev/mapper/control[3]. При обращении к этому устройству ядро вызывает подсистему dm. Подсистема dm работает в пространстве ядра, создаёт, изменяет и удаляет виртуальные блочные устройства (ВБУ) по запросам приложений. Утилита dmsetup позволяет управлять dm вручную из терминала или сценариев shell[4][5]. Библиотека libdevmapper.so и команда dmsetup поддерживаются силами проекта LVM[6].

Клиентские приложения используют системные вызовы read()/write() (через библиотеки или напрямую) для чтения/записи данных с ВБУ. При этом ядро вызывает подсистему dm. Подсистема dm определяет тип ВБУ и выбирает соответствующие действия.

Типы виртуальных блочных устройств[1][4]:

  • linear; запросы на чтение и запись к ВБУ перенаправляются к другому БУ; за одним ВБУ может скрываться одно или более БУ;
  • striped; при записи данные делятся на фрагменты; каждый фрагмент записывается на отдельное БУ; при чтении фрагменты считываются с нескольких БУ и объединяются;
  • mirror; «зеркало» (копия) БУ; при записи данные сохраняются одновременно на два или более БУ; при чтении данные считываются с главного БУ;
  • snapshot-origin; первый «снимок» БУ; запросы на чтение и запись обслуживаются также, как для ВБУ типа linear;
  • snapshot; второй и последующие «снимки» БУ; при записи данные сохраняются на БУ, созданное специально для хранения изменений; при чтении проверяется наличие изменений; если изменений нет, данные читаются из предыдущего «снимка»; если изменения имеются, данные считываются с БУ, хранящего изменения;
  • error; при чтении и записи всегда сообщается о ошибке; ВБУ такого типа используются для тестирования устойчивости ПО к сбоям дисковой подсистемы;
  • delay; аналог ВБУ типа linear, но чтение и запись выполняются с задержкой; ВБУ такого типа используются для тестирования;
  • flakey; аналог ВБУ типа linear, но операции чтения и записи периодически завершаются с ошибкой; ВБУ такого типа используются для тестирования;
  • zero; аналог устройства /dev/zero; при чтении возвращаются нулевые байты; при записи ничего не происходит;
  • multipath; при чтении и записи взаимодействие с одним и тем же БУ осуществляется посредством нескольких контроллеров по очереди; при поломке одного из контроллеров, используются оставшиеся контроллеры;
  • crypt; шифрование «на лету»; при записи данные шифруются, а при чтении расшифровываются с помощью crypto API ядра Linux;
  • cache; временное хранение данных одного БУ на другом (например, SSD может выступать в роли кеша HDD[7]; локальное БУ может хранить данные, полученные с монтированного по сети БУ[8][9]);
  • era[10]; аналог ВБУ типа linear, но с отслеживанием блоков, читаемых и записываемых в указанное время;
  • raid; запросы к этому ВБУ перенаправляются модулю md ядра Linux, реализующему программный RAID.

Применения

Возможности device mapper используются в следующих проектах:

  • LVM — менеджер логических томов;
  • en:dm-crypt — компонент ядра Linux для шифрования разделов;
  • en:dm-cache — компонент ядра Linux для кеширования данных;
  • [code.google.com/p/cryptsetup/wiki/DMVerity dm-verity] — компонент Chrome OS для проверки целостности файловой системы;
  • [man.cx/?page=dmraid dmraid] — симулятор RAID;
  • dm multipath — компонент ядра Linux для обеспечения отказоустойчивости и распределения нагрузки на БУ;
  • TrueCrypt (версия для ОС Linux) — система для шифрования разделов;
  • DRBD — сетевое блочное устройство;
  • [man.cx/?page=kpartx kpartx] — утилита, вызываемая hotplug, для создания и удаления таблиц разделов БУ;
  • EVMS (deprecated);
  • en:cryptoloop (deprecated);
  • Docker — программа для виртуализации процессов на уровне ОС; dm используется при запуске контейнеров для создания БУ copy-on-write.

Напишите отзыв о статье "Device mapper"

Примечания

  1. 1 2 [access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/device_mapper.html Администрирование LVM]. Приложение A. Device mapper. Red Hat. Проверено 29 сентября 2013.
  2. [leaf.dragonflybsd.org/cgi/web-man?command=dm&section=4 dm(4)]. DragonFly on-line manual pages. dragonflybsd.org (28 июля 2010). Проверено 6 июня 2014.
  3. [www.sourceware.org/cgi-bin/cvsweb.cgi/~checkout~/LVM2/libdm/libdevmapper.h?content-type=text/plain&cvsroot=lvm2 libdevmapper.h]. sourceware.org. Проверено 29 сентября 2013.
  4. 1 2 [man.cx/?page=dmsetup%288%29 dmsetup(8) - Linux man page]. man.cx. Проверено 22 октября 2013.
  5. [access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/dmsetup.html Администрирование LVM]. Приложение A.2. Команда dmsetup. Red Hat. Проверено 29 сентября 2013.
  6. [www.sourceware.org/dm/ Device-mapper resource page]. sourceware.org. Проверено 29 сентября 2013.
  7. Petros Koutoupis. [www.linuxjournal.com/content/advanced-hard-drive-caching-techniques Advanced hard drive caching techniques]. Журнал «Linux journal» (25 ноября 2013). Проверено 2 декабря 2013.
  8. [visa.cs.fiu.edu/tiki/dm-cache dm-cache: dynamic block-level storage caching]. Florida international university. Проверено 24 июля 2014.
  9. [visa.cis.fiu.edu/tiki/tiki-download_file.php?fileId=71h Dynamic block-level cache management for cloud computing systems] (pdf). Florida international university. Проверено 2 декабря 2013.
  10. [kernelnewbies.org/Linux_3.15#head-33ab227d4984f4be9fa92f9163e403744e2a8f66 6. Block layer]. Linux kernel 3.15. kernelnewbies.org (8 июня 2014). Проверено 15 июня 2014.

Ссылки

  • [sources.redhat.com/dm/ Device mapper] на сайте Red Hat
  • [linuxgazette.net/114/kapil.html Right to your own devices]. Журнал «Linux gazette» (Май 2005). Статья описывает применение разных типов виртуальных блочных устройств
  • [people.redhat.com/~heinzm/sw/dmraid/readme DmRaid] — инструмент для симуляции программного RAID
  • [lwn.net/Articles/124703/ Статья] LWN о поддержке multipath подсистемой device mapper  (англ.)

Отрывок, характеризующий Device mapper

В ту минуту, как он входил, он увидал, что нянька с испуганным видом спрятала что то от него, и что княжны Марьи уже не было у кроватки.
– Мой друг, – послышался ему сзади отчаянный, как ему показалось, шопот княжны Марьи. Как это часто бывает после долгой бессонницы и долгого волнения, на него нашел беспричинный страх: ему пришло в голову, что ребенок умер. Всё, что oн видел и слышал, казалось ему подтверждением его страха.
«Всё кончено», подумал он, и холодный пот выступил у него на лбу! Он растерянно подошел к кроватке, уверенный, что он найдет ее пустою, что нянька прятала мертвого ребенка. Он раскрыл занавески, и долго его испуганные, разбегавшиеся глаза не могли отыскать ребенка. Наконец он увидал его: румяный мальчик, раскидавшись, лежал поперек кроватки, спустив голову ниже подушки и во сне чмокал, перебирая губками, и ровно дышал.
Князь Андрей обрадовался, увидав мальчика так, как будто бы он уже потерял его. Он нагнулся и, как учила его сестра, губами попробовал, есть ли жар у ребенка. Нежный лоб был влажен, он дотронулся рукой до головы – даже волосы были мокры: так сильно вспотел ребенок. Не только он не умер, но теперь очевидно было, что кризис совершился и что он выздоровел. Князю Андрею хотелось схватить, смять, прижать к своей груди это маленькое, беспомощное существо; он не смел этого сделать. Он стоял над ним, оглядывая его голову, ручки, ножки, определявшиеся под одеялом. Шорох послышался подле него, и какая то тень показалась ему под пологом кроватки. Он не оглядывался и всё слушал, глядя в лицо ребенка, его ровное дыханье. Темная тень была княжна Марья, которая неслышными шагами подошла к кроватке, подняла полог и опустила его за собою. Князь Андрей, не оглядываясь, узнал ее и протянул к ней руку. Она сжала его руку.
– Он вспотел, – сказал князь Андрей.
– Я шла к тебе, чтобы сказать это.
Ребенок во сне чуть пошевелился, улыбнулся и потерся лбом о подушку.
Князь Андрей посмотрел на сестру. Лучистые глаза княжны Марьи, в матовом полусвете полога, блестели более обыкновенного от счастливых слёз, которые стояли в них. Княжна Марья потянулась к брату и поцеловала его, слегка зацепив за полог кроватки. Они погрозили друг другу, еще постояли в матовом свете полога, как бы не желая расстаться с этим миром, в котором они втроем были отделены от всего света. Князь Андрей первый, путая волосы о кисею полога, отошел от кроватки. – Да. это одно что осталось мне теперь, – сказал он со вздохом.


Вскоре после своего приема в братство масонов, Пьер с полным написанным им для себя руководством о том, что он должен был делать в своих имениях, уехал в Киевскую губернию, где находилась большая часть его крестьян.
Приехав в Киев, Пьер вызвал в главную контору всех управляющих, и объяснил им свои намерения и желания. Он сказал им, что немедленно будут приняты меры для совершенного освобождения крестьян от крепостной зависимости, что до тех пор крестьяне не должны быть отягчаемы работой, что женщины с детьми не должны посылаться на работы, что крестьянам должна быть оказываема помощь, что наказания должны быть употребляемы увещательные, а не телесные, что в каждом имении должны быть учреждены больницы, приюты и школы. Некоторые управляющие (тут были и полуграмотные экономы) слушали испуганно, предполагая смысл речи в том, что молодой граф недоволен их управлением и утайкой денег; другие, после первого страха, находили забавным шепелявенье Пьера и новые, неслыханные ими слова; третьи находили просто удовольствие послушать, как говорит барин; четвертые, самые умные, в том числе и главноуправляющий, поняли из этой речи то, каким образом надо обходиться с барином для достижения своих целей.
Главноуправляющий выразил большое сочувствие намерениям Пьера; но заметил, что кроме этих преобразований необходимо было вообще заняться делами, которые были в дурном состоянии.
Несмотря на огромное богатство графа Безухого, с тех пор, как Пьер получил его и получал, как говорили, 500 тысяч годового дохода, он чувствовал себя гораздо менее богатым, чем когда он получал свои 10 ть тысяч от покойного графа. В общих чертах он смутно чувствовал следующий бюджет. В Совет платилось около 80 ти тысяч по всем имениям; около 30 ти тысяч стоило содержание подмосковной, московского дома и княжон; около 15 ти тысяч выходило на пенсии, столько же на богоугодные заведения; графине на прожитье посылалось 150 тысяч; процентов платилось за долги около 70 ти тысяч; постройка начатой церкви стоила эти два года около 10 ти тысяч; остальное около 100 та тысяч расходилось – он сам не знал как, и почти каждый год он принужден был занимать. Кроме того каждый год главноуправляющий писал то о пожарах, то о неурожаях, то о необходимости перестроек фабрик и заводов. И так, первое дело, представившееся Пьеру, было то, к которому он менее всего имел способности и склонности – занятие делами.
Пьер с главноуправляющим каждый день занимался . Но он чувствовал, что занятия его ни на шаг не подвигали дела. Он чувствовал, что его занятия происходят независимо от дела, что они не цепляют за дело и не заставляют его двигаться. С одной стороны главноуправляющий выставлял дела в самом дурном свете, показывая Пьеру необходимость уплачивать долги и предпринимать новые работы силами крепостных мужиков, на что Пьер не соглашался; с другой стороны, Пьер требовал приступления к делу освобождения, на что управляющий выставлял необходимость прежде уплатить долг Опекунского совета, и потому невозможность быстрого исполнения.
Управляющий не говорил, что это совершенно невозможно; он предлагал для достижения этой цели продажу лесов Костромской губернии, продажу земель низовых и крымского именья. Но все эти операции в речах управляющего связывались с такою сложностью процессов, снятия запрещений, истребований, разрешений и т. п., что Пьер терялся и только говорил ему:
– Да, да, так и сделайте.
Пьер не имел той практической цепкости, которая бы дала ему возможность непосредственно взяться за дело, и потому он не любил его и только старался притвориться перед управляющим, что он занят делом. Управляющий же старался притвориться перед графом, что он считает эти занятия весьма полезными для хозяина и для себя стеснительными.