H IERARCHISCHE N AMENSR ÄUME 4. N AMEN ➜ Namen werden in einem VS in sog. Namensräumen angeordnet ➜ Man stellt einen Namensraum oft als Graph dar: • Blattknoten für benannte Entitäten, z. B. eine Datei, enthält ihre Adresse oder Zustand • Verzeichnisknoten mit einer Verzeichnistabelle: ein Paar pro Kante: (Knotenbezeichner : Kantenbeschriftung) • Wurzelknoten, i. d. R. einer pro Namensraum ➜ Namen werden in verteilten Systemen benutzt, um: • . . . Ressourcen gemeinsam zu nutzen • . . . Einheiten eindeutig zu identifizieren • . . . auf bestimmte Positionen zu verweisen • . . . u. a. Slide 1 Slide 3 ➜ Die Implementierung der Namenserzeugung, -Verwaltung und -Benutzung soll verteilt über mehrere Maschinen erfolgen ➜ Pfadname,z. B.: n0:<home,steen,mbox> = /home/steen/mbox ➜ Wir betrachten folgende drei Aspekte: • Aufbau, Benutzung und Implementierung benutzerfreundlicher Namenssysteme • Namensgebung und -Verwaltung für mobile Einheiten • Verteilte Speicherbereinigung (garbage collection) D REI N AMENSTYPEN B EISPIEL : DATEIEN ➜ Name – eine Zeichenkette, benutzt um auf eine Einheit (z. B. Computer, Drucker, Datei, Mailbox, Webseite, etc.) zu verweisen ➜ Es gibt drei wichtigste Namenstypen, die im Folgenden fett geschrieben sind ➜ Zugriff auf Einheiten: über die Namen ihrer Zugangspunkte (Adressen), z. B. IP-Adresse eines Webservers Slide 2 IN U NIX ➜ Namensgraph: Wurzel, Verzeichnisknoten, Blattknoten f. Dateien ➜ Graph-Implementierung – ein Teil des Dateisystems, z.B. in Unix: ➜ Einheiten können ihre Zugangspunkte wechseln, deshalb benutzt man auch andere als Adressen Namenstypen Slide 4 ➜ Eine echte ID (identifier) hat folgende Eigenschaften: • sie verweist auf höchstens eine Einheit, immer auf dieselbe • jede Einheit wird höchstens durch eine ID angesprochen • Fortlaufende Block-Folge auf einer logischen Festplatte • Boot-Block: Wird beim Booten automatisch in den Hauptspeicher geladen, zum Laden des BS • Superblock: Enthält Informationen über das gesamte Dateisystem (Größe, freie Blöcke und Inodes, etc.) • Inode: Information über die zugeordnete Datei; Inode mit Index 0 entspricht Wurzelverzeichnis (vgl. VL Betriebssysteme) • Der Inode-Index entspricht der Knoten-ID im Namensgraph ➜ Beachte: Adressen und IDs sind oft nur von Rechnern lesbar (Bitstrings), deshalb wird auch der dritte Typ verwendet: ➜ Benutzerfreundliche Namen werden als Zeichenstrings dargestellt (z.B. Dateinamen in Unix - bis 255 Zeichen lang) c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 1 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 2 V ERKN ÜPFUNGEN (mounting) ➜ Motivation: Verschiedene Namensräume miteinander transparent zu kombinieren ➜ Verknüpfung: Ein Verzeichnisknoten (Verknüpfungspunkt) speichert die ID eines Verzeichnisknotens (verknüpfender Punkt) aus einem anderen Namensraum, i. d. R. sein Wurzelverzeichnis ➜ Sind die Namensräume über mehrere Maschinen verteilt, muss man zum Verknüpfen folgende Namen kennen bzw. auflösen: N AMENSAUFL ÖSUNG ➜ Namensauflösung = Nachschlagen eines Namens für einen vorgegebenen Pfad Slide 5 ➜ Die Namensauflösung funktioniert durch die Suche der Knoten-ID in jeweiliger Verzeichnistabelle und den Übergang zum gefundenen Knoten im Namensgraph Slide 7 ➜ Schlussmechanismus (closure mechanism): • Auswahl des ersten Knotens in einem Namensraum, wo die Namensauflösung beginnen soll ➜ Beispiel: Auf Sun-Rechnern unter NFS (Network File System) wird Verzeichnisknoten /remote/vu verwendet, um die URL zu speichern: nfs://flits.cs.vu.nl/home/steen. Dann kann der Client auf die Datei /home/steen auf dem Server flits.cs.vu.nl mit dem NFS-Protokoll zugreifen, s. Details nächste Folie • Unix-Beispiel: Der Inode des Wurzelverzeichnisses ist der erste Inode auf der logischen Festplatte des Dateisystems A LIASE UND • Name eines Zugriffsprotokolls für Kommunikation mit den anderen Maschinen • Name des Servers (der anderen Maschine) • Name des verknüpfenden Punktes im fremden Namensraum L INKS B EISPIEL : E NTFERNTER Z UGRIFF ➜ Alias: Ein anderer Name für dieselbe Einheit. Grundsätzlich zwei Implementierungsmöglichkeiten: ➜ Der Name aus der vorigen Folie wird so aufgelöst: • nfs – in eine Implementierung des NFS-Protokolls • Servername – mittels DNS (s. später) in die Maschinenadresse • /home/steen – durch den fremden Server • Harte Links: mehrere absolute Pfadnamen auf denselben Knoten des Namensgraphen, wie z. B. /home/steen/keys und /keys als Links zu n5 in Abb. 4.1 • Symbolische Links: Im Blattknoten absoluten Pfadnamen speichern, z. B. ist /home/steen/keys ein symb. Link auf n5: Slide 6 Slide 8 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 3 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 4 B EISPIEL : S CHICHTEN IN EINEM DNS-N AMENSRAUM ➜ Der Name /remote/vu/mbox wird beginnend mit dem Wurzelverzeichnis auf dem Client aufgelöst, bis zu Knoten /remote/vu ➜ Die URL nfs://flits.cs.vu.nl/home/steen zurückgegeben ➜ Client kontaktiert den Dateiserver flits.cs.vu.nl mithilfe des NFS-Protokolls, und greift anschließend auf /home/steen zu. Slide 9 ➜ Die Namensauflösung kann jetzt fortgesetzt werden, indem die Datei mbox gelesen wird Slide 11 ➜ Der Client kann nun so arbeiten: cd /remote/vu ls -l und die Dateien im entfernten Verzeichnis lokal auflisten! ➜ Wichtig: Der entfernte Zugriff passiert transparent für den Benutzer, allerdings evtl. mit einem Leistungsabfall, wegen der Kommunikation übers Netzwerk I MPLEMENTIERUNG EINES A NFORDERUNGEN N AMENSRAUMS • Globale Schicht: Wurzelknoten und obere Verzeichnisknoten (Kindknoten von Wurzel), die sehr selten geändert werden • niedrigste – für die Verwaltungsschicht ➜ Leistung: • Verwaltungsschicht: Ändert sich regelmäßig, z. B.: Hosts in LAN, Programmdateien, benutzereigene Verzeichnisse/Dateien • globale Schicht - keine schnellen Server notwendig, aber Durchsatz u. U. wichtig • administrative Schicht - muss schnell sein, ➜ Zonen: Nicht überlappende Teile des Namensraums, die durch separate Namensserver implementiert sind S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 S CHICHT • mittel – für die administrative Schicht Slide 12 • Administrative Schicht: Verzeichnisknoten innerhalb einer Organisation: sind stabil, aber weniger als die globalen BY ABH ÄNGIG VON • höchste – für die globale Schicht; wird erreicht durch Server-Replikation und Client-seitiges Caching, weil Aktualisierungen nicht sofort sichtbar sein müssen ➜ Verteilter Namensraum wird in drei logische Schichten unterteilt: c 2006 S ERVER ➜ Verfügbarkeit: ➜ Ein Namensraum wird von Namensservern implementiert, die über mehrere Maschinen verteilt werden können Slide 10 AN • Verwaltungsschicht - noch schneller, da der Benutzer die Änderungen unmittelbar sehen will 5 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 6 V ERGLEICH DER I MPLEMENTIERBARKEIT I TERATIVE N AMENSAUFL ÖSUNG : F OR TSETZUNG ➜ Am schwierigsten – globale und administrative Schicht, wegen Replikation und Caching, die über WAN arbeiten ➜ Iterativ: Der Client-Namensauflöser übergibt diesem Server den restlichen Pfadnamen . . . usw . . . ➜ Der FTP-Server löst pub/globe/index.txt auf und überträgt die angeforderte Datei – in unserem Bsp. mithilfe von FTP ➜ Dadurch u. U. starke Kommunikationsverzögerungen Slide 13 Element Global Administrativ Geographische Skalierung des Netzwerks Weltweit Unternehmen Verwaltung Abteilung Gesamtzahl der Knoten Wenige Viele Unzählige Antwortzeiten beim Nachschlagen Sekunden Millisekunden Unmittelbar Aktualisierungsweitergabe Langsam Unmittelbar Unmittelbar Anzahl der Repliken Viele Keine oder wenige Keine Client-seitiges Caching? Ja Ja Manchmal Slide 15 Tabelle 1: Ein Vergleich zwischen Nameservern für die Implementierung von Knoten aus einem großen Namensraum, der in eine globale, administrative und eine Verwaltungsschicht zerlegt ist I MPLEMENTIERUNG DER R EKURSIVE N AMENSAUFL ÖSUNG N AMENSAUFL ÖSUNG ➜ Rekursiv: Statt jedes Zwischenergebnis an den Client-Namensauflöser zu schicken, wird es an den nächsten Namensserver weitergegeben ➜ Wir betrachten große verteilte Namensräume ➜ Wir nehmen der Einfachheit halber an, dass keine Replikation und Caching stattfinden ➜ Beispiel: Auflösen von root:<nl,vu,cs,ftp,pub,globe,index.txt> in Abb. 4.6 Slide 14 ➜ Pfadname als URL: ftp://ftp.cs.vu.nl/pub/globe/index.txt Slide 16 ➜ Jeder Client hat Zugriff auf einen lokalen Namensauflöser, der auf zwei Weisen implementiert werden kann: iterativ oder rekursiv, siehe nächste Folien ➜ Beide: Namensauflöser übergibt den Pfadnamen dem WurzelNamensserver (angenommen, seine Adresse sei bekannt) ➜ Iterativ: Der Wurzel-Server löst nl auf und gibt die Adresse des nächsten Namensservers an den Client zurück c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 7 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 8 R EKURSIV : VOR TEILE UND ➜ Vorteil 2: Rekursiv ist sparsamer in der Kommunikation als iterativ N ACHTEILE ➜ Größter Nachteil: hohe Leistungsanforderungen an einzelne Namensserver (vollständige Auflösung eines Namenspfades). Deswegen wird in der globalen Schicht nur iterativ gearbeitet Slide 17 ➜ Vorteil 1: Effektiveres Caching von Ergebnissen (vgl. Tabelle unten), bei nachfolgendem Nachschlagen durch andere Clients werden Cache-Ergebnisse benutzt ⇒ schnell Slide 19 ➜ Iterativ: Caching auf den Namensauflöser des Clients beschränkt, d. h. ein anderer Client muss das Ganze wiederholen ➜ Aushilfe: Für eine Organisation einen lokalen, zwischengeschalteten Namensserver, gemeinsam von allen Clients benutzt FALLSTUDIE : DNS – Domain Name Service Slide 18 Server für Knoten Soll auflösen Nachschlagen Übergibt an untergeordneten Knoten Empfängt und stellt in den Cache Gibt an den Anforderer zurück cs <ftp> #<ftp> - - #<ftp> vu <cs,ftp> #<cs> <ftp> #<ftp> #<cs>, #<cs,ftp> nl <vu,cs,ftp> #<vu> <cs,ftp> #<cs>, #<cs,ftp> #<vu>, #<vu,cs>, #<vu,cs,ftp> Wurzel <nl,vu,cs,ftp> #<nl> <vu,cs,ftp> #<vu>, #<vu,cs>, #<vu,cs,ftp> #<nl> #<nl,vu>, #<nl,vu,cs>, #<nl,vu,cs,ftp> Slide 20 • Infos sind in der Domain in-addr.arpa, verwaltet von DNS • Z. B.: der Host www.cs.vu.nl hat die IP-Adresse 130.37.24.11 • DNS erzeugt den Knoten 11.24.37.130.in-addr.arpa, in dem der Hostname soling.cs.vu.nl gespeichert wird Tabelle 2: Rekursive Namensauflösung für <nl, vu, cs, ftp> c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 ➜ Der Internet Domain Name Service (DNS) ist einer der größten verteilten Namensdienste, verwaltet Infos über Millionen von Computern weltweit ➜ Aufgaben: Suche nach Host-Adressen, Web- und Mail-Servern ➜ Zentralisierte Implementierung würde nicht skalieren! ➜ DNS-Namensraum: Baum mit einem Wurzel, Groß/Kleinschreibung bei Labels (bis 63 Zeichen lang) nicht berücksichtigt, die Wurzel wird durch einen Punkt (.) dargestellt ➜ Domain: ein Unterbaum; Domainname: Pfadname zur Wurzel des Unterbaums, z.B. flits.cs.vu.nl ➜ DNS verwaltet eine inverse Abbildung von IP-Adressen auf HostNamen, um den Namen aus einer Adresse nachzuschlagen: 9 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 10 DNS VS . V ERZEICHNISDIENSTE M OBILIT ÄT : Z WEI ➜ Alternative zu DNS – Verzeichnisdienste: Slide 23 • Der Inhalt dieses Knotens wird als ein Ressourcendatensatz zurückgegeben, vgl. [Tanenbaum, van Steen] • Anderer Ansatz: ein Verzeichnisdienst, wobei Client mithilfe einer Beschreibung der Eigenschaften nach einer Einheit sucht Slide 22 UND M OBILE E INHEITEN : A LTERNATIVER A NSATZ S UCHE ➜ Direkte Abbildung zwischen benutzerfreundlichen Namen und Adressen der Einheiten (wie in DNS) wird mittels IDs getrennt: ➜ Zwecks Benutzerfreundlichkeit verwalten Namenssysteme i. d. R. eine Abbildung benutzerfreundlicher Namen auf Adressen ➜ Dabei unterscheidet man drei Schichten (s. o.): global, administrativ, verwaltend. ➜ Motivierende Frage: Was passiert, wenn ein Server auf eine andere physische Maschine verschoben wird? ➜ Wenn auf globaler oder administrativer Schicht und nicht sehr weit geographisch (innerhalb einer Domain), dann ist DNS effizient, wegen Caching und nur einem Namensserver ➜ Wenn aber z. B. ftp.cs.vu.nl auf die Maschine ftp.cs.unisa.edu.au verschoben wird, kommen Probleme: Slide 24 ➜ Bei der Suche mithilfe eines Namensdienstes: der Dienst gibt eine ID zurück, die lokal gespeichert werden kann ➜ Bei erneuter Suche kann man die ID lokal laden ➜ Ein Suchdienst liefert für die ID die aktuelle Adresse der Einheit ➜ Nächste Folie: effiziente Implementierung von Suchdiensten • Der Originalname ftp.cs.vu.nl sollte möglichst nicht geändert werden, da viele Applikationen und Benutzer symbolische Links darauf besitzen können • Mit anderen Worten: der Name wird als ID benutzt, d. h. beim Ändern werden alle Links ungültig c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 ➜ 2. Den Namen der neuen Maschine aufzuzeichnen, d. h. ftp.cs.vu.nl wird ein symbolischer Link. Bei erneuter Verschiebung wird jedes Nachschlagen einen extra Schritt benötigen ➜ Allgemeines Problem: Nicht veränderbarer Originalname, der auch nicht für andere Einheiten verwendet werden darf • Ein Verzeichnisdienst ist in etwa mit den “gelben Seiten” vergleichbar, für Details vgl. [Tanenbaum, van Steen] M OBILE E INHEITEN : N AMENSGEBUNG L ÖSUNGEN ➜ 1. Die Adresse der neuen Maschine in der DNS-Datenbank cs.vu.nl aufzuzeichnen. Bei erneuter Verschiebung, z. B. nach ftp.cs.berkeley.edu – aufwendige Aktualisierung des DNS-Eintrages • DNS ist ein traditioneller Namensdienst, vergleichbar mit einem Telefonbuch: bei Übergabe eines hierarchischen Namens wird dieser in einen Knoten im Namensgraph aufgelöst Slide 21 TRADITIONELLE 11 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 12 S UCHDIENSTE MIT B ROAD - UND VORW ÄR TSZEIGER -M ECHANISMUS : I MPLEMENTIERUNG M ULTICASTING ➜ Vorwärtszeiger werden in der OO-Welt mit verteilten Objekten implementiert als Paar (Proxy, Skeleton): beim Verschieben hinterlässt das Objekt einen Proxy und installiert ein Skeleton, das auf die neue Position verweist ➜ In lokalen Netzen werden effiziente Broadcasting- und Multicasting-Funktionen unterstützt ➜ Die Suche geht dann so: • Die ID der gesuchten Einheit wird per Broadcast an jede Maschine gesendet Slide 25 • Maschinen, die einen Zugangspunkt (Adresse) für die Einheit anbieten können, senden eine Antwort mit dieser Adresse Slide 27 Nachteile dieser Lösung: • Broadcasting wird ineffizient wenn das Netzwerk wächst • Es wird nicht nur Netzwerkbandbreite verbraucht, sondern evtl. auch zu viele Hosts durch Anfragen unnötig belastet ➜ Ausweg: Multicasting, d. h. eine begrenzte Gruppe ansprechen ➜ Anderer Suchansatz: Vorwärtszeiger V ER TEILTE S PEICHERBEREINIGUNG ➜ Speicherbereinigung: Löschen unbenutzter Einheiten S UCHDIENSTE MIT ➜ Methode für Einprozessorsysteme – Referenzzählung – inkrementieren beim Ref-Erzeugen, dekrementieren beim Löschen VORW ÄR TSZEIGERN ➜ In verteilten Systemen ist Kommunikation unzuverlässig, z. B. kann eine Bestätigung verloren gehen, was zu einer doppelten Nachricht führt, die erkannt werden muss ➜ Wird eine Einheit von A nach B verschoben, hinterlässt sie eine Referenz (forwarding pointer) auf ihre neue Position Slide 26 ➜ Der Client kann die aktuelle Adresse nachschlagen, indem er der Kette der Vorwärtszeiger folgt Slide 28 ➜ Nachteile: • Eine Kette kann sehr lang werden • Alle Zwischenpositionen in der Kette müssen ihren Teil der Kette verwalten • Fehleranfälligkeit beim evtl. Ausfall eines Links c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 13 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 14 R EFERENZZ ÄHLUNG : WEITERES P ROBLEM ➜ Noch ein Problem bei verteilter Referenzzählung: Beim Kopieren einer entfernten Referenz in einen anderen Prozess: das Objekt wird evtl. früher gelöscht als neuer Besitzer sich meldet ➜ Lösung: das Objekt-Skeleton wird bei der Übergabe informiert; beim Löschen wird das Skeleton angefragt; es wird zuverlässige Kommunikation und drei Nachrichten pro Referenz gebraucht! Z USAMMENFASSUNG Was haben wir heute gelernt: ➜ Drei wichtigste Typen von Namen: Adressen, ID, benutzerfreundliche Namen Slide 29 Slide 31 ➜ Namen sind in einem Namensraum angeordnet, dargestellt durch einen Namensgraph ➜ Namensauflösung: wird iterativ oder rekursiv implementiert ➜ Suche nach mobilen Einheiten: durch Broadcasting bzw. Multicasting oder mittels Vorwärtszeiger ➜ Zwei Methoden verteilter Speicherbereinigung: Referenzzählung und Referenzlisten R EFERENZLISTEN ➜ Alternativansatz: Statt Referenzen zu zählen, verwaltet ein Skeleton eine Liste aller Proxies, die darauf verweisen ➜ Referenzlisten werden z. B. in Java RMI benutzt: • Wenn ein Prozess P eine entfernte Referenz auf ein Objekt erzeugt, sendet er seine ID an das Skeleton des Objekts, das daraufhin P in die Refliste einträgt. Slide 30 • Nach der Bestätigung erzeugt P in seinem Adressraum einen Proxy für das Objekt. • Potentielles Problem: P1 löscht seinen Proxy, bevor P2 angefordert hat, in die Referenzliste des Objekts eingetragen zu werden. Dies kann wie in Abb. 4.30(b) gelöst werden ➜ Nachteil: Probleme mit Skalierbarkeit, wenn ein Skeleton viele Referenzen verwalten muss ➜ Ausweg: Registrierung für eine begrenzte Zeit (Leasing); bei bedarf muss erneuert werden c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 15 c 2006 BY S ERGEI G ORLATCH · U NI M ÜNSTER · V ERTEILTE S YSTEME · VORLESUNG 4 16