Společnost Veeam, výrobce softwaru pro zálohování a obnovu po havárii, navrhla zahrnout do jádra Linux modul blksnap, který implementuje mechanismus vytváření snímků blokových zařízení a sledování změn v těchto zařízeních. Pro práci se snímky byla připravena utilita příkazového řádku blksnap a knihovna blksnap.so, které umožňují z prostoru uživatele komunikovat s jádrovým modulem prostřednictvím volání ioctl.
Cílem vytvoření modulu je organizace zálohování úložišť a virtuálních disků bez zastavení provozu — modul umožňuje zachytit v snímku aktuální stav celého blokového zařízení, čímž poskytuje pro zálohování izolovaný výřez, nezávislý na pokračujících změnách. Důležitou vlastností blksnap je možnost současného vytváření snímků pro více blokových zařízení, což nejen zajišťuje integritu dat na úrovni blokového zařízení, ale také dosahuje konzistence stavu různých blokových zařízení v záloze.
Pro sledování změn byla do subsystému blokových zařízení (bdev) přidána možnost připojení filtrů, které umožňují zachytávat vstupně/výstupní požadavky. V blksnap je implementován filtr, který zachycuje zápisové požadavky, čte starou hodnotu a ukládá ji do samostatného seznamu změn, určujícího stav snímku. Při takovém přístupu logika práce s blokovým zařízením zůstává nezměněna, zápis do původního blokového zařízení probíhá tak, jak je, nezávisle na snímcích, což vylučuje možnost poškození dat a umožňuje vyhnout se problémům i v případě vzniku nepředvídatelných kritických chyb v blksnap a přeplnění místa vyhrazeného pro změny.
Modul také umožňuje určit, které bloky byly změněny v období mezi posledním a jakýmkoli předchozím snímkem, což může být užitečné pro realizaci inkrementálního zálohování. Pro uchování změn, vzhledem k stavu snímku, může být vyhrazen libovolný rozsah sektorů na jakémkoli blokovém zařízení, což umožňuje ukládat změny do samostatných souborů uvnitř FS na blokových zařízeních. Velikost oblasti pro ukládání změn může být kdykoli zvýšena, i po vytvoření snímku.
Blksnap je založen na kódu modulu veeamsnap, který je součástí produktu Veeam Agent for Linux, ale byl přepracován s ohledem na specifika dodání v hlavním jádru Linuxu. Konceptuálním rozdílem blksnap od veeamsnap je zapojení systému filtrů připojených k blokovému zařízení, místo samostatné komponenty bdevfilter, která zachycuje vstup/výstup.
Zdroj: opennet.ru
