Microsoft Windows DFS

Materiały dla prelegenta

DFS - co to jest?

Firma Microsoft wraz z nadejściem systemu NT 4.0 wprowadziła na rynek nowy „system plików”. Motto, które towarzyszy temu systemowi można zobaczyć na pierwszym slajdzie.

Wprowadzenie – cd.

Zajmijmy się analizą sytuacji przed wprowadzeniem DFS, czyli, po co on w ogóle jest potrzebny? Dostęp do zasobów w sieciach opartych, na Windows opiera się na stosowaniu konwencji UNC: \\serwer\sciezka do zasobu.

Powoduje to niestety konieczność pamiętania przez użytkownika, administratora dużej ilości zbędnych informacji dotyczących ilości serwerów z danymi, ich nazw, nazw udostępnionych udziałów, itp. Ponadto użytkownik dla swojej wygody mapuje te zasoby na stałe jako kolejne dyski w swoim systemie, ta metoda też ma wady ze względu na ograniczoną ilość liter w alfabecie. Jednym słowem nie jest to najszczęśliwsze rozwiązanie, szczególnie w porównaniu z rozwiązaniami stosowanymi z sukcesem przez innych producentów.

Microsoft doszedł do wniosku, że coś należałoby zmienić.

DFS – założenia

Wymyślono, żeby na istniejąca strukturę fizyczną sieci wraz z dotychczasowym rozwiązaniem udostępniania zasobów nałożyć jakąś logiczną nakładkę, która pozwoli na łatwiejszy dostęp do danych i uwolni korzystających z myślenia o fizycznej strukturze sieci. Tak właśnie powstała koncepcja DFS.

Koncepcja jednego drzewa zasobów w sieci, które spinałoby wszystkie udostępnione zasoby w jedna strukturę.

DFS – „ładny” rysunek

Tutaj widać mniej więcej, co chcemy uzyskać. Po prawej stronie jest widok od strony użytkownika, dla którego jest to pojedyncze drzewo plików, folderów ( a informacja o fizycznej strukturze jest niewidoczna).

Natomiast po prawej stronie widać jak to jest zorganizowane od strony administratora. Kolejne foldery są tak naprawdę zamapowanymi udziałami z innych serwerów. Informacja ta jest dostępna tylko administratorowi. Dla niektórych zasobów (\\public\users\bob) widać, że jest możliwość dublowania udziałów, co to znaczy o, po co to jest zaraz zostanie objaśnione.

DFS – cechy i zalety

To jest lista niewątpliwych zalet, którymi się szczyci Microsoft. Jak się okaże w trakcie prezentacji część z nich jest zbyt szumnie nazwana atutem, bądź nowoczesnym rozwiązaniem. Słuchaczom znającym system AFS, powinna się narzucić duża zbieżność w zakresie terminologii, jak również przyjętych założeń.

Widać, że projektanci wzorowali się na tym systemie w wielu aspektach, ale niestety większość z nich potraktowali „po łebkach”.

- jednolita struktura – chodzi o to, że teraz wszystkie dane są dostępne w jednym drzewie, dzięki temu ułatwiamy pracę użytkowników

- przejrzystość nazw – użytkownicy teraz nie muszą pamiętać nazw wszystkich serwerów w sieci i udostępnionych udziałów

- elastyczne zarządzanie przechowywaniem – teraz administratorzy mogą w łatwy sposób dodać dodatkowe woluminy dyskowe, zwiększyć pojemność dysków, folderów, zmienić organizację fizyczną sieci, a wszystko to w niezauważalny sposób dla użytkownika

- administracja graficzna – interfejs graficzny dla administratora- to nie wymaga komentarza

- dzielenie obciążenia – możliwość podłączenia „lustrzanych” udziałów do jednego miejsca w gałęzi drzewa DFS, dzięki temu klient losowo wybiera udział z którego korzysta, dzięki temu równoważymy obciążenie (ale żeby nie było zbyt pięknie to więcej na ten temat będzie później)

- dostępność – dzięki wykorzystaniu „mirrorów” z poprzedniego punktu w przypadku awarii jednego serwera, użytkownik automatycznie przełączy się na korzystanie z drugiego serwera, zatem nie dotyczą już go również awarie serwerów

- integracja zabezpieczeń – tutaj Microsoft lekko przesadził, pisze o listach ACL, kontroli dostępu, a tak naprawdę jej nie oferuje. Więcej na ten temat będzie trochę później, ale nie wygląda to tak różowo....

- inteligentne buforowanie na kliencie – inteligencja klienta i jej wpływ na odciążenie serwera i sieci, zostanie później opisana dokładnie, więc pozwolę sobie drogiego słuchacza jeszcze chwilę potrzyma w niepewności

- wsparcie dla starszych platform Win9x – to jak rozumiem również nie wymaga komentarza szczególnie w sieciach heterogenicznych :-)

- interoperatywnośc z innymi sieciowymi systemami operacyjnymi – dzięki interoperatywności z innymi sieciowymi systemami operacyjnymi do drzewa DFS możemy podłączyć co tylko nam się podoba jednak pod warunkiem, że:

* to coś wspiera SMB jako protokół wymiany danych :-)

* lub Windows 2000 posiada interfejs do tego „czegoś” i może pełnić rolę pośrednika pomiędzy „tym czymś” i DFS

DFS – wady?


Kilka wad ten system rzeczywiście ma, szerzej zostaną one opisane w dalszej części tej prezentacji. A na końcu podsumowane.

DFS- jak to działa?

DFS jest zbudowany w architekturze klient-serwer. Usługa serwera jest uruchamiana na serwerze Windows NT lub Windows 2000. Dodatkowo jest zainstalowana konsola administracyjna. Po stronie użytkownika nie zmienia się nic. Zasoby dalej są dostępne przy zastosowaniu konwencji UNC, tylko zamiast nazwy serwera używa się nazwy węzła DFS.

DFS – od strony serwera

Usługa serwera DFS, może zostać zainstalowana w dwóch trybach: autonomicznym lub w domenie. Sposób instalacji a zarazem wersja DFS zależy od wersji systemu operacyjnego serwera, który będzie serwerem DFS. Starsza wersja DFS 4.x jest instalowana na serwerach NT 4.0. Na takim serwerze dane konfiguracyjne są przechowywane w rejestrze. Istnieje możliwość skonfigurowania tylko jednego drzewa w ramach jednego serwera NT udostępniającego usługę DFS. Nowsza wersja DFS została oparta o system operacyjny Windows 2000. W tym przepadku dane o konfiguracji są przechowywane w Active Directory. AD nie narzuca ograniczeń do jednego wystąpienia drzewa w strukturze, dlatego przy pomocy AD można rozpropagować wiele struktur DFS w ramach organizacji. Jak widać w tej implementacji usługa DFS nie jest ściśle przypisana do jednego serwera i zależna od jego kondycji. Tutaj informacja o drzewach DFS jest przenoszona wraz z AD, a więc jest dostępna w każdym miejscu gdzie jest dostępny kontroler domeny Windows 2000.

Drzewo DFS składa się z szeregu liści, które są następującego rodzaju:

InterDFSlink – to są poprostu linki łączące liść w drzewie DFS z jakimś zasobem na innym serwerze

Midlevel junction – podobno jeszcze nie zaimplementowane, choć po przeanalizowaniu algorytmu mapowania ścieżki DFS na prawdziwy zasób wygląda na to, że to już działa. W każdym bądź razie chodzi o to, że dzięki midlevel junction możemy stworzyć strukturę następującego typu(patrz rysunek za dwa slajdy).

\\serwer\public\intranet -> \\IIS\Root\Content

\\IIS\Root\Content\CorpInfo -> \\Marketing\Info\Corporate.html

chodzi o to, żeby nie było takich skoków z jednego serwera na drugi, tylko, żeby w DFSie można było przechowywać informację o mapowaniu każdego liścia (nawet takim pośrednim), czyli żeby na poziomie DFSa była informacja, że: \\serwer\public\intranet\CorpInfo -> \\Marketing\info\Corporate.html. Ma to za zadanie przyspieszyć proces wyszukiwania.

Alternate volumes – repliki, czyli lustrzane foldery, które można podczepić w to samo miejsce struktury, niestety DFS nie ma mechanizmów pozwalających na kontrolę spójności danych, ma ją tylko systemowa replikacja

Downlevel volumes – są to takie liście, które nie mogą być już dalej zagnieżdżone. Przykładem tu może być udział Netware, który da się zmapować, ale ze względu na różnice protokołów, możemy korzystać z danych, ale nie możemy zaimplementować wszystkiego co nam daje DFS, zatem taki liść został naznaczony.

PKT (Partition Knowledge Table) – informacja o połączeniach, jest to prosta tablica zawierająca pary liść drzewa DFS, jego mapowanie, więcej na ten temat za kilka slajdów

Kontrola dostępu do zasobów – tak jak już wcześniej wspomniałem Microsoft szczyci się poważnymi zintegrowanymi zabezpieczeniami. Bezpieczeństwo dostępu opiera się na listach ACL. Ale nie daje tak pełnej funkcjonalności jak byśmy się spodziewali, więcej na ten temat za kilka slajdów

DFS – ładny rysunek po raz drugi

Tutaj można jeszcze raz omówić wszystkie rodzaje obiektów w drzewie DFS na podstawie wcześniejszych informacji.

PKT – serwer cd.

PKT, prosta tablica przechowywująca informację o mapowaniach, oprócz pary liść – mapowanie, przechowuje również informacje o czasie wygaszania TTL.

Tablica PKT jest przechowywana zarówno na serwerze (rejestr, AD), jak również na stacjach klienckich (cache w RAMie). Na kliencie wszystkie mapowania rozwiązane przez serwer są przechowywane w lokalnej tablicy, i przy następnym odwołaniu do zasobów w pierwszej kolejności są stąd pobierane. Żeby uniknąć przedawnienia danych został wprowadzony czas TTL, po którym dane te znikają z bufora lokalnego i wtedy jeśli klient będzie chciał skorzystać z danego mapowania, musi jeszcze raz o nie zapytać serwer DFS.

DFS – mapowanie nazw logicznych do adresów fizycznych

Algorytm jest dość dobrze pokazany na slajdach, więc tutaj się ograniczę do opisu uzupełniającego. Klient zwraca się do serwera o rozwiązanie nazwy logicznej, serwer szuka najdłuższej ścieżki którą posiada w swojej tablicy, PKT i podstawia ją jako część ścieżki do zasobu, wynik zwraca klientowi DFS. Klient otrzymuje mapowanie do fizycznego zasobu.

Jak to jest w przypadku replik? Jeśli mamy starszą implementację DFS (NT) to serwer DFS zwróci listę replik, które są podłączone do danej ścieżki logicznej. Klient DFS wybierze losowo jedną z replik z listy i spróbuje się z nią połączyć. Jeśli mamy nowszą implementację DFS (W2K), to serwer zwróci dwie listy. Pierwsza lista (priorytetowa) zawiera repliki, które są w tym samym segmencie sieci, co klient DFS (ip + maska sieci), natomiast druga lista będzie zawierała wszystkie pozostałe repliki. Klient, będzie wybierał losowo repliki najpierw z listy priorytetowej, a następnie z drugiej listy, aż mu się z sukcesem uda podłączyć do jednej z replik. Dzięki takiemu rozwiązaniu, klient w pierwszej kolejności zawsze będzie się starał korzystać z replik znajdujących się „blisko” niego.

Przełączanie pomiędzy replikami w przypadku awarii

Scenariusz pierwszy

Klient przegląda zasoby, nagle serwer „znika” z sieci, awaria prądu, interfejsu sieciowego. Klient po jakimś czasie (zależnym od protokołu sieciowego, odległości, WAN, LAN i innych ustawień) zorientuje się, że serwer jest fizycznie niedostępny. Rozpocznie wtedy procedurę przełączania się na inną replikę, w tym celu przegląda lokalną tablicę PKT i szuka w niej wpisów replik, jeśli znajdzie próbuje się połączyć, jak nie znajdzie to prosi serwer DFS o listę replik, jak ją dostanie, to próbuje się połączyć, jeśli jej nie dostanie to zwróci błąd (i ten błąd otrzyma również użytkownik)

Jeśli uda się znaleźć replikę to klient podłączy się od razu do nowej, użytkownik zobaczy wtedy nową zawartość folderu, (jeśli były one zsynchronizowane to pół biedy, ale serwer DFS nie dba o sprawdzenie tego faktu...)

Scenariusz drugi

Podobnie jak w pierwszym, tylko serwer z udziałami nagle przestaje udostępniać dany zasób, bo ma awarię jednego z dysków, ktoś zmienił uprawnienia etc.

Klient od razu stwierdza, że zasób jest niedostępny i rozpoczyna procedurę przełączania ze skutkami jak powyżej

Scenariusz trzeci i czwarty

Są one analogiczne do poprzednich, tylko dochodzi założenie, że klient nie tylko przegląda zawartość zasobów, ale również ma otwarty plik.

W tym momencie ze strony DFS procedura wygląda dokładnie tak samo, natomiast cała odpowiedzialność za prawidłowe zachowanie się w momencie utraty kontaktu z plikiem leży po stronie aplikacji na kliencie, która z pliku korzysta. Podobnie DFS nie obsługuje zadnych blokad, znaczników otwarcia plików itp., ta odpowiedzialność jest po stronie systemu plików.

Zabezpieczenia

Tak jak już wcześniej wspomniałem, DFS jest chroniony listami ACL, zawierającymi dość dużą możliwość konfiguracji zabezpieczeń. Nie będę się tutaj rozwodził o listach ACL, bo zakładam ich znajomość u czytająccego. Natomiast chciałbym powiedzieć, że mechanizm autoryzacji w Windowsach jest dwustopniowy. Pierwszy jest na poziomie udziałów, tzn. dając komuś prawa do czytania udziału, mamy tylko i wyłącznie pewność, że on zobaczy ten udział, nic więcej na temat zawartości i dostępu do niej nie możemy powiedzieć. Dlatego, że drugi stopień autoryzacji jest na poziomie zasobów (katalogi, pliki w systemie) i administracja nim leży po stronie serwera z udziałami. Zarządzanie w DFS pozwala tylko przypisywać prawa tylko udziałom, nie ma możliwości z poziomu DFSa zarządzać na poziomie zasobów, więc określenie docelowych praw zależy i tak tylko i wyłącznie od administratora danego serwera zdalnego. Nie ma możliwości dziedziczenia praw z DFSa w głąb nawet, jeśli jest to ten sam obszar administracyjny z tymi samymi prawami.

Architektura i opis bibliotek

Architektura jest dosyć przejrzysta, bardziej szczegółowe dane oczywiście są niedostępne. Dla ewentualnych programistów jest dostępna biblioteka netapi32.dll oferująca interfejs do DFS, przy pomocy którego można zarządzać drzewem DFS. To na wypadek gdyby ktoś chciał napisać własny program do zarządzania.

Algorytm działania raz jeszcze

Jak widać klient i serwer DFS do rozwiązywania nazw i „”dogadania się” używają RPC, natomiast do samej wymiany danych protokołu SMB. Pokazane na slajdzie 4 biblioteki, są to w zasadzie najważniejsze biblioteki odpowiedzialne za całą komunikację.

Jest tutaj powtórzony cały algorytm komunikacji, ale sądzę, że po wcześniejszych objaśnieniach nie wymaga on więcej komentarza.

Podsumowanie – zalety

Zebrałem listę niewątpliwych zalet, jest ona bardziej okrojona niż ta z Microsoftu, która została zaprezentowana na początku. Uważam, osobiście, że DFSa można i da się używać, ale nie koniecznie do takich górnolotnych zastosowań jak proponuje Microsoft. Jest on natomiast bardzo dobry, jeśli chodzi o ułatwienie pracy użytkownikom końcowym w sieci.

Podsumowanie – wady i zalety

Nazwałem tak ten slajd, bo wg mnie nie wszystko to, co Microsoft podaje jako zaleta jest nią rzeczywiście, dla mnie są małe wady.

Tak jak już wcześniej wspomniałem mamy słabą możliwość globalnego zarządzania zabezpieczeniami, replikacja świetnie się nadaje do statycznych danych, które będą raczej na 100% spójne. Algorytm replikacji, jest bardzo mało zaawansowany, kopiuje tylko całe pliki, w przypadku konfliktu wygrywa najświeższy plik, są zaimplementowane 30 minutowe stemple czasowe. Łatwo jest zauważyć, że nie można go wykorzystać w środowisku, gdzie wiele osób mogłoby na różnych replikach edytować te same dane, ponieważ nie można zagwarantować ich spójności. Równoważenie obciążenia jest również mocno okrojone, tylko do losowego przydziału do replik. Nie stosuje zadnych algorytmów opartych na sprawdzaniu właściwego obciążenia poszczególnych serwerów w oparciu o: zliczanie sesji klienckich, czasu trwania sesji, czy obciążenia).

DFS – zastosowania wg Microsoftu

Tu nie będę zbytnio komentował jest to obrazek zaczerpnięty z dokumentacji (pozycja 2). Wnikliwy obserwator po zapoznaniu się z wadami i zaletami DFSa z tej prezentacji sam będzie w stanie odnaleźć wąskie gardła takiego rozwiązania.

Materiały

Autor prezentacji, oprócz wymienionych materiałów korzystał również z własnych doświadczeń. Tak się akurat złożyło, że miałem możliwość wdrożyć i potestować DFS na żywym organizmie. W przypadku jakichkolwiek pytań służę informacjami.

Tomasz Chudzik

T.chudzik@students.mimuw.edu.pl