Mapovač zařízení
Device mapper ( dm ) je subsystém ( modul ) linuxového jádra , který umožňuje vytvářet virtuální bloková zařízení (VBU). Při přístupu k takovým zařízením se provádí řada akcí, které obvykle zahrnují čtení / zápis dat z jiných blokových zařízení (BU). Subsystém se používá k implementaci správce logických svazků LVM , softwarového pole RAID , systému šifrování disku dm-crypt . Jednou z možností subsystému je vytváření snímků souborového systému [1] .
Schopnosti dm poskytuje také stejnojmenný kernel subsystém DragonFly BSD [2 ] . Tato stránka popisuje implementaci dm pro linuxové jádro.
Popis
Aplikace (jako je lvm, EVMS , mdadm), které běží v uživatelském prostoru, komunikují s dm pomocí libdevmapper.so . Knihovna používá systémové volání ioctl()pro přístup k souboru zařízení /dev/mapper/control[3] . Při přístupu k tomuto zařízení jádro zavolá subsystém dm. Subsystém dm pracuje v prostoru jádra a vytváří, upravuje a odstraňuje virtuální bloková zařízení (VBU) na základě požadavků aplikace. Utilita dmsetupumožňuje ovládat dm ručně z terminálu nebo shell skriptů [4] [5] . Knihovnu libdevmapper.soa tým dmsetupspravuje projekt LVM [6] .
Klientské aplikace používají systémová volání read()/ write()(prostřednictvím knihoven nebo přímo) ke čtení/zápisu dat z VBU. Jádro pak zavolá subsystém dm. Subsystém dm určuje typ mokřadu a vybírá vhodné akce.
Typy virtuálních blokových zařízení [1] [4] :
- lineární ; požadavky na čtení a zápis do VBU jsou přesměrovány na jinou VBU; za jedním mokřadem může být skryta jedna nebo více BU;
- pruhovaný ; při zápisu jsou data rozdělena na fragmenty; každý fragment je zaznamenán na samostatné BU; při čtení jsou čteny fragmenty z několika CU a kombinovány;
- zrcadlo ; "zrcadlo" (kopie) BU; při záznamu se data ukládají současně na dvě nebo více CU; při čtení jsou data čtena z hlavní řídicí jednotky;
- snímek-původ ; první "snímek" BU; požadavky na čtení a zápis jsou obsluhovány stejným způsobem jako u lineárních VBU;
- snímek ; druhý a další „snímky“ BU; při zápisu se data ukládají na CU vytvořenou speciálně pro ukládání změn; při čtení kontroluje změny; pokud nedojde k žádným změnám, načtou se data z předchozího "snímku"; pokud dojde ke změnám, data se načtou z BU, která změny ukládá;
- chyba ; při čtení a zápisu je vždy hlášena chyba; VBU tohoto typu se používají k testování stability softwaru při selhání diskového subsystému;
- zpoždění ; analog lineárního VBU, ale čtení a zápis se provádí se zpožděním; Mokřady tohoto typu se používají pro testování;
- vločka ; analogický lineární VBU, ale operace čtení a zápisu periodicky selhávají; Mokřady tohoto typu se používají pro testování;
- nula ; ekvivalentní k /dev/zero ; při čtení jsou vráceny prázdné bajty; při psaní se nic neděje;
- vícecestný ; při čtení a zápisu probíhá interakce se stejnou CU postupně prostřednictvím několika ovladačů; pokud jeden z ovladačů selže, použijí se zbývající ovladače;
- krypta ; on-the-fly šifrování; při zápisu jsou data šifrována a při čtení dešifrována pomocí krypto API jádra Linuxu;
- cache ; dočasné uložení dat z jednoho VU na jiném (například SSD může fungovat jako mezipaměť HDD [7] ; místní VU může ukládat data přijatá z VU nainstalovaného v síti [8] [9] );
- éra [10] ; analog VBU lineárního typu, ale se sledováním bloků přečtených a zapsaných v určeném čase;
- nájezd ; požadavky na tuto VBU jsou přesměrovány na modul linuxového jádra md , který implementuje softwarový RAID .
Aplikace
Možnosti mapování zařízení se používají v následujících projektech:
- LVM - Logical Volume Manager;
- cs:dm-crypt - komponenta linuxového jádra pro šifrování oddílů;
- cs:dm-cache - komponenta linuxového jádra pro ukládání dat do mezipaměti;
- dm-verity - součást systému Chrome OS pro kontrolu integrity systému souborů;
- dmraid - simulátor RAID ;
- dm multipath je součástí linuxového jádra, která zajišťuje odolnost proti chybám a rozložení zátěže na CU;
- TrueCrypt (verze pro OS Linux) je systém šifrování oddílů;
- DRBD - síťové blokové zařízení;
- kpartx je nástroj nazvaný hotplug pro vytváření a mazání tabulek oddílů VU;
- EVMS (zastaralé);
- en:cryptoloop (zastaralé);
- Docker je program pro virtualizaci procesů na úrovni OS ; dm se používá při spouštění kontejnerů k vytváření BU typu copy-on-write.
Poznámky
- ↑ 1 2 Správa LVM . Dodatek A. Mapovač zařízení . Červený klobouk . Datum přístupu: 29. září 2013. Archivováno z originálu 2. října 2013. (neurčitý)
- ↑ dm(4) . DragonFly online manuálové stránky . dragonflybsd.org (28. července 2010). Datum přístupu: 6. června 2014. Archivováno z originálu 23. dubna 2015. (neurčitý)
- ↑ libdevmapper.h . sourceware.org. Staženo: 29. září 2013. (neurčitý) (nedostupný odkaz)
- ↑ 1 2 dmsetup(8) – manuálová stránka Linuxu . man.cx Získáno 22. října 2013. Archivováno z originálu dne 4. března 2016. (neurčitý)
- ↑ Správa LVM . Příloha A.2. příkaz dmsetup . Červený klobouk . Datum přístupu: 29. září 2013. Archivováno z originálu 2. října 2013. (neurčitý)
- ↑ Stránka zdrojů mapovače zařízení . sourceware.org. Získáno 29. září 2013. Archivováno z originálu 7. října 2013. (neurčitý)
- ↑ Petros Koutoupis. Pokročilé techniky ukládání do mezipaměti pevného disku . Linux journal ( 25. listopadu 2013). Získáno 2. prosince 2013. Archivováno z originálu 2. prosince 2013. (neurčitý)
- ↑ dm-cache: dynamické ukládání do mezipaměti na úrovni bloku (downlink) . Floridská mezinárodní univerzita. Získáno 24. července 2014. Archivováno z originálu 18. července 2014. (neurčitý)
- ↑ Dulcardo Arteaga; Douglas Otstott; Ming Zhao. Dynamická správa mezipaměti na úrovni bloků pro systémy cloud computingu (pdf) (nedostupný odkaz) . Floridská mezinárodní univerzita. Získáno 2. prosince 2013. Archivováno z originálu dne 3. prosince 2013. (neurčitý)
- ↑ 6. Bloková vrstva . Linuxové jádro 3.15 . kernelnewbies.org (8. června 2014). Získáno 15. června 2014. Archivováno z originálu 11. června 2018. (neurčitý)
Odkazy