Veeam, azienda che sviluppa software per il backup e il ripristino dopo guasti, ha proposto l'inclusione nel kernel di Linux del modulo blksnap, che implementa la creazione di snapshot per i dispositivi a blocchi e il monitoraggio delle modifiche nei dispositivi a blocchi. È stata preparata un'utility da riga di comando blksnap e una libreria blksnap.so per interagire con il modulo del kernel tramite chiamate ioctl dallo spazio utente.
L'obiettivo della creazione del modulo è l'organizzazione del backup di archiviazione e dischi virtuali senza interrompere l'operatività. Il modulo consente di catturare in uno snapshot lo stato attuale dell'intero dispositivo block, fornendo per il backup un'istantanea isolata, indipendente dalle modifiche che continuano a verificarsi. Una caratteristica importante di blksnap è la possibilità di creare simultaneamente snapshot per più dispositivi block, il che non solo garantisce l'integrità dei dati a livello di dispositivo block, ma consente anche di ottenere la coerenza dello stato tra diversi dispositivi block nel backup.
Per tenere traccia delle modifiche nel sottosistema dei dispositivi a blocchi (bdev), è stata aggiunta la possibilità di attaccare filtri che consentono di intercettare le richieste di input/output. In blksnap è implementato un filtro che intercetta le richieste di scrittura, legge il valore precedente e lo salva in un elenco separato di modifiche, che definisce lo stato dello snapshot. Con questo approccio, la logica di lavoro con il dispositivo a blocchi non cambia; la scrittura sul dispositivo a blocchi originale avviene come previsto, indipendentemente dagli snapshot, escludendo così la possibilità di danneggiamento dei dati e consentendo di evitare problemi anche in caso di errori critici imprevisti in blksnap e di esaurimento dello spazio riservato alle modifiche.
Il modulo permette di determinare quali blocchi siano stati modificati nel periodo tra l'ultima e qualsiasi precedente istantanea, il che può essere utile per implementare il backup incrementale. Per salvare le modifiche rispetto allo stato dell'istantanea, è possibile riservare un intervallo casuale di settori su qualsiasi dispositivo a blocchi, consentendo di memorizzare le modifiche in singoli file all'interno del FS sui dispositivi a blocchi. La dimensione dell'area di archiviazione delle modifiche può essere aumentata in qualsiasi momento, anche dopo la creazione dell'istantanea.
Blksnap si basa sul codice del modulo veeamsnap, parte del prodotto Veeam Agent per Linux, ma rielaborato tenendo conto delle specificità della fornitura principalmente come parte del kernel Linux. La differenza concettuale tra blksnap e veeamsnap è l'utilizzo di un sistema di filtri collegati al dispositivo a blocchi, al posto di un componente separato bdevfilter che intercetta l'input/output.
Fonte: opennet.ru
