Navrhovaný mechanismus blksnap pro vytváření snímků blokových zařízení v Linuxu

Společnost Veeam, která vyrábí software pro zálohování a obnovu po havárii, navrhla modul blksnap k začlenění do linuxového jádra s implementací mechanismu pro vytváření snímků blokových zařízení a sledování změn v blokových zařízeních. Pro práci se snímky byly připraveny obslužný program příkazového řádku blksnap a knihovna blksnap.so, které umožňují interakci s modulem jádra prostřednictvím volání ioctl z uživatelského prostoru.

Účelem vytvoření modulu je organizovat zálohování disků a virtuálních disků bez zastavení práce - modul umožňuje zachytit aktuální stav celého blokového zařízení ve snímku a poskytuje izolovaný řez pro zálohování, který není závislý na probíhajících změnách . Důležitou vlastností blksnapu je schopnost současně vytvářet snímky pro několik blokových zařízení najednou, což umožňuje nejen zajistit integritu dat na úrovni blokových zařízení, ale také dosáhnout konzistence stavu různých blokových zařízení v záloze.

Pro sledování změn v subsystému blokových zařízení (bdev) byla přidána možnost připojit filtry, které vám umožní zachytit I/O požadavky. blksnap implementuje filtr, který zachycuje požadavky na zápis, čte starou hodnotu a ukládá ji do samostatného seznamu změn, který určuje stav snímku. S tímto přístupem se logika práce s blokovým zařízením nemění, záznam v původním blokovém zařízení probíhá tak, jak je, bez ohledu na snímky, což eliminuje možnost poškození dat a předchází problémům i v případě nepředvídatelných kritických chyb v blksnap a přetečení prostoru přiděleného pro změny.

Modul také umožňuje určit, které bloky byly změněny mezi posledním a jakýmkoli předchozím snímkem, což může být užitečné pro implementaci přírůstkových záloh. Pro uložení změn, vzhledem ke stavu snímku, lze na libovolném blokovém zařízení alokovat libovolný rozsah sektorů, což umožňuje uložit změny do samostatných souborů v rámci FS na blokových zařízeních. Velikost oblasti pro uložení změn lze kdykoli zvětšit, a to 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 je přepracován pro specifika dodání v hlavní části linuxového jádra. Koncepční rozdíl mezi blksnap a veeamsnap spočívá v použití systému filtrů připojených k blokovému zařízení namísto samostatné komponenty bdevfilter, která zachycuje I/O.

Zdroj: opennet.ru

Přidat komentář