Udostępnij przez


Blokowanie klonowania w systemie plików ReFS

Klonowanie bloków powoduje, że system plików skopiuje zakres bajtów plików w imieniu aplikacji, gdzie plik docelowy może być taki sam jak plik źródłowy lub inny niż. Tradycyjne operacje kopiowania, niestety, są kosztowne, ponieważ wyzwalają kosztowne operacje odczytu i zapisu w podstawowych danych fizycznych.

Klonowanie blokowe w systemie plików ReFS wykonuje jednak kopie jako operację metadanych o niskich kosztach, a nie odczytywanie danych z plików i zapisywanie ich w plikach. Ponieważ system plików ReFS umożliwia wielu plikom współużytkowanie tych samych klastrów logicznych (lokalizacji fizycznych na woluminie), operacje kopiowania muszą tylko ponownie mapować region pliku na oddzielną lokalizację fizyczną, konwertując kosztowną, fizyczną operację na szybką, logiczną. Umożliwia to szybsze wykonywanie kopii i generowanie mniejszej ilości operacji we/wy do magazynu bazowego. To ulepszenie przynosi również korzyści z obciążeń wirtualizacji, ponieważ .vhdx operacje scalania punktów kontrolnych są znacznie przyspieszane podczas korzystania z operacji klonowania bloków. Ponadto, ponieważ wiele plików może współużytkować te same klastry logiczne, identyczne dane nie są przechowywane fizycznie wiele razy, co zwiększa pojemność magazynu.

Jak to działa

Klonowanie blokowe w systemie plików ReFS konwertuje operację danych pliku na operację metadanych. W celu dokonania tej optymalizacji system plików ReFS wprowadza liczby odwołań do metadanych dla skopiowanych regionów. Ten licznik odwołań rejestruje liczbę odrębnych regionów pliku odwołujących się do tych samych regionów fizycznych. Dzięki temu wiele plików może współużytkować te same dane fizyczne:

Pokaż aktualizacje liczby odwołań, gdy wiele plików odwołuje się do tego samego regionu

Zachowując liczbę odwołań dla każdego klastra logicznego, system plików ReFS nie przerywa izolacji między plikami: zapisy w współdzielonych regionach wyzwalają mechanizm przydziału podczas zapisu, w którym system plików ReFS przydziela nowy region dla przychodzącego zapisu. Ten mechanizm zachowuje integralność udostępnionych klastrów logicznych.

Example

Załóżmy, że istnieją dwa pliki, X i Y, w których każdy plik składa się z trzech regionów, a każdy region jest mapowany na oddzielne klastry logiczne.

Dwa pliki, z których każdy ma trzy odrębne regiony, mapowane na regiony o liczbie odniesień 1

Teraz załóżmy, że aplikacja wykonuje operację klonowania bloku z pliku X do pliku Y, aby regiony A i B zostały skopiowane przy przesunięciu regionu E. W rezultacie system plików będzie miał następujący stan:

Liczba odwołań pokazuje 2 dla zablokowanego regionu klonowania

Ten stan systemu plików ujawnia pomyślną duplikację sklonowanej części bloku. Ponieważ system plików ReFS wykonuje tę operację kopiowania, aktualizując tylko mapowania VCN na LCN, żadne dane fizyczne nie były odczytywane ani nie były zastępowane przez dane fizyczne w pliku Y. Pliki X i Y teraz współdzielą klastry logiczne, co jest odzwierciedlone przez licznik odwołań w tabeli. Ponieważ żadne dane nie zostały fizycznie skopiowane, system plików ReFS zmniejsza zużycie pojemności na woluminie.

Teraz załóżmy, że aplikacja próbuje zastąpić region A w pliku X. System plików ReFS duplikuje region udostępniony, odpowiednio zaktualizuj liczbę odwołań i wykonaj zapis przychodzący w nowo zduplikowanym regionie. Zapewnia to zachowanie izolacji między plikami.

Izolacja zachowana przez zapisanie w nowym regionie G i aktualizowanie liczników ref

Po zmodyfikowaniu zapisu region B jest nadal współużytkowany przez oba pliki. Jeśli region A był większy niż klaster, tylko zmodyfikowany klaster zostałby zduplikowany, a pozostała część pozostałaby udostępniona.

Ograniczenia funkcjonalności i uwagi

  • Region źródłowy i docelowy musi rozpoczynać się i kończyć na granicy klastra.
  • Sklonowany region musi mieć długość mniejszą niż 4 GB.
  • Maksymalna liczba regionów plików, które można mapować na ten sam region fizyczny, wynosi 8175.
  • 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 być w stanie kontynuować, dzieląc operację klonowania bloku 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 .
  • Jeśli plik źródłowy jest rozrzedny, plik docelowy musi być również rozrzedny.
  • Operacja klonowania bloku przerywa współdzielone blokady oportunistyczne (znane również jako blokady oportunistyczne poziomu 2).
  • Wolumin ReFS musi być sformatowany z systemem Windows Server 2016, a jeśli klaster trybu failover jest używany, poziom funkcjonalności klastrowania musi być systemem Windows Server 2016 lub nowszym w czasie formatowania.
  • Począwszy od kompilacji systemu Windows 11 24H2 i Windows Server 2025, klonowanie bloków odbywa się natywnie w obsługiwanych operacjach kopiowania systemu Windows.

Zobacz także