Navrhovaný mechanizmus blksnap na vytváranie snímok blokových zariadení v systéme Linux

Spoločnosť Veeam, softvérová spoločnosť, ktorá vyrába softvér na zálohovanie a obnovu po havárii, navrhla modul blksnap na zahrnutie do jadra Linuxu. Implementuje mechanizmus na vytváranie snímok blokových zariadení a sledovanie zmien na blokových zariadeniach. Na prácu so snímkami bol vyvinutý nástroj príkazového riadka blksnap a knižnica blksnap.so, ktoré umožňujú interakciu používateľského priestoru s modulom jadra prostredníctvom volaní ioctl.

Účelom tohto modulu je umožniť zálohovanie jednotiek a virtuálnych diskov bez prerušenia. Umožňuje zachytiť aktuálny stav celého blokového zariadenia v snímke, čím poskytuje izolovanú snímku pre zálohu, ktorá je nezávislá od prebiehajúcich zmien. Kľúčovou funkciou modulu blksnap je schopnosť súčasne vytvárať snímky pre viacero blokových zariadení, čo nielen zaisťuje integritu údajov na úrovni blokového zariadenia, ale aj konzistenciu medzi rôznymi blokovými zariadeniami v zálohe.

Na sledovanie zmien teraz subsystém blokových zariadení (bdev) podporuje pripojenie filtrov na zachytenie požiadaviek I/O. blksnap implementuje filter, ktorý zachytáva požiadavky na zápis, číta starú hodnotu a ukladá ju do samostatného zoznamu zmien, ktorý definuje stav snímok. Tento prístup zachováva logiku operácií blokových zariadení; zápisy do pôvodného blokového zariadenia sa vykonávajú tak, ako sú, nezávisle od snímok. Tým sa eliminuje možnosť poškodenia údajov a predchádza sa problémom aj v prípade nepredvídateľných kritických chýb v blksnap a pridelený priestor na zmeny je plný.

Modul vám tiež umožňuje určiť, ktoré bloky boli upravené medzi poslednou a ľubovoľnou predchádzajúcou snímkou, čo môže byť užitočné pri implementácii prírastkových záloh. Na uloženie zmien vzhľadom na stav snímky je možné na ľubovoľnom blokovom zariadení alokovať ľubovoľný rozsah sektorov, čo umožňuje ukladanie zmien do samostatných súborov v rámci súborového systému na blokových zariadeniach. Veľkosť úložnej oblasti pre zmeny je možné kedykoľvek zväčšiť, a to aj po vytvorení snímky.

Blksnap je založený na module veeamsnap, ktorý je súčasťou Veeam Agent pre Linux, ale bol prepísaný tak, aby zohľadňoval špecifiká doručovania v hlavnom jadre Linuxu. Koncepčný rozdiel medzi blksnap a veeamsnap spočíva v použití systému filtrov pripojených k blokovému zariadeniu namiesto samostatnej komponenty bdevfilter, ktorá zachytáva I/O operácie.

Zdroj: opennet.ru