Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Odciążony transfer danych systemu Windows (ODX) to funkcja, która przyspiesza operacje kopiowania i przenoszenia serwera. Jest ona dostępna od systemu Windows Server 2012 i jest obsługiwana na woluminach NTFS.
W tym artykule opisano funkcję ODX z perspektywy urządzenia magazynującego. Aby uzyskać informacje dotyczące systemów plików i minifiltrów, zobacz Odciążone transfery danych.
Przegląd
Zamiast kopiować duże ilości danych podczas transferów plików, funkcja ODX systemu Windows wprowadziła tokenizowaną operację przenoszenia danych na urządzeniach magazynujących. Plik źródłowy i plik docelowy mogą znajdować się w dowolnej z następujących lokalizacji:
- Na tym samym woluminie.
- Na dwóch różnych woluminach, które są hostowane przez tę samą maszynę.
- Na woluminie lokalnym i woluminie zdalnym za pomocą Server Message Block (SMB2 lub SMB3).
- Na dwóch różnych maszynach na dwóch woluminach za pośrednictwem protokołu SMB2 lub SMB3.
Na poniższym diagramie przedstawiono proces operacji odciążania kopiowania na urządzeniach magazynujących obsługujących funkcję ODX.
- Aplikacja kopiowania wysyła żądanie odczytu odciążającego do menedżera kopii na źródłowym urządzeniu magazynującym.
- Menedżer kopii źródłowej zwraca token. Token jest reprezentacją danych (ROD) do skopiowania.
- Aplikacja wysyła żądanie zapisu odciążającego z tokenem do menedżera kopii docelowego urządzenia pamięci masowej.
- Menedżer kopiowania tablicy magazynowej przenosi dane z urządzenia źródłowego do urządzenia docelowego i zwraca wynik zapisu z odciążeniem do aplikacji.
Identyfikacja źródła i celu ODX-Capable
Aby obsługiwać funkcję ODX, macierze magazynowe muszą implementować powiązane specyfikacje standardowe T10 dla macierzy magazynowych obsługujących funkcję ODX, w tym odciążanie operacji odczytu i zapisu za pomocą tokenów. Podczas enumeracji urządzenia LUN (rozruchu systemu lub zdarzenia plug-and-play), system Windows zbiera lub aktualizuje informacje o możliwości ODX urządzenia docelowego pamięci masowej, wykonując następujące kroki.
- Możliwość odciążania kopiowania zapytań.
- Zbierz wymagane parametry dla operacji odciążania i ograniczeń kopiowania.
Domyślnie system Windows najpierw próbuje pasma ODX dla operacji kopiowania, jeśli zarówno źródłowy, jak i docelowy LUN obsługują funkcję ODX. Jeśli urządzenie magazynujące nie powiedzie się przy początkowym żądaniu ODX, system Windows oznacza kombinację źródłowej i docelowej jednostki LUN jako ścieżkę "nieobsługiwaną przez ODX" i podąża za starszą ścieżką kodu kopiowania plików.
Operacje odczytu/zapisu ODX
Synchroniczne wdrażanie poleceń i interfejsy API
Duże żądanie odciążania zapisu jest podzielone przy użyciu następującego algorytmu, aby zapewnić niezawodne synchroniczne odciążanie zapisu.
- Jeśli docelowe urządzenie magazynujące nie zapewnia optymalnego rozmiaru transferu, ustaw optymalny rozmiar transferu na 64 MB.
- Jeśli optymalny rozmiar transferu ustawiony przez urządzenie docelowe jest większy niż 256 MB, ustaw optymalny rozmiar transferu na 256 MB.
- Optymalny rozmiar transferu określony przez urządzenie docelowe magazynu jest większy niż zero i mniejszy niż 256 MB.
Synchroniczne polecenia odciążania odczytu i zapisu SCSI zmniejszają komplikacje w scenariuszach MPIO i przełączania awaryjnego klastra. System Windows oczekuje, że menedżer kopii ukończy synchroniczne polecenia odczytu/zapisu SCSI w ciągu 4 sekund.
Aplikacje mogą używać interfejsów API FSCTL, DSM IOCTL lub interfejsów API SCSI_PASS_THROUGH do interakcji z macierzami magazynowymi i wykonywania operacji odciążania kopii. Aby uniknąć uszkodzenia danych lub niestabilności systemu, system Windows ogranicza aplikacje przed bezpośrednim zapisem do woluminu zamontowanego w systemie plików, bez uprzedniego uzyskania wyłącznego dostępu do tego woluminu. To ograniczenie jest konieczne ze względu na warunek, że zapis na woluminie może zderzyć się z zapisami systemu plików. W przypadku wystąpienia takich kolizji zawartość woluminu może być pozostawiona w stanie niespójnym.
Przeniesienie obciążenia operacji odczytu
Żądanie odciążenia odczytu aplikacji może określić czas życia tokenu (limit czasu braku aktywności). Jeśli aplikacja ustawi okres istnienia tokenu na zero, domyślny czasomierz braku aktywności jest używany jako okres istnienia tokenu. Menedżer kopii w macierzy pamięci masowej utrzymuje i weryfikuje token zgodnie z wartością limitu czasu nieaktywności i poświadczeniami. Host systemu Windows ogranicza również liczbę fragmentów plików do 64. Jeśli żądanie odczytu odciążania składa się z ponad 64 fragmentów, system Windows zakończy się niepowodzeniem żądania odciążania kopii i powróci do tradycyjnej operacji kopiowania.
Po zakończeniu żądania odczytu odciążania menedżer kopii przygotowuje token reprezentujący dane (ROD) dla polecenia odbierania wyniku odciążonego odczytu. Pole tokenu ROD określa reprezentację danych użytkownika oraz informacji o ochronie w określonym momencie czasowym. Dane ROD mogą być danymi użytkownika w formacie "otwórz wyłącznie" lub "otwórz z współdzieleniem". Menedżer kopiowania może unieważnić token zgodnie z ustawieniem zasad polityki ROD. Jeśli kontroler ROD jest "otwarty wyłącznie" dla operacji odciążania kopii, token ROD może zostać unieważniony po zmodyfikowaniu lub przeniesieniu kontrolera ROD. Jeśli ROD jest w formacie "open with share", token ROD pozostaje prawidłowy po zmodyfikowaniu ROD. Token ROD to 512 bajtów o następującym formacie:
| Rozmiar w bajtach | Zawartość tokenu |
|---|---|
| 4 | Typ tokenu ROD |
| 508 | Identyfikator tokenu ROD |
Ponieważ token ROD jest przyznawany i używany tylko przez macierz magazynową, jego format jest niejasny, unikatowy i wysoce bezpieczny. Jeśli token jest modyfikowany, nie jest weryfikowany lub wygasł, menedżer kopiowania może unieważnić token podczas operacji odciążania zapisu. Zwrócony token ROD z operacji odciążania odczytu ma wartość limitu czasu stanu nieaktywnego wskazującą liczbę sekund, przez które menedżer kopiowania musi utrzymać tokena w ważności dla następnego użycia w zapisie przy użyciu tokenu.
Odciążanie operacji zapisu
Po odebraniu przez aplikację tokenu ROD z menedżera kopiowania, wysyła żądanie zapisu z odciążeniem z tokenem ROD do menedżera kopiowania w macierzy pamięci masowej. Gdy polecenie typu synchronizowanego przesyłania zapisu jest wysyłane do urządzenia docelowego, system Windows oczekuje, że menedżer kopii zrealizuje polecenie w ciągu 4 sekund. Jeśli polecenie zostanie zakończone z powodu przekroczenia limitu czasu polecenia lub innych warunków błędu, system Windows nie zrealizuje polecenia. Aplikacja wraca do starszej operacji kopiowania zgodnie z zwróconym kodem stanu.
Żądanie odciążenia zapisu można ukończyć za pomocą jednego lub więcej poleceń "Odbiór Wyniku Odciążonego Zapisania". Jeśli odciążanie zapisu jest częściowo ukończone, menedżer kopii zwraca szacowane opóźnienie i liczbę transferów wskazujących postęp kopiowania. Liczba transferów określa liczbę ciągłych bloków logicznych, które zostały zapisane bez błędu ze źródła do nośnika docelowego. Menedżer kopii może wykonywać operacje zapisu w sposób sekwencyjny lub rozproszony/zebrany.
Gdy wystąpi błąd zapisu, śledzenie postępu kopiowania polega na zliczaniu kolejnych bloków logicznych od pierwszego bloku logicznego do momentu wystąpienia błędu. Aplikacja kliencka lub aparat kopiowania wznawia odciążanie zapisu z bloku niepowodzenia zapisu. Po zakończeniu odciążania zapisu menedżer kopii kończy polecenie Odbierz informacje o tokenie kontrolera ROD za pomocą polecenia:
- Szacowane opóźnienie aktualizacji stanu ustawiono na zero.
- Postęp liczby transferów danych na poziomie 100 procent.
Jeśli wynik zapisu odciążania odbioru zwraca ten sam poziom liczby przesyłanych danych, system Windows przerwie operację kopiowania z powrotem do aplikacji po czterech ponownych próbach.
Aplikacja kliencka może również wykonać operację odciążania zapisu za pomocą dobrze znanego tokenu ROD, który jest wstępnie zdefiniowanym tokenem ROD ze znanym wzorcem danych i formatem tokenu. Jedna typowa implementacja jest nazywana tokenem zerowym. Aplikacja kliencka może użyć tokenu zero, aby wypełnić jeden lub więcej zakresów bloków logicznych zerami. Jeśli dobrze znany token nie jest obsługiwany lub rozpoznawalny, menedżer kopiowania nie zrealizuje żądania zapisu offload z komunikatem "Invalid Token". Dobrze znany token ROD to 512 bajtów o następującym formacie:
| Rozmiar w bajtach | Zawartość tokenu |
|---|---|
| 4 | Typ tokenu ROD |
| 2 | Dobrze znany wzorzec |
| 506 | Identyfikator tokenu ROD |
W przypadku odciążania zapisu za pomocą dobrze znanego tokenu rod aplikacja kliencka nie może użyć odciążania odczytu w celu żądania dobrze znanego tokenu. Menedżer kopiowania weryfikuje i utrzymuje znane tokeny ROD zgodnie z własną polityką.
Parametry dostrajania wydajności implementacji ODX
Wydajność funkcji ODX nie zależy od szybkości połączenia transportowego sieci klient-serwer ani sieci magazynowania (SAN) między serwerem a macierzą magazynową. Menedżer kopiowania i serwery urządzeń macierzy magazynowej przenoszą dane.
Nie każde odciążenie kopiowania korzysta z technologii ODX. Na przykład menedżer kopii 1-bitowej macierzy magazynowej iSCSI może ukończyć 3 GB kopii pliku w ciągu 10 sekund, a szybkość transferu danych będzie większa niż 300 MB na sekundę. Szybkość transferu danych przewyższa już maksymalną teoretyczną szybkość transferu interfejsu Ethernet 1-Gbit.
Ponadto istnieje możliwość, że wydajność kopiowania plików o określonym rozmiarze może nie przynieść korzyści z technologii ODX. Aby zoptymalizować wydajność, użycie funkcji ODX może być ograniczone do dozwolonego minimalnego rozmiaru pliku i maksymalnej długości kopii. Uwaga:
System Windows ustawia minimalne wymaganie dotyczące rozmiaru pliku dla operacji odciążania kopii na poziomie 256 KB w aucie kopiowania. Jeśli plik jest mniejszy niż 256 KB, aparat kopiowania powraca do starszego procesu kopiowania.
Host systemu Windows używa maksymalnego rozmiaru przesyłania tokenów i optymalnej liczby operacji transferowych, aby przygotować optymalny rozmiar transferu dla polecenia SCSI typu offload dotyczącego odczytu lub zapisu. Całkowity rozmiar transferu w liczbie bloków nie może przekraczać maksymalnego rozmiaru transferu tokenu. Jeśli macierz magazynowa nie zgłosi optymalnej liczby transferów, system Windows używa 64 MB jako liczby domyślnej.
Optymalne i maksymalne parametry długości transferu określają optymalną i maksymalną liczbę bloków w jednym deskryptorze zakresu. Aplikacje odciążenia kopiowania mogą zgodnie z tymi parametrami osiągnąć optymalną wydajność transferu plików.
Obsługa błędów ODX i obsługa wysokiej dostępności
Gdy operacja ODX zakończy się niepowodzeniem żądania kopiowania plików, aparat kopiowania i system plików systemu Windows (NTFS) wracają do starszej operacji kopiowania. Jeśli operacja odciążania kopii zakończy się niepowodzeniem w trakcie operacji zapisu, silnik kopiowania i NTFS wznawiają operację kopiowania od pierwszego punktu awarii w odciążeniu zapisu.
Obsługa błędów ODX
ODX używa niezawodnego algorytmu obsługi błędów, zgodnie z cechami macierzy magazynowej. Jeśli odciążanie kopiowania zakończy się niepowodzeniem w ścieżce obsługującej funkcję ODX, host systemu Windows oczekuje, że aplikacja powróci do starszej operacji kopiowania. W tym momencie aparat kopiowania systemu Windows zaimplementował już mechanizm "powrót do tradycyjnej kopii". Po niepowodzeniu odciążania kopiowania, system NTFS oznacza źródłowy i docelowy LUN jako nieobsługujący ODX na trzy minuty. Po upływie tego czasu aparat kopiowania systemu Windows ponawia próbę operacji ODX. Macierz magazynowa może użyć tej funkcji, aby tymczasowo wyłączyć obsługę funkcji ODX w niektórych ścieżkach podczas bardzo stresujących sytuacji.
ODX w trybie Failover w konfiguracjach MPIO i Serwera Klastra
Operacje odczytu i zapisu muszą zostać ukończone lub anulowane tym samym łączem pamięci masowej (I_T nexus).
Gdy występuje przełączenie awaryjne serwera MPIO lub klastra podczas synchronicznej operacji odciążania odczytu lub zapisu danych, system Windows obsługuje je w następujący sposób:
Jeśli nastąpi przełączenie ścieżki MPIO w tryb awaryjny, system Windows ponawia nieudane polecenie ODX. Jeśli polecenie ponownie zakończy się niepowodzeniem, system Windows:
- Inicjuje przełączenie awaryjne węzła serwera klastra, gdy jest częścią serwera klastra.
- Wykonuje reset LUN urządzenia magazynującego i zwraca status niepowodzenia operacji we/wy do aplikacji, jeśli przełączenie awaryjne serwera klastrowego nie jest możliwe.
W konfiguracji serwera klastra usługa magazynu klastra przełącza się na następny preferowany węzeł klastra, a następnie wznawia działanie. Aplikacja offload musi być dostosowana do klastra, aby móc ponowić polecenie odczytu/zapisu offload po przełączeniu na tryb awaryjny usługi magazynowania klastra.
Jeśli polecenie odciążania odczytu lub zapisu nie powiodło się po przejściu ścieżki MPIO i przełączeniu węzła klastra w tryb failover, system Windows wykonuje resetowanie jednostki LUN do urządzenia magazynującego. Urządzenie pamięci masowej kończy wszystkie zaległe polecenia i oczekujące operacje na LUN.
Obecnie system Windows nie wysyła asynchronicznych poleceń odciążających odczyt lub zapis SCSI z warstwy pamięci masowej.
Modele użycia ODX
Funkcja ODX na dyskach fizycznych, wirtualnym dysku twardym i udostępnionym dysku SMB
Aby wykonać operacje ODX, serwer aplikacji musi mieć dostęp zarówno do źródłowej jednostki LUN, jak i docelowej jednostki LUN z uprawnieniami do odczytu/zapisu. Aplikacja odciążania kopiowania wysyła żądanie odciążania do źródłowej jednostki LUN i odbiera token od menedżera kopii źródłowej jednostki LUN. Aplikacje do odciążania kopii używają tokenu do wystawiania żądania odciążania zapisu do docelowej jednostki LUN. Następnie menedżer kopiowania przenosi dane z LUN źródłowego do LUN docelowego za pośrednictwem sieci pamięci masowej. Na poniższym diagramie przedstawiono najbardziej podstawowe obsługiwane cele źródłowe i docelowe dla odciążonych transferów danych.
Operacja ODX z jednym serwerem
W konfiguracji pojedynczego serwera aplikacja do przenoszenia kopiowania wysyła żądania odciążenia odczytu i zapisu z tego samego systemu serwerowego.
Serwer źródłowy (lub źródłowa maszyna wirtualna) ma dostęp do źródłowej jednostki LUN (dysku VHD lub dysku fizycznego) oraz docelowej jednostki LUN (VHD lub dysku fizycznego). Aplikacja odciążania kopiowania wysyła żądanie odciążania do źródłowej jednostki LUN i odbiera token ze źródłowej jednostki LUN. Następnie aplikacja do odciążania kopiowania używa tokenu do wystawiania żądania odciążania zapisu do docelowej jednostki LUN. Menedżer kopiowania przenosi dane ze źródłowej jednostki LUN do docelowej jednostki LUN w tej samej macierzy magazynowej.
Operacja ODX z dwoma serwerami
W konfiguracji dwóch serwerów istnieją dwa serwery i wiele macierzy magazynowych zarządzanych przez tego samego menedżera kopiowania.
- Jeden serwer (lub maszyna wirtualna) jest hostem źródłowej jednostki LUN, a drugi serwer (lub maszyna wirtualna) jest hostem docelowej jednostki LUN. Serwer źródłowy współużytkuje źródłową jednostkę LUN z klientem aplikacji za pośrednictwem protokołu SMB, a serwer docelowy również współużytkuje docelową jednostkę LUN z klientem aplikacji za pośrednictwem protokołu SMB. W związku z tym klient aplikacji ma dostęp zarówno do źródłowej jednostki LUN, jak i docelowej jednostki LUN.
- Źródłowe i docelowe macierze magazynowe są zarządzane przez tego samego menedżera kopii w konfiguracji sieci SAN.
- Z systemu klienckiego aplikacji system odciążania wysyła żądanie odczytu z odciążeniem do źródłowej jednostki LUN i odbiera token ze źródłowej jednostki LUN, a następnie wysyła żądanie zapisu z odciążeniem z tokenem do docelowej jednostki LUN. Menedżer kopiowania przenosi dane ze źródłowej jednostki LUN do docelowej jednostki LUN w dwóch różnych macierzach magazynowych w dwóch różnych lokalizacjach.
Migracja ogromnych danych
Masowa migracja danych to proces importowania dużej ilości danych, takich jak rekordy bazy danych, arkusze kalkulacyjne, pliki tekstowe, zeskanowane dokumenty i obrazy do nowego systemu. Migracja danych może być spowodowana uaktualnieniem systemu przechowywania, nowym silnikiem bazy danych lub zmianami w aplikacji lub w procesie biznesowym. Funkcja ODX może służyć do migrowania danych ze starszego systemu magazynu do nowego systemu magazynu, gdy menedżer kopii nowego systemu może również zarządzać starszym systemem.
- Jeden serwer jest hostem starszego systemu magazynu, a drugi serwer jest hostem nowego systemu magazynowania. Serwer źródłowy udostępnia źródłową jednostkę LUN jako klienta aplikacji do migracji danych za pośrednictwem protokołu SMB, a serwer docelowy udostępnia docelową jednostkę LUN jako klienta aplikacji do migracji danych za pośrednictwem protokołu SMB. Klient aplikacji ma zatem dostęp zarówno do źródłowej, jak i docelowej jednostki LUN.
- Starszy system magazynowania i nowy system magazynowania są zarządzane przez tego samego menedżera kopii w konfiguracji sieci SAN.
- Z systemu klienckiego aplikacji do migracji danych, aplikacja do wykonywania odciążających operacji kopiowania wysyła żądanie odczytu do źródłowego LUN i odbiera token od źródłowego LUN. Następnie aplikacja wysyła żądanie zapisu z tokenem do docelowej jednostki LUN. Menedżer kopiowania przenosi dane ze źródłowej jednostki LUN do docelowej jednostki LUN w dwóch różnych systemach magazynowania w dwóch różnych lokalizacjach.
- Migracja dużych ilości danych może być również obsługiwana z jednym serwerem w tej samej lokalizacji.
Host-Controlled Transfer danych w urządzeniu pamięci warstwowej
Urządzenie magazynu warstwowego kategoryzuje dane na różne typy nośników magazynowych, aby zmniejszyć koszty, zwiększyć wydajność i rozwiązać problemy z pojemnością. Kategorie mogą być oparte na wymaganych poziomach ochrony, wymaganiach dotyczących wydajności, częstotliwości użycia i innych zagadnieniach.
Strategia migracji danych odgrywa ważną rolę w końcowym wyniku strategii magazynowania warstwowego. Funkcja ODX umożliwia migrację danych kontrolowaną przez hosta w warstwowym urządzeniu magazynującym. W poniższym przykładzie opisano funkcję ODX na dwupoziomowym urządzeniu pamięci:
- Serwer jest hostem systemu magazynowania warstwowego. Źródłowa jednostka LUN to urządzenie magazynujące warstwy 1, a docelowa jednostka LUN jest urządzeniem magazynu warstwy 2.
- Ten sam menedżer kopiowania zarządza wszystkimi urządzeniami magazynowymi warstwowymi.
- Aplikacja do migracji danych z systemu serwera wysyła żądanie odciążenia odczytu do źródłowej jednostki LUN i odbiera token ze źródłowego LUN. Następnie ta aplikacja wysyła żądanie odciążania zapisu z tokenem do docelowej jednostki LUN. Menedżer kopiowania przenosi dane z dysku źródłowego LUN do docelowego LUN, wykorzystując dwa różne urządzenia pamięci masowej różnych poziomów.
- Po zakończeniu zadania migracji danych aplikacja usuwa dane z urządzenia magazynu warstwy 1 i odzyskuje miejsce do magazynowania.