Typowym ograniczeniem operacji kopii zapasowych jest skanowanie metadanych wymagane przez tradycyjne oprogramowanie tworzące kopie na poziomie plików. Takie rozwiązania zwykle przechodzą po drzewie katalogów i sprawdzają znaczniki czasu modyfikacji operacjami stat(). Na serwerach plików z dużą liczbą plików skanowanie to może zająć znaczną ilość czasu, zanim rozpocznie się transfer danych.
Aby zwiększyć wydajność przyrostowych kopii zapasowych, StateWarden pomija przeglądanie systemu plików w przestrzeni użytkownika na rzecz śledzenia zmian na poziomie bloków.
1. Ograniczenia kopii zapasowych na poziomie plików
Tradycyjne oprogramowanie, wykonując kopię zapasową na poziomie plików, działa w przestrzeni użytkownika:
- Odpytuje system operacyjny o listę katalogów i plików.
- Odpytuje system operacyjny o metadane plików (np. rozmiar, datę modyfikacji).
- Otwiera plik i odczytuje go sekwencyjnie.
Jeśli duży plik (np. obraz dysku maszyny wirtualnej o rozmiarze 50 GB) zostanie nieznacznie zmodyfikowany, rozwiązanie tworzące kopię na poziomie plików często odczytuje cały plik i oblicza jego skrót, aby przetworzyć zmiany.
2. Architektura kopii zapasowych na poziomie bloków
StateWarden przetwarza wolumeny pamięci masowej na poziomie bloków. Dzięki integracji z niskopoziomowymi interfejsami API jądra systemu hosta system identyfikuje i przesyła wyłącznie zmodyfikowane sektory.
Windows: Smart NTFS i dziennik USN
W środowiskach Windows StateWarden stosuje następujący proces:
- Analiza dziennika USN: Agent monitoruje dziennik USN (Update Sequence Number) systemu NTFS, który rejestruje modyfikacje plików. Agent analizuje ten dziennik, aby zidentyfikować zmienione pliki bez skanowania drzewa katalogów.
- Mapowanie fizycznych LCN: Agent używa
FSCTL_GET_RETRIEVAL_POINTERS, aby zmapować zmodyfikowane pliki bezpośrednio na ich fizyczne numery klastrów logicznych (Logical Cluster Numbers, LCN) na dysku. - Surowe odczyty sektorów: Agent wykonuje surowe odczyty sektorów z
\\.\PhysicalDrive0zamiast standardowych odczytów plików w przestrzeni użytkownika. Zwiększa to przepustowość i pozwala uniknąć typowych konfliktów blokad plików.
Linux: śledzenie na poziomie jądra i zarządzanie wolumenami logicznymi
W środowiskach Linux StateWarden wykorzystuje platformę Device Mapper:
- Przechwytywanie zapisów: StateWarden integruje się z celami śledzenia opartego na epokach w jądrze Linuksa (
dm-era). Struktury te monitorują i rejestrują operacje zapisu na poziomie urządzenia blokowego. - Niezależność od systemu plików: Ponieważ śledzenie odbywa się na poziomie sektorów wolumenu (np.
/dev/md0p1), mechanizm Changed Block Tracking (CBT) działa niezależnie od użytego systemu plików (np.ext4,xfs,btrfs).
3. Korzyści operacyjne
Działanie poniżej warstwy abstrakcji systemu plików zapewnia szereg korzyści:
- Wydajne skany przyrostowe: Skanowanie metadanych jest minimalne. Agent identyfikuje, przetwarza i przesyła wyłącznie zmodyfikowane bloki danych.
- Mniejsze obciążenie IOPS: Dzięki surowym odczytom sektorów StateWarden zmniejsza obciążenie odczytami i zapisami (IOPS) serwera produkcyjnego w oknie wykonywania kopii zapasowej.
- Deduplikacja na poziomie bloków: Matematyczne dzielenie surowego strumienia dysku na bloki umożliwia wydajną deduplikację między urządzeniami w warstwie danych (Driad). Zduplikowane bloki występujące na różnych serwerach (np. wspólne aktualizacje systemu operacyjnego) są przechowywane tylko raz.