Mappatore dispositivo

Il device mapper fa parte del kernel Linux (dal 2.6). Consente la creazione di dispositivi virtuali orientati ai blocchi mappando il loro intervallo di indirizzi ad altri dispositivi orientati ai blocchi o funzioni speciali. Il Device Mapper viene utilizzato principalmente per il Logical Volume Manager (LVM) e la crittografia del dispositivo . Il Device Mapper fornisce alcune funzioni di cui LVM necessita (e che erano parte integrante di LVM nelle precedenti versioni di Linux): creazione e gestione dei dispositivi orientati ai blocchi, istantanee (inclusa la riscrittura delle modifiche sul dispositivo originale ("unione")) e varie Funzioni RAID (in particolare striping (livello 0) e mirroring (livello 1)). Grazie alla separazione da LVM, queste funzioni possono ora essere utilizzate anche con altri dispositivi orientati ai blocchi (ad esempio dischi rigidi (partizioni) e dispositivi loop ). LVM e cryptsetup (LUKS) rendono disponibili funzioni di livello superiore e quindi proteggono l'utente dai dettagli richiesti per l'uso diretto del device mapper (dmsetup). I dispositivi del dispositivo mappatore possono essere bloccati durante il funzionamento (file system scrivibile e montato) e in gran parte riconfigurati. Dalla versione 3.2 del kernel, il device mapper supporta anche il thin provisioning . Simile a LVM, anche la funzione multipath è basata sul device mapper.

Struttura dei dispositivi del dispositivo mappatore

I dispositivi vengono creati con l'aiuto del device mapper passando i seguenti dati al programma della console dmsetup oltre al nome del dispositivo:

  1. Settore di partenza
  2. Numero di settori consecutivi con lo stesso obiettivo
  3. Tipo di target (target)
  4. argomenti specifici del target

La definizione di un dispositivo può essere costituita da uno o più di tali blocchi. Con la seguente configurazione, è possibile collegare due dischi rigidi (100 GiB ciascuno) a una singola unità logica:

0 209715200 lineare / dev / sdb 0
209715200 209715200 lineare / dev / sdc 0

I dispositivi creati dal device mapper vengono visualizzati in / dev / mapper / con il nome trasferito a dmsetup e in / sys / block / con il nome del kernel (dm-0, dm-1, ...).

L'interazione della manipolazione dei dispositivi DM con udev può essere controllata tramite dmsetup . Informazioni sul daemon dmeventd potrebbe anche rispondere a eventi che interessano i dispositivi DM (in procinto di esaurire lo spazio continuo con il thin provisioning).

Connessione tra Device Mapper e LVM

LVM dice al device mapper quali blocchi su un dispositivo appartengono a un'unità logica in quale ordine. Dopo aver creato il dispositivo, non è più riconoscibile che si tratti di un dispositivo LVM; potresti anche fare questo incarico da solo. Due unità generate una dopo l'altra tramite LVM vengono visualizzate nel Device Mapper come segue:

  1. 0 25165824 lineare 8: 8 384
  2. 0 204800 lineare 8: 8 29360512

8: 8 sono numeri maggiori e minori per / dev / sda8, il secondo numero specifica la dimensione, l'ultimo l'offset al settore iniziale della partizione (non 0 a causa dei metadati LVM).

Creazione di istantanee

Questa sezione si riferisce agli snapshot di volumi che non fanno parte di un volume thin-pool, ovvero il vecchio metodo. Le istantanee vengono create principalmente utilizzando LVM. I programmi LVM quindi visualizzano solo due oggetti: l'unità originale e l'unità snapshot. Inoltre, attualmente esiste la restrizione secondo cui LVM può creare unità snapshot solo nello stesso gruppo di volumi dell'unità originale. Questa è una limitazione del programma di amministrazione ( lvcreate ), non una limitazione del mappatore del dispositivo. Dal suo punto di vista, non ci sono due, ma quattro dispositivi (snapshot del test del volume logico (LV) nel gruppo di volumi (VG) vg0 , il nome dello snapshot LV è test-snap ):

  1. vg0-test
  2. vg0-test-real
  3. vg0-test - snap
  4. vg0-test - snap-cow

Il dispositivo originale vg0-test viene riscritto linearmente dal tipo di destinazione in snapshot-origin, vg0-test-real ha la definizione originale di vg0-test , sotto vg0-test: è disponibile lo snapshot della vista dell'unità originale e vg0-test --snap-cow è il dispositivo in cui le modifiche apportate al dispositivo originale dopo la creazione dell'istantanea vengono registrate tramite copy-on-write (COW). Queste sono istantanee a livello di dispositivo, non a livello di file system. Se vengono generate ulteriori istantanee, viene generata un'unità aggiuntiva dal punto di vista LVM e due ciascuno dal punto di vista del mappatore del dispositivo (istantanea e COW).

Connessione tra device mapper e LUKS

I volumi LUKS hanno un'area di intestazione (due MiB nell'esempio seguente), il resto della quale memorizza i dati crittografati. Gli strumenti di amministrazione leggono i parametri necessari dall'intestazione e posizionano un volume DM configurato con questi parametri sul resto. Un volume LUKS non deve essere un volume LVM. Esempio di un volume da 100 MiB:

blockdev --getsz / dev / linux / lukstest
204800

Il volume crittografato creato da LUKS è leggermente più piccolo:

blockdev --getsz / dev / mapper / lukstest
200704

Il dispositivo mappatore vede il volume come segue (chiave abbreviata):

dmsetup table lukstest --showkeys
0 200704 crypt aes-cbc-essiv: sha256 bff5 [...] 0 253: 10 4096

Come con LVM (snapshot), le possibilità del device mapper (o dmsetup) con LUKS vanno oltre quelle dei programmi di amministrazione. Le funzioni dmsetup load , suspend e resume possono essere usate per cambiare la dimensione di un volume montato, cosa che cryptsetup non consente.

Provisioning sottile

Con la versione 3.2, i target thin e thin-pool sono diventati parte del kernel Linux. Questi target funzionano in modo tale che prima un volume per i metadati (nella dimensione dell'espansione massima; 4 MiB metadati e 16 MiB block size sono sufficienti per circa 1.3 TiB di capacità virtuale) e uno per i dati (almeno nella dimensione dell'espansione minima) diventa. Questi due volumi vengono quindi collegati tramite il thin pool di destinazione . Il pool può contenere più volumi (e le relative istantanee). Questi vengono generati tramite messaggi al dispositivo del pool (messaggio dmsetup). A differenza degli altri dispositivi generati dal dispositivo mappatore, il dispositivo pool non può essere descritto direttamente come dispositivo orientato ai blocchi. Gli oggetti che possono essere indirizzati come normali dispositivi orientati ai blocchi vengono quindi generati tramite il target thin (la cui dimensione può essere aumentata e diminuita in seguito). L'integrazione della funzione snapshot nel dispositivo del pool non solo riduce il consumo di memoria al valore attualmente richiesto (che consente un numero maggiore di snapshot), ma riduce anche la perdita di prestazioni per gli snapshot concatenati attraverso la riorganizzazione interna della gestione degli snapshot. Diversi snapshot possono condividere blocchi in modo che lo spazio di archiviazione venga utilizzato solo una volta, ma i dati sono visibili in diversi volumi.

Il thin provisioning supporta la funzione TRIM , destinata principalmente agli SSD . Lo scopo di questa funzione, tuttavia, non è nelle proprietà e nella protezione dell'hardware sottostante, ma nel risparmio di spazio di archiviazione, che è importante a causa del suo sovraffollamento.

Obiettivi speciali

Oltre ai più importanti target linear , crypt e snapshot / snapshot-origin, il device mapper fornisce una serie di target speciali:

  1. delay: esegue gli accessi in lettura e / o scrittura con un ritardo e può distribuirli a più dispositivi
  2. errore: genera un errore di I / O per ogni accesso (soprattutto a scopo di test)
  3. flakey: genera errori (configurabili) con accesso in lettura e / o scrittura (consente di eliminare l'accesso in scrittura)
  4. mirror: mirroring (RAID 1)
  5. raid: per i livelli RAID più alti
  6. snapshot-merge: riscrive le modifiche apportate a un'istantanea sul volume originale (non possibile con il file system root durante il funzionamento)
  7. strisce: RAID 0
  8. zero: restituisce solo zeri per gli accessi in lettura, rifiuta gli accessi in scrittura (analogia orientata ai blocchi con / dev / null ); può simulare il thin provisioning insieme agli snapshot
  9. (non nel kernel vanilla) ioband: consente di limitare la larghezza di banda I / O di un dispositivo (anche per utente o cgroup)

Multipath

Come il RAID (stessi dati su più dispositivi; protezione contro il guasto del supporto di memorizzazione effettivo), i sistemi di archiviazione professionali con un alto livello di ridondanza offrono la possibilità di accedere allo stesso supporto di memorizzazione in modi diversi (protezione contro il guasto di uno dei dispositivi che il computer con Collegare il supporto di memorizzazione). Viene utilizzato principalmente nei sistemi basati su Fibre Channel . Dal punto di vista del software, è importante che il supporto di memorizzazione possa essere indirizzato utilizzando un nome fisso che sia indipendente dal modo in cui si accede al supporto. Ciò si ottiene tramite il multipath di destinazione , che può essere configurato utilizzando molte opzioni e può persino compensare le differenze di velocità tra percorsi alternativi al supporto di memorizzazione.

link internet

Prove individuali

  1. Articolo su Heise online. Estratto il 26 febbraio 2012 .
  2. Documentazione dello sviluppatore. Estratto il 26 febbraio 2012 .
  3. Documentazione del kernel. Estratto il 26 febbraio 2012 .
  4. pagina del progetto su sourceforge. (Non più disponibile online.) Archiviato dall'originale il 10 maggio 2012 ; Estratto il 26 febbraio 2012 . Info: il collegamento all'archivio è stato inserito automaticamente e non è stato ancora verificato. Controllare l'originale e il collegamento all'archivio secondo le istruzioni, quindi rimuovere questo avviso. @ 1@ 2Modello: Webachiv / IABot / sourceforge.net