Dispozitiv de cartografiere
Device Mapper ( dm ) este un subsistem ( modul ) al nucleului Linux care vă permite să creați dispozitive bloc virtuale (VBU-uri). La accesarea unor astfel de dispozitive, sunt efectuate o serie de acțiuni, care includ de obicei citirea/scrierea datelor de la alte dispozitive bloc (BU). Subsistemul este utilizat pentru implementarea managerului de volum logic LVM , RAID software , sistem de criptare a discului dm-crypt . Una dintre capacitățile subsistemului este crearea de instantanee ale sistemului de fișiere [1] .
Capacitățile dm sunt furnizate și de subsistemul kernel DragonFly BSD [2] cu același nume . Această pagină descrie implementarea dm pentru nucleul Linux.
Descriere
Aplicațiile (cum ar fi lvm, EVMS , ) care rulează în spațiul utilizatorului interacționează cu mdadmdm folosind . libdevmapper.soBiblioteca folosește un apel de sistem ioctl()pentru a accesa fișierul dispozitivului /dev/mapper/control[3] . La accesarea acestui dispozitiv, nucleul apelează subsistemul dm. Subsistemul dm operează în spațiul kernel, creând, modificând și ștergând dispozitive virtuale de bloc (VBU) la solicitările aplicației. Utilitarul dmsetupvă permite să controlați manual dm din terminal sau scripturi shell [4] [5] . Biblioteca libdevmapper.soși echipa dmsetupsunt întreținute de proiectul LVM [6] .
Aplicațiile client folosesc apeluri de sistem read()/ write()(prin biblioteci sau direct) pentru a citi/scrie date din VBU. Nucleul apelează apoi subsistemul dm. Subsistemul dm determină tipul de zonă umedă și selectează acțiunile adecvate.
Tipuri de dispozitive bloc virtuale [1] [4] :
- liniar ; cererile de citire și scriere către VBU sunt redirecționate către un alt VBU; una sau mai multe BU pot fi ascunse în spatele unei zone umede;
- dungi ; la scrierea datelor sunt împărțite în fragmente; fiecare fragment este înregistrat pe un BU separat; la citire, fragmentele sunt citite din mai multe CU-uri și combinate;
- oglinda ; „oglindă” (copie) a BU; la înregistrare, datele sunt stocate simultan pe două sau mai multe CU; la citire, datele sunt citite de la unitatea principală de control;
- instantaneu-origine ; primul „instantaneu” al BU; cererile de citire și scriere sunt deservite în același mod ca și pentru VBU-urile liniare;
- instantaneu ; a doua și următoarele „instantanee” ale BU; la scriere, datele sunt stocate pe un CU creat special pentru stocarea modificărilor; la citire, verifică modificările; dacă nu există modificări, datele sunt citite din „instantaneul” anterior; dacă există modificări, datele sunt citite din BU care stochează modificările;
- eroare ; la citire și scriere, se semnalează întotdeauna o eroare; VBU-urile de acest tip sunt utilizate pentru a testa stabilitatea software-ului la defecțiunile subsistemului de disc;
- întârziere ; analog al VBU liniară, dar citirea și scrierea sunt efectuate cu întârziere; Zonele umede de acest tip sunt folosite pentru testare;
- fulgi ; analog cu un VBU liniar, dar operațiunile de citire și scriere eșuează periodic; Zonele umede de acest tip sunt folosite pentru testare;
- zero ; echivalent cu /dev/zero ; octeții nuli sunt returnați la citire; nu se întâmplă nimic când scrii;
- cale multiplă ; la citire și scriere, interacțiunea cu același CU se realizează prin mai multe controlere pe rând; dacă unul dintre controlere eșuează, se folosesc controlerele rămase;
- cripta ; criptare on-the-fly; la scriere, datele sunt criptate, iar când sunt citite, sunt decriptate folosind API-ul cripto al nucleului Linux;
- cache ; stocarea temporară a datelor de la un VU pe altul (de exemplu, un SSD poate acționa ca cache HDD [7] ; un VU local poate stoca datele primite de la un VU montat în rețea [8] [9] );
- era [10] ; un analog al unui VBU de tip liniar, dar cu urmărirea blocurilor citite și scrise la un moment specificat;
- raid ; cererile către acest VBU sunt redirecționate către modulul Linux kernel md , care implementează software-ul RAID .
Aplicații
Capacitățile de cartografiere a dispozitivelor sunt utilizate în următoarele proiecte:
- LVM - Logical Volume Manager;
- en:dm-crypt - componentă kernel Linux pentru criptarea partițiilor;
- en:dm-cache - componentă kernel Linux pentru stocarea în cache a datelor;
- dm-verity - componentă Chrome OS pentru verificarea integrității sistemului de fișiere;
- dmraid - simulator RAID ;
- dm multipath este o componentă a nucleului Linux pentru a asigura toleranța la erori și distribuția încărcării pe CU;
- TrueCrypt (versiunea pentru sistemul de operare Linux) este un sistem de criptare a partițiilor;
- DRBD - dispozitiv de blocare a rețelei;
- kpartx este un utilitar numit de hotplug pentru crearea și ștergerea tabelelor de partiții VU;
- EVMS (depreciat);
- en:cryptoloop (depreciat);
- Docker este un program pentru virtualizarea proceselor la nivel de sistem de operare ; dm este utilizat atunci când rulează containere pentru a crea BU-uri de copiere la scriere.
Note
- ↑ 1 2 Administrarea LVM . Anexa A. Device mapper . Pălărie Roșie . Data accesului: 29 septembrie 2013. Arhivat din original pe 2 octombrie 2013. (nedefinit)
- ↑ dm(4) . Pagini de manual online DragonFly . dragonflybsd.org (28 iulie 2010). Data accesului: 6 iunie 2014. Arhivat din original pe 23 aprilie 2015. (nedefinit)
- ↑ libdevmapper.h . sourceware.org. Preluat: 29 septembrie 2013. (nedefinit) (link indisponibil)
- ↑ 1 2 dmsetup(8) - Pagina de manual Linux . om.cx Preluat la 22 octombrie 2013. Arhivat din original la 4 martie 2016. (nedefinit)
- ↑ Administrare LVM . Anexa A.2. comanda dmsetup . Pălărie Roșie . Data accesului: 29 septembrie 2013. Arhivat din original pe 2 octombrie 2013. (nedefinit)
- ↑ Pagina de resurse Device-mapper . sourceware.org. Consultat la 29 septembrie 2013. Arhivat din original pe 7 octombrie 2013. (nedefinit)
- ↑ Petros Koutoupis. Tehnici avansate de stocare în cache a hard diskului . Jurnal Linux ( 25 noiembrie 2013). Preluat la 2 decembrie 2013. Arhivat din original la 2 decembrie 2013. (nedefinit)
- ↑ dm-cache: stocare în cache dinamică la nivel de bloc (link în jos) . Universitatea internațională din Florida. Preluat la 24 iulie 2014. Arhivat din original la 18 iulie 2014. (nedefinit)
- ↑ Dulcardo Arteaga; Douglas Otstott; Ming Zhao. Gestionare dinamică a memoriei cache la nivel de bloc pentru sistemele cloud computing (pdf) (link indisponibil) . Universitatea internațională din Florida. Preluat la 2 decembrie 2013. Arhivat din original la 3 decembrie 2013. (nedefinit)
- ↑ 6. Stratul bloc . Nucleul Linux 3.15 . kernelnewbies.org (8 iunie 2014). Consultat la 15 iunie 2014. Arhivat din original pe 11 iunie 2018. (nedefinit)
Link -uri