Czym jest ReFS i czy zastąpi NTFS?

Chciałbym Wam dziś kilka słów napisać na temat systemu plików ReFS (Resilient File System) , który z jednej strony nie jest niczym nowym - pojawił się w Windows Server 2012 oraz sporo pisaliśmy o nim w kontekście Windows 8.

Ale też nie jest czymś, co jest stosowane na szeroką skalę i nadal wiele osób nie wie, czym jest oraz może co ważniejsze - kiedy powinniśmy z niego skorzystać . Mój post postara się odpowiedzieć na to pytanie.

Post jest również pewnym wstępem teoretycznym do następnego posta :) Ale pomyślałem, że bez tego wstępu następnym razem byłoby mi trochę trudniej omówić kwestie przyspieszenia pewnych operacji (które z NTFS mogły trwać ponad 20 minut, a z ReFS i Windows Server 2016 TP3 trwają teraz sekundę).

Trochę historii, czyli NTFS i FAT

Wszyscy bardzo mocno przyzwyczailiśmy się do systemu plików NTFS (New Technology File System), który jest z nami od czasów... Windows NT 3.1 i jest on domyślnym systemem plików dla rodziny Windows NT.

Jest to system wymyślony i stworzony przez Microsoft (choć bardzo mocno inspirowany IBMowym systemem HPFS z OS/2). Jest też on systemem, który powstał na potrzeby nowoczesnych systemów operacyjnych i spore ograniczenia systemów z rodziny FAT (File Allocation Table).

Tak jak wspomniałem - system NTFS pojawił się z Windows NT 3.1 (w 1993 roku), a aktualnie używana jest jego wersja 3.1 (wydana razem z Windows XP).

Sam system w dużym skrócie charakteryzuje się wsparciem dla metadanych (opisujących pliki), specjalnymi strukturami, dzięki którym jest szybki, wydajny i dobrze wykorzystujący przestrzeń dyskową, wspiera również obsługę dodatkowych rozszerzeń - takich jak np. ACLe (Access Control Lists) czy VSS (Volume Shadow Copy Service).

Czym jest ReFS?

Jedno z pierwszych pytań jakie się pojawia kiedy słyszy się o nowym systemie plików (a takim jest ReFS) to czy ma być on bezpośrednim i całkowitym następcą dla poprzednika (czyli NTFS)?

Ale jak możecie się domyślać (i też już to wspomniałem) - skoro ReFS pojawił się już w Windows Server 2012, a NIE jest nadal w Windows Server 2016 (Technical Preview 3) domyślnym systemem plików - to znaczy, że coś jest na rzeczy...

Duże składnice danych

Otóż system plików ReFS o ile nawet czerpał trochę z idei NTFS to powstał jednak w trochę innym celu. Świat mocno się zmienił od czasów Windows NT 3.1, a chyba takim najbardziej widocznym elementem jest ilość danych jakie teraz posiadamy i przetwarzamy na naszych komputerach. A co dopiero kiedy pomyślicie o serwerach w Waszych firmach albo jeszcze lepiej - o serwerach obsługujących miliony Klientów na świecie (chmura!).

Dlatego właśnie ReFS sprawdzi się idealnie jako system plików tam, gdzie chcemy przetwarzać duże ilości danych/plików oraz chcemy te dane udostępniać lub współdzielić (serwer plików).

Co powiecie na obsługę 1 jottabajta (YB) ? Ja w sumie też pierwsze słyszę o takim pojęciu, a teoretycznie ReFS może obsługiwać tak duże dyski... Ale jeśli 1 gigabajt (1 GB) to 109, to 1 YB to 1024. Ciężko nawet w dzisiejszych czasach ogarnąć taką skalę. Ja słyszę czasem o przetwarzaniu danych w postaci petabajtów (PB). I o ile 1 PB to aż 1000 TB (terabajtów), to 1 YB zmieści aż 1000 * 1000 * 1000 PB (albo 1000 * 1000 eksabajtów, ewentualnie 1000 zettabajtów)...

Odporność na awarie

Nie chcę wchodzić zbyt głęboko w szczegóły systemu plików ReFS (zrobił to świetnie kolega PFE - Martin Lucas już jakiś czas temu), ale jego bardzo ważną cechą jest "samonaprawialność", kiedy to dysk z tym systemem plików potrafi rozpoznać że coś jest nie tak z danymi i naprawić je w locie.

Może niektórym wyda się to dziwne, ale z ReFS możecie zapomnieć o narzędziu CHKDSK, które przez wielu było bardzo znienawidzone - zwłaszcza w kontekście czasu działania na dużych dyskach (teraz myślicie o jego odpaleniu na dysku 1 YB???).

A nawet chkdsk nie zadziała na dysku z ReFS i pokaże Wam taki miły komunikat :)

W ekstremalnych sytuacjach, jeśli ReFS nie będzie w stanie sam naprawić danych to odizoluje je od zdrowej części dysku, tak aby użytkownicy nadal mieli do nich dostęp.

Co z NTFS?

W tym wyżej opisanym kontekście możecie się już domyślać, że nadal NTFS zostanie głównym i podstawowym systemem plików dla dysków systemowych czy nawet dla niezbyt dużych składnic danych. Zwłaszcza, że w Windows Server 2012 wprowadziliśmy też wiele usprawnień do wspomnianego wcześniej CHKDSK (sugeruję doczytać w TechNet).

Dzięki tym zmianom NTFS nadal będzie radził sobie świetnie, nawet i w instalacjach gdzie macie dyski wieloterabajtowe. Bo i czas naprawy się skrócił, ale też do NTFS wprowadzone zostały pewne mechanizmy samonaprawy.

Kompatybilność ReFS vs. NTFS

Sam ReFS został zbudowany tak, aby na poziomie API był kompatybilny z NTFS. Oznacza to tyle, że aplikacje, które do tej pory korzystały z plików leżących na NTFS (lokalnie czy zdalnie) nawet nie powinny się zorientować, że coś się zmieniło jeśli je przeniesiecie (te pliki) na dyski z ReFS.

Jest jednak trochę różnych funkcji i możliwości, które nie są wspierane w ReFS, a dostępne są tylko w NTFS. Jeśli odpalilibyście sobie fsutil dla dwóch dysków - z NTFS i ReFS i wylistowali co jest wspierane - to zobaczylibyście takie obrazki:

Więc jeśli chcielibyście używać czegoś zaznaczonego na żółto - to zostaje Wam na razie tylko NTFS. Aczkolwiek grupa produktowa regularnie pracuje nad tym, aby coraz więcej rzeczy było obsługiwanych również w ReFS.

Również dyski systemowe (boot/OS) nie mogą korzystać z ReFS i tam trzeba mieć je z NTFS. To samo dotyczy również funkcji deduplikacji dostępnej od Windows Server 2012 - ona też wymaga NTFS.

Z drugiej strony Storage Spaces bez problemu współpracują z ReFS (zostały do tego zaprojektowane). I na przykład jeśli stworzycie sobie dyski wirtualne w trybie Mirror i sformatujecie je z ReFS - to gdy tylko zostaną wykryte jakieś problemy na jednym z dysków, to ReFS sam zareaguje i podmieni błędne dane - tymi poprawnymi skopiowanymi z lustrzanej kopii :)

Podsumowując

Mam nadzieję, że dowiedzieliście się dziś czegoś nowego o ReFS, ale nawet jeśli nie - to zaproszę Was na następny post, w którym opowiem jak ReFS może drastycznie przyspieszyć pewne operacje w kontekście wirtualizacji i operacji na dyskach. Co powiecie na skrócenie czasu operacji z 18 minut do 1 sekundy? :) Zainteresowani? To zapraszam wkrótce do nowego posta.

A jeśli sami chcielibyście sprawdzić ReFS w akcji - to wystarczy pobrać sobie Windows Server 2012 R2 lub testową wersję Windows Server 2016 - i sprawdzić to sobie w labie.