Spoločnosť Veeam, výrobca softvéru pre zálohovanie a obnovu po havárii, navrhla na zahrnutie do jadra Linux modul blksnap, ktorý implementuje mechanizmus vytvárania snímok blokových zariadení a sledovania zmien v blokových zariadeniach. Na prácu so snímkami bola pripravená príkazová utilita blksnap a knižnica blksnap.so, ktoré umožňujú z priestoru používateľa interagovať s modulom jadra cez volania ioctl.
Cieľom vytvorenia modulu je organizácia zálohovania úložných zariadení a virtuálnych diskov bez zastavenia prevádzky — modul umožňuje zaznamenať v snímke aktuálny stav celého blokového zariadenia, pričom poskytuje pre zálohovanie izolovaný rez, nezávislý od pokračujúcich zmien. Dôležitou vlastnosťou blksnap je možnosť súčasného vytvárania snímok pre niekoľko blokových zariadení, čo umožňuje nielen zabezpečiť integritu údajov na úrovni blokového zariadenia, ale aj dosiahnuť konzistentnosť stavu rôznych blokových zariadení v zálohe.
Na sledovanie zmien bola do subsystému blokových zariadení (bdev) pridaná možnosť pripojenia filtrov, ktoré umožňujú zachytávať požiadavky na vstup/výstup. V blksnap je implementovaný filter, ktorý zachytáva požiadavky na zápis, číta starú hodnotu a uchováva ju v samostatnom zozname zmien, ktorý určuje stav snímky. Pri takomto prístupe sa logika práce s blokovým zariadením nemení, zápis do pôvodného blokového zariadenia sa vykonáva tak, ako je, bez ohľadu na snímky, čo vylučuje možnosť poškodenia údajov a umožňuje vyhnúť sa problémom aj v prípade výskytu nepredvídateľných kritických chýb v blksnap a pretečenia miesta vyhradeného na zmeny.
Modul tiež umožňuje určiť, ktoré bloky boli zmenené v období medzi posledným a akýmkoľvek predchádzajúcim snímkom, čo môže byť užitočné pri realizácii inkrementálnych záloh. Na zachovanie zmien, vzhľadom na stav snímku, môže byť na akomkoľvek blokovom zariadení vyhradený ľubovoľný rozsah sektorov, čo umožňuje uchovávať zmeny v samostatných súboroch v rámci FS na blokových zariadeniach. Veľkosť oblasti na uchovávanie zmien môže byť kedykoľvek zväčšená, aj po vytvorení snímku.
Blksnap je založený na kóde modulu veeamsnap, ktorý je súčasťou produktu Veeam Agent for Linux, ale bol prepracovaný s ohľadom na špecifiká dodávky v hlavnej súčasti jadra Linux. Konceptuálnym rozdielom medzi blksnap a veeamsnap je zapojenie systému filtrov, pripevnených k blokovému zariadeniu, namiesto samostatnej komponenty bdevfilter, ktorá zachytáva vstup/výstup.
Zdroj: opennet.ru
