Enhetsmappare
Device Mapper ( dm ) är ett undersystem ( modul ) av Linux-kärnan som låter dig skapa virtuella blockenheter (VBUs). Vid åtkomst till sådana enheter utförs ett antal åtgärder, som vanligtvis inkluderar att läsa/skriva data från andra blockenheter (BU). Delsystemet används för att implementera LVM logisk volymhanterare , programvara RAID , dm-crypt diskkrypteringssystem . En av undersystemets möjligheter är att skapa ögonblicksbilder av filsystemet [1] .
dm-funktioner tillhandahålls också av DragonFly BSD [2] kärndelsystem med samma namn . Den här sidan beskriver implementeringen av dm för Linux-kärnan.
Beskrivning
Applikationer (som lvm, EVMS , mdadm) som körs i användarutrymmet interagerar med dm med hjälp av libdevmapper.so . Biblioteket använder ett systemanrop för ioctl()att komma åt enhetsfilen /dev/mapper/control[3] . När du kommer åt den här enheten anropar kärnan dm-undersystemet. dm-undersystemet arbetar i kärnutrymmet och skapar, modifierar och tar bort virtuella blockenheter (VBUs) på applikationsbegäranden. Verktyget dmsetuplåter dig styra dm manuellt från terminalen eller skalskripten [4] [5] . Biblioteket libdevmapper.sooch teamet dmsetupunderhålls av LVM- projektet [6] .
Klientapplikationer använder systemanrop read()/ write()(via bibliotek eller direkt) för att läsa/skriva data från VBU. Kärnan anropar sedan dm-delsystemet. Delsystemet dm bestämmer typen av våtmark och väljer lämpliga åtgärder.
Typer av virtuella blockenheter [1] [4] :
- linjär ; förfrågningar om läsning och skrivning till VBU omdirigeras till en annan VBU; en eller flera BU:ar kan döljas bakom en våtmark;
- randig ; när du skriver data är uppdelad i fragment; varje fragment registreras på en separat BU; vid läsning läses fragment från flera CU och kombineras;
- spegel ; "spegel" (kopia) av BU; vid inspelning lagras data samtidigt på två eller flera CUs; vid läsning läses data från huvudstyrenheten;
- snapshot-origin ; den första "ögonblicksbilden" av BU; förfrågningar om läsning och skrivning betjänas på samma sätt som för linjära VBU;
- ögonblicksbild ; den andra och efterföljande "snapshots" av BU; vid skrivning lagras data på en CU skapad specifikt för att lagra ändringar; när den läser letar den efter ändringar; om det inte finns några ändringar läses data från föregående "snapshot"; om det finns ändringar läses data från BU:n som lagrar ändringarna;
- fel ; vid läsning och skrivning rapporteras alltid ett fel; VBU:er av denna typ används för att testa mjukvarans stabilitet för disksubsystemfel;
- fördröjning ; analog till linjär VBU, men läsning och skrivning utförs med en fördröjning; Våtmarker av denna typ används för testning;
- flakey ; analogt med en linjär VBU, men läs- och skrivoperationer misslyckas periodvis; Våtmarker av denna typ används för testning;
- noll ; ekvivalent med /dev/zero ; null byte returneras vid läsning; ingenting händer när man skriver;
- flervägs ; vid läsning och skrivning sker interaktion med samma CU genom flera kontroller i tur och ordning; om en av kontrollerna misslyckas, används de återstående kontrollerna;
- krypta ; on-the-fly kryptering; vid skrivning krypteras data, och när den läses dekrypteras den med hjälpav Linux-kärnans krypto-API ;
- cache ; tillfällig lagring av data från en fordonsenhet på en annan (till exempel kan en SSD fungera som en hårddisk- cache [7] ; en lokal fordonsenhet kan lagra data som tas emot från en nätverksmonterad fordonsenhet [8] [9] );
- era [10] ; en analog till en VBU av linjär typ, men med spårning av block som läses och skrivs vid en specificerad tidpunkt;
- raid ; förfrågningar till denna VBU omdirigeras till Linux-kärnan md -modulen, som implementerar programvara RAID .
Applikationer
Enhetsmappningsfunktioner används i följande projekt:
- LVM - Logical Volume Manager;
- en:dm-crypt - Linux-kärnkomponent för kryptering av partitioner;
- sv:dm-cache - Linux-kärnkomponent för datacache;
- dm-verity - Chrome OS - komponent för att kontrollera filsystemets integritet;
- dmraid- RAID - simulator ;
- dm multipath är en komponent i Linux-kärnan för att säkerställa feltolerans och belastningsfördelning på CU;
- TrueCrypt (version för Linux OS) är ett partitionskrypteringssystem;
- DRBD - nätverksblockenhet;
- kpartx är ett verktyg som anropas av hotplug för att skapa och ta bort VU-partitionstabeller;
- EVMS (utfasad);
- en:cryptoloop (utfasad);
- Docker är ett program för processvirtualisering på OS-nivå ; dm används när behållare körs för att skapa kopiera-på-skriv-BU:er.
Anteckningar
- ↑ 1 2 Administrera LVM . Bilaga A. Enhetsmappare . Red Hat . Datum för åtkomst: 29 september 2013. Arkiverad från originalet den 2 oktober 2013. (obestämd)
- ↑ dm(4) . DragonFly on-line manualsidor . dragonflybsd.org (28 juli 2010). Datum för åtkomst: 6 juni 2014. Arkiverad från originalet 23 april 2015. (obestämd)
- ↑ libdevmapper.h . sourceware.org. Hämtad: 29 september 2013. (obestämd) (inte tillgänglig länk)
- ↑ 1 2 dmsetup(8) - Linuxmanpage . man.cx Hämtad 22 oktober 2013. Arkiverad från originalet 4 mars 2016. (obestämd)
- ↑ LVM-administration . Bilaga A.2. kommandot dmsetup . Red Hat . Datum för åtkomst: 29 september 2013. Arkiverad från originalet den 2 oktober 2013. (obestämd)
- ↑ Resurssida för enhetskartläggning . sourceware.org. Hämtad 29 september 2013. Arkiverad från originalet 7 oktober 2013. (obestämd)
- ↑ Petros Koutoupis. Avancerade tekniker för cachelagring av hårddiskar . Linux journal ( 25 november 2013). Hämtad 2 december 2013. Arkiverad från originalet 2 december 2013. (obestämd)
- ↑ dm-cache: dynamisk lagringscache på blocknivå (nedlänk) . Floridas internationella universitet. Hämtad 24 juli 2014. Arkiverad från originalet 18 juli 2014. (obestämd)
- ↑ Dulcardo Arteaga; Douglas Ottott; Ming Zhao. Dynamisk cachehantering på blocknivå för cloud computing-system (pdf) (inte tillgänglig länk) . Floridas internationella universitet. Hämtad 2 december 2013. Arkiverad från originalet 3 december 2013. (obestämd)
- ↑ 6. Blocklager . Linuxkärna 3.15 . kernelnewbies.org (8 juni 2014). Hämtad 15 juni 2014. Arkiverad från originalet 11 juni 2018. (obestämd)
Länkar