Enhedsmapper
Device Mapper ( dm ) er et undersystem ( modul ) af Linux-kernen , der giver dig mulighed for at oprette virtuelle blokenheder (VBU'er). Ved adgang til sådanne enheder udføres en række handlinger, som normalt omfatter læsning/skrivning af data fra andre blokenheder (BU). Undersystemet bruges til at implementere LVM logisk volumenhåndtering , software RAID , dm-crypt diskkrypteringssystem . En af undersystemets muligheder er oprettelsen af snapshots af filsystemet [1] .
dm-funktioner leveres også af DragonFly BSD [2] kerneundersystemet af samme navn . Denne side beskriver implementeringen af dm til Linux-kernen.
Beskrivelse
Programmer (såsom lvm, EVMS , mdadm), der kører i brugerrummet, interagerer med dm ved hjælp af libdevmapper.so . Biblioteket bruger et systemkald til ioctl()at få adgang til enhedsfilen /dev/mapper/control[3] . Når du får adgang til denne enhed, kalder kernen dm-undersystemet. dm-undersystemet opererer i kernerummet og opretter, ændrer og sletter virtuelle blokenheder (VBU'er) efter anmodning fra applikationer. Hjælpeprogrammet dmsetupgiver dig mulighed for at styre dm manuelt fra terminalen eller shell -scripts [4] [5] . Biblioteket libdevmapper.soog holdet dmsetupvedligeholdes af LVM -projektet [6] .
Klientapplikationer bruger systemkald read()/ write()(via biblioteker eller direkte) til at læse/skrive data fra VBU'en. Kernen kalder derefter dm-undersystemet. dm-delsystemet bestemmer typen af vådområde og vælger de passende handlinger.
Typer af virtuelle blokenheder [1] [4] :
- lineær ; anmodninger om læsning og skrivning til VBU omdirigeres til en anden VBU; en eller flere BU'er kan være skjult bag et vådområde;
- stribet ; når du skriver data er opdelt i fragmenter; hvert fragment er optaget på en separat BU; ved læsning læses fragmenter fra flere CU'er og kombineres;
- spejl ; "spejl" (kopi) af BU; ved optagelse lagres data samtidigt på to eller flere CU'er; ved læsning læses dataene fra hovedkontrolenheden;
- snapshot-oprindelse ; det første "snapshot" af BU'en; anmodninger om læsning og skrivning serveres på samme måde som for lineære VBU'er;
- øjebliksbillede ; det andet og efterfølgende "snapshots" af BU'en; ved skrivning lagres data på en CU, der er oprettet specifikt til lagring af ændringer; når den læser, tjekker den for ændringer; hvis der ikke er nogen ændringer, læses dataene fra det forrige "snapshot"; hvis der er ændringer, læses dataene fra den BU, der gemmer ændringerne;
- fejl ; ved læsning og skrivning rapporteres altid en fejl; VBU'er af denne type bruges til at teste softwarestabilitet for disksubsystemfejl;
- forsinkelse ; analog til lineær VBU, men læsning og skrivning udføres med en forsinkelse; Vådområder af denne type bruges til testning;
- flakey ; analogt med en lineær VBU, men læse- og skriveoperationer mislykkes periodisk; Vådområder af denne type bruges til testning;
- nul ; svarende til /dev/nul ; null bytes returneres ved læsning; der sker ikke noget, når man skriver;
- multipath ; ved læsning og skrivning udføres interaktion med den samme CU gennem flere controllere på skift; hvis en af controllerne svigter, bruges de resterende controllere;
- krypt ; on-the-fly kryptering; når du skriver, krypteres dataene, og når de læses, dekrypteres de ved hjælpaf Linux-kernens krypto-API ;
- cache ; midlertidig lagring af data fra en køretøjsenhed på en anden (for eksempel kan en SSD fungere som en HDD -cache [7] ; en lokal køretøjsenhed kan gemme data modtaget fra en netværksmonteret køretøjsenhed [8] [9] );
- æra [10] ; en analog af en VBU af den lineære type, men med sporing af blokke læst og skrevet på et bestemt tidspunkt;
- raid ; anmodninger til denne VBU omdirigeres til Linux-kernens md -modul, som implementerer software RAID .
Ansøgninger
Enhedskortlægningsfunktioner bruges i følgende projekter:
- LVM - Logical Volume Manager;
- en:dm-crypt - Linux-kernekomponent til kryptering af partitioner;
- en:dm-cache - Linux-kernekomponent til datacache;
- dm-verity - Chrome OS - komponent til kontrol af filsystemets integritet;
- dmraid - RAID simulator ;
- dm multipath er en komponent i Linux-kernen for at sikre fejltolerance og belastningsfordeling på CU'en;
- TrueCrypt (version til Linux OS) er et partitionskrypteringssystem;
- DRBD - netværksblokenhed;
- kpartx er et hjælpeprogram kaldet af hotplug til oprettelse og sletning af VU-partitionstabeller;
- EVMS (forældet);
- en:cryptoloop (forældet);
- Docker er et program til procesvirtualisering på OS-niveau ; dm bruges ved kørsel af containere til at oprette copy-on-write BU'er.
Noter
- ↑ 1 2 Administration af LVM . Appendiks A. Enhedskortlægning . Rød Hat . Dato for adgang: 29. september 2013. Arkiveret fra originalen 2. oktober 2013. (ubestemt)
- ↑ dm(4) . DragonFly online manualsider . dragonflybsd.org (28. juli 2010). Dato for adgang: 6. juni 2014. Arkiveret fra originalen 23. april 2015. (ubestemt)
- ↑ libdevmapper.h . sourceware.org. Hentet: 29. september 2013. (ubestemt) (ikke tilgængeligt link)
- ↑ 1 2 dmsetup(8) - Linux man page . mand.cx Hentet 22. oktober 2013. Arkiveret fra originalen 4. marts 2016. (ubestemt)
- ↑ LVM-administration . Bilag A.2. dmsetup kommando . Rød Hat . Dato for adgang: 29. september 2013. Arkiveret fra originalen 2. oktober 2013. (ubestemt)
- ↑ Device-mapper ressourceside . sourceware.org. Hentet 29. september 2013. Arkiveret fra originalen 7. oktober 2013. (ubestemt)
- ↑ Petros Koutoupis. Avancerede teknikker til cachelagring af harddiske . Linux-tidsskrift ( 25. november 2013). Hentet 2. december 2013. Arkiveret fra originalen 2. december 2013. (ubestemt)
- ↑ dm-cache: dynamisk blok-niveau lagercache (downlink) . Floridas internationale universitet. Hentet 24. juli 2014. Arkiveret fra originalen 18. juli 2014. (ubestemt)
- ↑ Dulcardo Arteaga; Douglas Ottott; Ming Zhao. Dynamisk cachestyring på blokniveau til cloud computing-systemer (pdf) (utilgængeligt link) . Floridas internationale universitet. Hentet 2. december 2013. Arkiveret fra originalen 3. december 2013. (ubestemt)
- ↑ 6. Bloklag . Linux-kerne 3.15 . kernelnewbies.org (8. juni 2014). Hentet 15. juni 2014. Arkiveret fra originalen 11. juni 2018. (ubestemt)
Links