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.
Operacja klonowania bloku instruuje system plików do skopiowania zakresu bajtów pliku w imieniu aplikacji. Plik docelowy może być taki sam jak plik źródłowy lub różnić się od niego.
System plików zarządza mapowaniami klastrów i zakresówi może być w stanie wykonać kopię, zmieniając numer klastra wirtualnego (VCN) na mapowania numeru klastra logicznego (LCN) jako operację metadanych o niskich kosztach, zamiast odczytywać i zapisywać bazowe dane pliku. Pozwala to na szybsze ukończenie kopiowania i generowanie mniejszej ilości operacji we/wy do magazynu bazowego. Ponadto wiele plików może teraz współużytkować klastry logiczne po sklonowaniu bloku, co pozwala zaoszczędzić pojemność, nie przechowując identycznych klastrów wiele razy na dysku.
Operacja klonowania bloku nie narusza izolacji zapewnianej między plikami. Po zakończeniu klonowania bloku operacje zapisu w pliku źródłowym nie są wyświetlane w miejscu docelowym ani odwrotnie.
Klonowanie bloków jest dostępne tylko w systemie plików systemu plików ReFS począwszy od systemu Windows Server 2016. Począwszy od aktualizacji systemu Windows 11 Moment 5 (KB5034848) i nowszych wersjach kompilacji klienta systemu Windows i systemu Windows Server, klonowanie bloków odbywa się natywnie w obsługiwanych operacjach kopiowania systemu Windows.
Blokowanie klonowania w systemie plików ReFS
Począwszy od systemu Windows Server 2016, system plików ReFS implementuje klonowanie bloków przez ponowne mapowanie klastrów logicznych (czyli lokalizacji fizycznych na woluminie) z regionu źródłowego do regionu docelowego. Następnie używa mechanizmu przydzielania pamięci przy zapisie, aby zapewnić izolację pomiędzy tymi obszarami. Regiony źródłowe i docelowe mogą znajdować się w tych samych lub różnych plikach.
Ta implementacja wymaga, aby początkowe i końcowe pozycje pliku były wyrównane do granic klastra. W systemie plików ReFS począwszy od systemu Windows Server 2016 klastry mają domyślnie rozmiar 4 KB, ale opcjonalnie można ustawić na 64 KB. Rozmiar klastra jest parametrem dla całego woluminu ustawionym w czasie formatowania.
Wpływ na rozmiar klastra i wydajność
Rozmiar klastra woluminu ReFS bezpośrednio wpływa na zachowanie klonowania bloków i charakterystykę wydajności:
- Domyślny rozmiar klastra: 4 KB (zalecane w przypadku większości obciążeń)
- Alternatywny rozmiar klastra: 64 KB (odpowiedni dla dużych obciążeń we/wy sekwencyjnych)
Rozmiar klastra określa stopień szczegółowości, w którym występują operacje klonowania bloków i kopiowania na zapis. Gdy dokonywany jest zapis w regionie plików, który dzieli klastry z innym plikiem (po klonowaniu bloków), system plików ReFS używa mechanizmu alokacji podczas zapisu, który działa na poziomie klastra.
- Tylko zmodyfikowany klaster jest duplikowany i zapisywany w nowej lokalizacji fizycznej
- Klastry niezmodyfikowane w tym samym regionie pozostają współużytkowane
- To zachowanie ma zastosowanie niezależnie od tego, czy klonowanie bloków zostało zainicjowane jawnie za pośrednictwem FSCTL_DUPLICATE_EXTENTS_TO_FILE czy automatycznie przez system (Windows 11 Moment 5 i nowsze)
Zagadnienia dotyczące wydajności
Wybór rozmiaru klastra ma istotny wpływ na wydajność i zużycie miejsca:
- Klastry 4 KB: zapewniają lepszą wydajność przestrzeni dla obciążeń z małymi losowymi zapisami (KB do MB zakresu), ponieważ tylko 4 KB jest duplikowane dla zmodyfikowanego klastra. Może to jednak spowodować częstsze operacje kopiowania na zapis.
- Klastry 64 KB: Zmniejszenie nadmiaru metadanych i poprawa wydajności operacji sekwencyjnych we/wy, ale może skutkować duplikacją do 64 KB dla każdego zapisu w regionie udostępnionym, nawet jeśli zapis jest mniejszy niż 64 KB.
Rozmiar klastra jest określany w czasie formatowania i nie można go zmienić bez ponownego formatowania woluminu. Aby sprawdzić bieżący rozmiar klastra woluminu Systemu plików ReFS, użyj następującego polecenia:
fsutil fsinfo refsinfo <volume>
W przypadku woluminów sformatowanych automatycznie przez system Windows (takich jak w przypadku włączenia klonowania bloków) system używa domyślnego rozmiaru klastra 4 KB, chyba że jawnie skonfigurowano inaczej podczas tworzenia woluminu.
Ograniczenia i uwagi
- Regiony źródłowe i docelowe muszą rozpoczynać się i kończyć na granicy klastra.
- Sklonowany region musi mieć długość mniejszą niż 4 GB.
- Region docelowy nie może wykraczać poza koniec pliku. Jeśli aplikacja chce rozszerzyć miejsce docelowe przy użyciu sklonowanych danych, musi najpierw wywołać metodę SetEndOfFile.
- Jeśli regiony źródłowe i docelowe znajdują się w tym samym pliku, nie mogą się nakładać. (Aplikacja może kontynuować, dzieląc operację klonowania bloków na wiele klonów blokowych, które już się nie nakładają).
- Pliki źródłowe i docelowe muszą znajdować się na tym samym woluminie systemu plików ReFS.
- Pliki źródłowe i docelowe muszą mieć to samo ustawienie Strumieni integralności (czyli strumienie integralności muszą być włączone w obu plikach lub wyłączone w obu plikach).
- Jeśli plik źródłowy jest rozrzedny, plik docelowy musi być również rozrzedny.
- Operacja klonowania bloku przerwie Udostępnione Blokady Oportunistyczne (znane również jako Blokady Oportunistyczne Poziom 2).
- Wolumen ReFS musi być sformatowany za pomocą systemu Windows Server 2016 lub nowszego, a jeśli używany jest klaster Windows z trybem przełączania awaryjnego, poziom funkcjonalności klastrowania musi być ustawiony na Windows Server 2016 lub nowszy w momencie formatowania.
Przykład
Załóżmy, że mamy dwa pliki, X i Y, w których każdy plik składa się z 3 odrębnych regionów. Każdy region plików jest przechowywany w odrębnym regionie woluminu. System plików przechowuje informację, że każdy z tych obszarów woluminów jest przywołany w jednym obszarze pliku.
Teraz załóżmy, że aplikacja przeprowadza operację klonowania bloku z pliku X z regionów A i B do pliku Y na poziomie przesunięcia, na którym obecnie znajduje się E. Następujący stan systemu plików byłby wynikiem:
Dane w regionach A i B zostały skutecznie zduplikowane z pliku X do pliku Y poprzez zmianę mapowań z VCN na LCN w ramach woluminu ReFS. Zakresy dysków wspierające regiony A i B nie były odczytywane, ani zakresy dysków wspierające stare regiony E i F nie zostały nadpisane podczas operacji.
Pliki X i Y teraz współdzielą klastry logiczne na dysku. To jest odzwierciedlone w liczbie odniesień pokazanych w tabeli. Udostępnianie powoduje mniejsze zużycie pojemności woluminu niż w przypadku, gdy regiony A i B zostały zduplikowane na woluminie bazowym.
Teraz załóżmy, że aplikacja zastępuje region A w pliku X. System plików ReFS tworzy zduplikowaną kopię A, którą teraz nazwiemy G. ReFS następnie mapuje G na plik X i stosuje modyfikację. Zapewnia to zachowanie izolacji między plikami. Liczby odwołań są odpowiednio aktualizowane:
Po zmodyfikowaniu zapisu region B jest nadal udostępniany na dysku. Należy pamiętać, że jeśli region A był większy niż klaster, tylko zmodyfikowany klaster zostałby zduplikowany, a pozostała część pozostałaby udostępniona.
Zachowanie kopiowania przy zapisie
Mechanizm alokacji przy zapisie działa na poziomie klastrowym, co niebagatelnie wpływa na wydajność oraz zużycie przestrzeni dyskowej.
- Zapis jest mniejszy niż rozmiar klastra: zapis o dowolnym rozmiarze w udostępnionym klastrze (nawet 1 bajt) powoduje duplikowanie całego klastra. Przy domyślnym rozmiarze klastra 4 KB zapis 1 KB w udostępnionym regionie powoduje skopiowanie 4 KB.
- Zapisy obejmujące wiele klastrów: jeśli zapis obejmuje wiele klastrów, tylko zmodyfikowane klastry są zduplikowane. Na przykład zapis 8 KB z klastrami 4 KB duplikuje 2 klastry (łącznie 8 KB), podczas gdy ten sam zapis o pojemności 8 KB z klastrami 64 KB duplikuje 1 klaster (łącznie 64 KB).
- Duże operacje zapisu sekwencyjnego: w przypadku obciążeń, które często modyfikują duże regiony ciągłe po sklonowaniu, większe rozmiary klastrów (64 KB) mogą zmniejszyć obciążenie, minimalizując liczbę operacji kopiowania na zapis.
Ten stopień szczegółowości na poziomie klastra ma zastosowanie do wszystkich zapisów po klonowaniu bloków, w tym scenariuszy, w których system Windows 11 Moment 5 i nowsze automatycznie wykonuje klonowanie bloków podczas operacji kopiowania.