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

Firma Veeam, produkująca oprogramowanie do tworzenia kopii zapasowych i odzyskiwania po awarii, zaproponowała dołączenie do jądra Linux modułu blksnap, który realizuje mechanizm tworzenia migawkowych obrazów urządzeń blokowych oraz śledzenia zmian w tych urządzeniach. Do pracy z migawkami przygotowano narzędzie wiersza poleceń blksnap oraz bibliotekę blksnap.so, pozwalające na interakcję z modułem jądra przez wywołania ioctl z przestrzeni użytkownika.

Celem stworzenia modułu jest organizacja tworzenia kopii zapasowych nośników i wirtualnych dysków bez przerywania ich działania — moduł pozwala na zarejestrowanie w migawce aktualnego stanu całego urządzenia blokowego, zapewniając do niego izolowany wycinek, niezależny od trwających zmian. Ważną cechą blksnap jest możliwość jednoczesnego tworzenia migawek dla kilku urządzeń blokowych, co nie tylko gwarantuje integralność danych na poziomie urządzenia blokowego, ale także umożliwia osiągnięcie spójności stanu różnych urządzeń blokowych w kopii zapasowej.

Aby śledzić zmiany, do podsystemu urządzeń blokowych (bdev) dodano możliwość dołączania filtrów, które pozwalają na przechwytywanie żądań wejścia/wyjścia. W blksnap zrealizowano filtr, który przechwytuje żądania zapisu, odczytuje starą wartość i zapisuje ją w oddzielnej liście zmian, definiującej stan migawki. Przy takim podejściu logika działania z urządzeniem blokowym nie zmienia się, zapis w oryginalnym urządzeniu blokowym odbywa się tak, jak jest, niezależnie od migwek, co wyklucza możliwość uszkodzenia danych i pozwala uniknąć problemów nawet w przypadku wystąpienia nieprzewidywalnych krytycznych błędów w blksnap oraz przepełnienia miejsca przeznaczonego na zmiany.

Moduł ten pozwala określić, które bloki zostały zmienione w okresie czasu pomiędzy ostatnim a dowolnym poprzednim zrzutem, co może być przydatne do realizacji inkrementalnego tworzenia kopii zapasowych. Aby zachować zmiany w odniesieniu do stanu zrzutu, na dowolnym urządzeniu blokowym można wyznaczyć dowolny zakres sektorów, co pozwala na zapis zmian w oddzielnych plikach w systemie plików na urządzeniach blokowych. Rozmiar obszaru do przechowywania zmian może być zwiększany w dowolnym momencie, nawet po utworzeniu zrzutu.

Blksnap oparty jest na kodzie modułu veeamsnap, będącego częścią produktu Veeam Agent for Linux, ale został przekształcony z uwzględnieniem specyfiki dostawy w głównym składzie jądra Linux. Fundamentalną różnicą między blksnap a veeamsnap jest wykorzystanie systemu filtrów, dołączanych do urządzenia blokowego, zamiast oddzielnego komponentu bdevfilter, przechwytującego wejście/wyjście.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster