Proponowany mechanizm blksnap do tworzenia migawek urządzeń blokowych w systemie Linux

Firma Veeam, która produkuje oprogramowanie do tworzenia kopii zapasowych i odzyskiwania po awarii, zaproponowała włączenie modułu blksnap do jądra Linuksa wraz z implementacją mechanizmu tworzenia migawek urządzeń blokowych i śledzenia zmian w urządzeniach blokowych. Do pracy z migawkami przygotowano narzędzie wiersza poleceń blksnap oraz bibliotekę blksnap.so, umożliwiające interakcję z modułem jądra poprzez wywołania ioctl z przestrzeni użytkownika.

Celem stworzenia modułu jest organizowanie backupu dysków i dysków wirtualnych bez zatrzymywania pracy - moduł pozwala uchwycić aktualny stan całego urządzenia blokowego w migawce, zapewniając wyizolowany segment do backupu, który nie jest zależny od zachodzących zmian . Ważną cechą blksnap jest możliwość jednoczesnego tworzenia migawek dla kilku urządzeń blokowych jednocześnie, co pozwala nie tylko zapewnić integralność danych na poziomie urządzenia blokowego, ale także osiągnąć spójność stanu różnych urządzeń blokowych w backupie.

Aby śledzić zmiany w podsystemie urządzeń blokowych (bdev), dodano możliwość dołączania filtrów pozwalających na przechwytywanie żądań I/O. blksnap implementuje filtr, który przechwytuje żądania zapisu, odczytuje starą wartość i zapisuje ją na osobnej liście zmian, która określa stan migawki. Dzięki takiemu podejściu logika pracy z urządzeniem blokowym nie zmienia się, zapis w oryginalnym urządzeniu blokowym odbywa się tak jak jest, niezależnie od migawek, co eliminuje możliwość uszkodzenia danych i pozwala uniknąć problemów nawet w przypadku nieprzewidzianych błędów krytycznych w blksnap i przepełnienie miejsca przeznaczonego na zmiany.

Moduł pozwala również określić, które bloki zostały zmienione między ostatnią a dowolną poprzednią migawką, co może być przydatne przy wdrażaniu przyrostowych kopii zapasowych. Aby zapisać zmiany, w stosunku do stanu migawki, na dowolnym urządzeniu blokowym można przydzielić dowolny zakres sektorów, co pozwala na zapisywanie zmian w oddzielnych plikach w FS na urządzeniach blokowych. Rozmiar obszaru do przechowywania zmian można zwiększyć w dowolnym momencie, nawet po utworzeniu migawki.

Blksnap bazuje na kodzie modułu veeamsnap, który jest częścią produktu Veeam Agent for Linux, ale został przeprojektowany pod kątem specyfiki dostarczania w głównej części jądra Linux. Koncepcyjna różnica między blksnap i veeamsnap polega na zastosowaniu systemu filtrów dołączonych do urządzenia blokowego zamiast oddzielnego komponentu bdevfilter, który przechwytuje operacje we/wy.

Źródło: opennet.ru

Dodaj komentarz