Enhetsmappare

Enhetsmapparen är ett ramverk som tillhandahålls av Linux-kärnan för att mappa fysiska blockenheter till virtuella blockenheter högre nivå . Den utgör grunden för den logiska volymhanteraren (LVM), mjukvaru- RAID och dm-crypt- diskkryptering, och erbjuder ytterligare funktioner såsom ögonblicksbilder av filsystemet .

Enhetsmappare fungerar genom att överföra data från en virtuell blockenhet, som tillhandahålls av enhetsmapparen själv, till en annan blockenhet. Data kan också modifieras i övergång, vilket utförs till exempel i fallet med enhetsmappare som tillhandahåller diskkryptering eller simulering av opålitligt hårdvarubeteende.

Den här artikeln fokuserar på implementeringen av enhetsmapparen i Linux-kärnan, men enhetsmappningsfunktionen är också tillgänglig i både NetBSD och DragonFly BSD .

Användande

Applikationer (som LVM2 och Enterprise Volume Management System (EVMS)) som behöver skapa nya mappade enheter pratar med enhetsmapparen via det delade biblioteket libdevmapper.so , som i sin tur utfärdar ioctls till /dev/mapper/control enhetsnoden . Konfigurationen av enhetsmapparen kan också granskas och konfigureras interaktivt‍—‌eller från skalskript ‍—‌genom att använda verktyget dmsetup(8) .

Båda dessa två användarutrymmeskomponenter har sin källkod bibehållen tillsammans med LVM2-källan.

Funktioner

Positionen för enhetsmapparen är inriktad på olika lager av Linuxkärnans lagringsstack.

Funktioner som tillhandahålls av enhetsmapparen inkluderar linjär-, rand- och felmappningar, såväl som krypto- och flervägsmål . Till exempel kan två diskar sammanfogas till en logisk volym med ett par linjära mappningar, en för varje disk. Som ett annat exempel, crypt target data som passerar genom den angivna enheten, med hjälp av Linux-kärnans Crypto API .

Från och med 2014 finns följande kartläggningsmål tillgängliga:

  • cache – tillåter skapande av hybridvolymer genom att använda solid-state-enheter (SSD) som cacheminne för hårddiskar (HDD)
  • clone – tillåter användning innan en överföring är klar.
  • crypt – tillhandahåller datakryptering genom att använda Linux-kärnans Crypto API
  • fördröjning – fördröjer läsning och/eller skrivning till olika enheter (används för testning)
  • era – beter sig på ett sätt som liknar det linjära målet, samtidigt som det håller reda på block som skrevs till inom en användardefinierad tidsperiod
  • fel – simulerar I/O-fel för alla mappade block (används för testning)
  • flakey – simulerar periodiskt opålitligt beteende (används för testning)
  • linjär – mappar ett kontinuerligt område av block till en annan blockenhet
  • spegel – mappar en speglad logisk enhet samtidigt som den tillhandahåller dataredundans
  • multipath – stöder kartläggning av flervägsenheter , genom användning av deras sökvägsgrupper
  • raid – erbjuder ett gränssnitt till Linux-kärnans programvara RAID- drivrutin ( md )
  • snapshot och snapshot-origin – används för att skapa LVM-ögonblicksbilder, som en del av det underliggande kopiera-på-skriv-schemat
  • striped – randar data över fysiska enheter, med antalet stripes och striping chunk-storleken som parametrar
  • tunn – tillåter skapande av enheter som är större än den underliggande fysiska enheten, fysiskt utrymme tilldelas endast när det skrivs till
  • noll – en motsvarighet till /dev/zero , alla läsningar returnerar block med nollor och skrivningar kasseras

Ansökningar

Linux-kärnfunktioner och -projekt byggda ovanpå enhetsmapparen inkluderar följande:

  • cryptsetup – verktyg som används för att enkelt ställa in diskkryptering baserad på dm-crypt
  • dm-crypt / LUKS – kartläggningsmål som tillhandahåller volymkryptering
  • dm-cache – kartläggningsmål som tillåter skapande av hybridvolymer
  • dm-integrity – mappningsmål som tillhandahåller dataintegritet , antingen med hjälp av checksummning eller kryptografisk verifiering, används även med LUKS
  • dm-log-writes – mappningsmål som använder två enheter, passerar genom den första enheten och loggar skrivoperationerna som utförs till den på den andra enheten
  • dm-verity – validerar datablocken som finns i ett filsystem mot en lista med kryptografiska hashvärden, utvecklad som en del av ChromiumOS -projektet
  • dmraid(8) – ger tillgång till "falska" RAID- konfigurationer via enhetsmapparen
  • DM Multipath – ger I/O-failover och lastbalansering av blockenheter inom Linux-kärnan
  • Docker – använder enhetsmappare för att skapa kopiera-på-skriv-lagring för programvarubehållare
  • DRBD (Distribuerad replikerad blockenhet)
  • EVMS (utfasad)
  • kpartx(8) – verktyg som anropas från hotplug vid skapande och radering av enhetskartor
  • LVM2 logisk volymhanterare för Linux-kärnan
  • VeraCrypt - Linux-version av TrueCrypt
  • VDO - Virtual Data Optimizer

externa länkar