Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Datei- verwaltung Version 1.1 Kap. 5 Version vom 25.02.2005.

Ähnliche Präsentationen


Präsentation zum Thema: "Datei- verwaltung Version 1.1 Kap. 5 Version vom 25.02.2005."—  Präsentation transkript:

1

2 Datei- verwaltung Version 1.1 Kap. 5 Version vom 25.02.2005

3 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 2 Dateiverwaltung Kap. 5 - Inhalt Dateisysteme Dateinamen Dateiattribute und Sicherheit Dateizugriffsfunktionen Strukturierte Zugriffsfunktionen Verzeichnisfunktionen Spezialitäten Dateiimplementierung

4 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 3 Dateiverwaltung Dateisysteme I Liste von Dateien auf Massenspeicher = relationale Datenbank! Objektorientierte Datenbank: mit Methoden+Attributen Multi-Media-Datenbank: mit Bild+Tonobjekten+Synchron. Organisation von Datenbanken Persistent Storage Manager PSM (kleineObjekte) Object-Oriented Database Management System OODBMS NummerNamePositionLängeDatum... 0Datei1.dat264102411.12.87 1MyProgram23450455062423.4.96 2Datei1.dat530204825.1.97...

5 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 4 Dateiverwaltung Dateisysteme II Hierarchische Dateiorganisation in Baumform Knoten=„Ordner“=directory

6 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 5 Dateiverwaltung Dateisysteme III Zusätzliche Vernetzung (azykl.Graph) Firma Abteilung 5 Formulare Rudi Hans BriefVorlage.dot Brief1.doc BriefN.doc Brief1.doc BriefM.doc

7 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 6 Dateiverwaltung Dateinamen I Namensbildung Namensbildung Name.ext (üblich) Extension = Dateityp, Dateizweck Beispiele:.datDaten; Format hängt vom Erzeugerprogramm ab.docTextdokument in dem speziellen Format des Texteditors.pasPASCAL-Programm Quellcode.cC-Programm Quellcode.hDeklarations (header)-Dateien für C-Programme.psPostscript Dateien zum Ausdrucken.Z,.zip,.gzKomprimierte Dateien.tarein gesamtes Dateisystem, in einer Datei abgespeichert.htmlASCII-Textdatei für das world wide web-Hypertextsystem.jpg,.gif,Bilddateien.tif,.bmp 3 Extensionsbuchstaben: MS-DOS! Sonst: 215 Char ohne \ / : * ? "

8 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 7 Dateiverwaltung Geschachtelte Typen Beispiel:Skript.ps.gz = Textdatei  Postscript-Format  Komprimiert Dateinamen II - Externe Typangabe Typaktionen Typ verknüpft mit Aktion Benutzeroberfläche (Desktopmanager HP -VUE, MS-Explorer) behandelt Dateinamen Liste von Aktionen pro Typ definiert (Kontextmenü) Doppelklick=erste Aktion ausführen

9 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 8 Dateiverwaltung Dateinamen III - UNIX-interne Typangabe class File Header { a_magic: LONG CARDINAL (*Magische Zahl*) a_txt: CARDINAL (* Code-Segmentgröße *) a_data: CARDINAL (* Segmentgröße der init. Daten*) a_bss: CARDINAL (* Segmentgröße der nicht init.Daten*) a_syms : CARDINAL (* Größe der Symboltabelle*) a_entry: CARDINAL (* Start des Programms*)... } a_magic = 407B (* altes Format: Code („text“) und Daten werden nicht schreibgeschützt und sollen deshalb nicht von anderen Prozessen genutzt werden *) 410B(* Text-Segment wird schreibgeschützt, und das Datensegment wird an die nächsten Seitengrenzen (4 KB) im Speicher gelegt *) 413B(* Text-Segment fängt an der nächsten Seitengrenze der Datei an; text und Datensegmente sind Multiple der Seitenlänge *)

10 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 9 Dateiverwaltung Dateinamen IV - Eindeutigkeit Problem: eineindeutige Abbildung langer Namen auf kurze. z.B. NTFS  MS-DOS (8 Zeichen. 3Zeichen) Lösung Windows NT: Alle illegale MS-DOS Buchstaben löschen sowie alle Punkte innerhalb des Namens bis auf den letzten, falls er nicht abschließt. Kleinbuchstaben  Großbuchstaben. Nur die ersten 6 Buchstaben beibehalten, Zeichen „  1“ vor dem Punkt einfügen. 3 Zeichen hinter dem Punkt beibehalten, alle anderen löschen. Ex. Datei gleichen Namens, so wird „  1“ zu „  2“ bzw. zu „  3“, falls schon existiert. Beispiel: „Ganz langer Dateiname.text.ps“  GANZLA~1.ps

11 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 10 Dateiverwaltung Dateinamen V Dateiname = Pfadname = Kette aus Knotennamen von der Wurzel zum Blatt Beispiel: /Abteilung5/Rudi/Brief1.doc Unix \Abteilung5\Rudi\Brief1.doc NT Vorgänger:.. Dieses Verzeichnis. Relative Pfadnamen Rudi/Brief1.doc bei Hans:../Rudi/Brief1.doc Abteilung 5 Rudi Hans BriefN.doc Brief1.doc BriefM.doc Brief1.doc

12 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 11 Dateiverwaltung Dateinamen VI Portabilität Vorteil relativer Pfadnamen: Portabilität Beispiel Programmsystem / toolsX toolsY Daten Programme Dat1.a libalibbProg Absolute Pfadnamen müssen nach Verschiebung des Programmsystems geändert werden, relative nicht !

13 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 12 Dateiverwaltung Dateinamen VII - UNIX Namensraum Baumorientiertes Dateisystem Querverbindungen durch hard links (gleiches Laufwerk) oder symbolic links (anderes Laufwerk) Beispiel: hard link löschen zu rück-referiertem Verzeichnis: stand-alone Verzeichnis? Abteilung5 Gruppe 1Gruppe2 RudiHans Datei1Datei2 Datei3 symbolic link hard links  hard link

14 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 13 Dateiverwaltung Dateinamen VIII - UNIX Pfaderweiterung Einhängen eines Dateisystems (mounten) root filesystem etc bin usr users user file system Rudi Hans Ute / / Festplatte 1 Festplatte 2 Zugriff mit /users/Rudi/Brief1.doc

15 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 14 Dateiverwaltung Dateinamen IX - Windows NT Namensraum Namen für alle Objekte wie pipes, shared memory, Prozesse, Semaphoren, events,... Logische Querverbindungen (symbolic links) Löschen von Dateien: 2 Referenzzähler (user und kernel handles) „Durchsuchen“-Methode bei jedem Objekt: neue Dateisysteme! Symbolic link parsing-Methode: z.B. A:\Texte\bs_files.doc \ Device DosDevices Floppy0 HardDisk0 A: B:C: Texte Email Partition0 bs_mem.docbs_files.doc Objekt Manager Namensraum DateimanagerNamensraum

16 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 15 Dateiverwaltung Dateiattribute und Sicherheit I Dateilänge Datum für Erzeugung, letzte Änderung,.. Log. Attribute hidden, system, Archiv, Erzeuger, Besitzer, Benutzer und ihre Rechte POSIX-6:  geringstmöglichste Rechte für eine Aufgabe (least privilege)  Diskrete Angaben für Zugangskontrolle: Wer darf, wer nicht (ACL)  Zugangskontrolle nur von Prozessen größerer Rechte  Aufzeichnung des Zugangs (audit trail)

17 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 16 Dateiverwaltung Dateiattribute und Sicherheit II - UNIX Zugriffsrechte: Lesen R, Schreiben W, Ausführen X Verzeichnisse: R=Liste lesen, W=neue Datei aufnehmen, X=Liste durchsuchen nach Datei Getrennt für Besitzer, Gruppe, Alle Rechte bei Programmausführung = user Rechte Aber: set userId, set group Id ACL ex. in neuerem Unix (Wer, was, wie) drwx r-x r-x weber512Apr2315:55. off512May1717:53.. -rw- r-- r-- schulz44181Apr2315:56data1.txt drwx r-x r-x

18 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 17 Dateiverwaltung Dateiattribute und Sicherheit III - Windows NT Standardrechte: Read, Write, ExecuteOnly, Vollzugriff,... ACL ex., neue Gruppen möglich Auditing möglich Speziell für Dateien: Attribute Dateiname, Gerätetyp, Position in Datei, share-Status(r,w,del) Mode: sync/async, mit/ohne Cache, seq/random Access,... File disposition: temp oder persistent Methoden CreateFile(), OpenFile(), ReadFile(), WriteFile(), CloseFile() Lesen/setzen von Dateiinfo, Attributen, Geräteinfo, Verzeichnissen Sichern/freigeben der Dateilänge Attribute implementiert durch Datenströme, neu erzeugbar „MeineDatei.dat : MeinKommentar“ (nichtlöschbare Viren!)

19 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 18 Dateiverwaltung Dateifunktionen I - Prinzip Standardfunktionen Create File Name, Zugriffsart: Tabelleneintrag Open File Apprüfen der Zugriffsrechte, Puffereinrichtung, Close File Puffer + Tabellen deallozieren, Read/Write File Puffer schreiben/lesen: DMA! Seek File Index setzen der aktuellen Position  random access Verbind.-orientierte Kommunikation

20 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 19 Dateiverwaltung Dateifunktionen II - UNIX fd = creat(Name, mode) file descriptor = Index in Tabelle fd = open (Name, mode) read (fd, buffer, nbytes) write(fd, buffer, nbytes) close(fd) lseek(fd, offset, direction) Beispiel: pipes fd=0: Standard Input, fd=1 Standard Output, fd=2 standard error Programm1 | Programm2 |.. | ProgrammN

21 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 20 Dateiverwaltung Dateifunktionen III - Windows NT Übliche Dateizugriffsfunktionen wie Unix Bei Veränderung der Dateistruktur: Atomare Transaktionen durch log file service LFS (write-ahead logging) Ergänzung der Operationen nach Absturz: = Fehlertolerantes Dateisystem Wirksam bei fail save-System, nicht aber bei aktivem Fehler

22 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 21 Dateiverwaltung Strukturierte Zugriffsfunktionen Sequentielle Dateiensequential files Magnetbänder, Lochstreifen Problem: unbekannte Zugriffsreihenfolge Wahlfreie Dateienrandom access files Festplatten, CD-ROM: Positionsangabe (offset) möglich Problem: ineffizient bei bekannter Datenorganisation Indexsequentielle Dateienindex-sequential files Übersicht (Index) am Dateianfang, Ordnung nach einem Kriterium (Schlüssel), z.B. Name, Geburtsdatum,... Fehlen der DB-Unterstützung: Problem bei UNIX!

23 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 22 Dateiverwaltung Verzeichnisfunktionen I - Prinzip Create Directory Verzeichnis erzeugen Remove Directory Verzeichnis löschen Change Working Directory Gegenwärtiges Arbeitsverzeichnis wechseln Open Directory Verzeichnis-Stream öffnen zum Lesen der Einträge Close Directory Verzeichnis-Stream schliessen Read Directory Entry Eintrag in Verzeichnis-Stream lesen Seek Directory Entry Z u gemerktem Eintrag positionieren Tell Directory Entry Gegenwärtigen Eintrag merken

24 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 23 Dateiverwaltung Spezialitäten I - Bibliotheksdateien BS-typische, von allen Prozessen nutzbare Funktionen, die nicht im Kern sind Vorteile weniger Hauptspeicher nötig, da Modul nur einmal vorhanden Wartung ist erleichtert, da zentral Aber: Speicher wird billiger & wenige Module sind oft benutzt Anfangsadresse Null nicht immer möglich  relozierte Kopien nötig Wartung auch bei zentraler Verteilung lokaler Module einfacher DLL-Hölle: Mehrere Module gleicher Version bilden eine Gruppe & Verschiedene Programme benötigen unterschiedliche Funktionalität von Modulversionen gleichen Namens & kein Schnittstellencheck  CRASH unklarer Herkunft Also: Bibliotheksmodule bei Applikation lassen; registrierte Systembibliotheken automatisch reparieren (WIN 2000: 2800 signierte System-DLL)

25 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 24 Dateiverwaltung Ideewahlfreier Zugriff auf Massenspeicher = RAM Plattenspeicherbereich  Hauptspeicherseiten Einlesen des Bereichs nur wenn wirklich nötig Pufferung automatisch durch Paging Problem: Änderung der Länge der Datei Spezialitäten II - memory mapped files paging Datei auf Platte virt. Adreßraum im Hauptspeicher Daten header Daten code stack

26 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 25 Dateiverwaltung Spezialitäten III - memory mapped files Beispiel Unix mmap() stellt eine Abbildung von virtuellem Adreßraum in den Bereich einer Datei her. munmap() beendet die Abbildung. Wurde der Speicherinhalt verändert, so werden die veränderten Seiten auf die Datei zurückgeschrieben. msync() aktualisiert die Datei aus dem Speicher. Außerdem: Semaphoroperationen zur Synchronisation Beispiel Windows NT VM-Manager & I/O-Manager CreateFileMapping() erzeugt ein Objekt OpenFileMapping() öffnet es anderen Prozesse unter dem Namen MapViewOfFile() Teilbereiche daraus in den virt. Adreßraum abbilden FlushViewOfFile() aktualisiert den Dateibereich UnmapViewOfFile() wieder schliessen

27 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 26 Dateiverwaltung Spezialitäten IV - special files Abbildung von Dateimechanismen auf Gerätesteuerung  Öffnen/Schließen von Dateien = Initialisierung der Geräte  Lesen/Schreiben von Daten = I/O der Daten  Statusänderung der Datei = Statusänderung des Geräts Beispiel Unix „/dev/tty“Terminal ein/ausgabe (character-oriented) „/dev/mt“Magnetband (block-oriented) open(),close(),read(),write() Ein Gerät, mehrere Namen und damit Modi (sequentiell, random access) möglich. ioctl() Statusänderung, z.B. Übertragungsmodus&Geschwindigkeit mount() Wurzelknoten des Dateisystems auf Gerät ersetzt Datei Beispiel Windows NT virtual files Zugriff auf Geräte, Netzwerkverbindungen etc. wie auf normale Dateien

28 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 27 Dateiverwaltung Dateiimplementierung I Kontinuierliche Speicherzuweisung Datei „in einem Stück“: Schnell, aber nicht änderbar. Listenartige Speicherzuweisung Verzeigerte Liste von Speicherblöcken (Strategien!) VorteilRekonstruktion möglich bei Anker-Löschung Nachteilineffizienter wahlfreier Zugriff Datei A Datei B Nil B Block 0 A Block 1 B B Block 2 A Block 0 A Block 2 B Block 3 0123456

29 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 28 Dateiverwaltung Dateiimplementierung II Zentrale indexbezogene Speicherzuweisung zentraler Block von Zeigern (Indizes) in einer Liste Anfang Datei B Anfang Datei A Ende Datei B Phys. BlockNr = ListenIndex nächster Daten- block 02 15 23 36 41 57 6NIL

30 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 29 Dateiverwaltung Dateiimplementierung III - Zentraler Index Beispiel File Allocation Table FAT von MS-DOS Blockgröße: 512 Byte (= 1 Sektor), Block 0: Bootstrap, Blöcke 1-5: FAT mit je Eintrag 12 Bit = 3Hexzahlen = 1.5 Byte Pro cluster 1024 Byte = 2Blöcke Block 18/19 Cluster 0 Cluster 1 Cluster 2 Index 3 12 Bit 1024 Byte Index 2 Index 4 Index 5 Index 6 Block 19/20 Block 20/21 Maximale Diskettengröße max. FATgröße 5  512=2560Byte Max. Zahl der Einträge = 2560/1.5 = 1706 Einträge (cluster), also max 1706  1024Byte = 1,7 MB pro Diskette

31 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 30 Dateiverwaltung Dateiimplementierung IV - Zentraler Index FAT-Probleme IndexgrößeFloppy 12 Bit  Platten 16 Bit 2 12 Einträge  2 16 Einträge = 2 16 Cluster Problem : bei 2 GB Platte ist Clustergröße= 2 GB/Clusterzahl = 2 31 /2 16 =2 15 =32kB groß, aber 1kB-Dateien sind normal! Aber: Geringere Clustergröße, z.B. 1kB Cluster, 2 GB Platte,  2 31 /2 10 =2 21 =2 Mill. Einträge. Da jeder Eintrag 2 Mill andere Einträge referieren kann, muß er mind. 21 Bit (3 Bytes) breit sein. Dies bedeutet 2 Mill. mal 3 Bytes = 6 MB Platz für die FAT-Tabelle im Hauptspeicher, ohne daß alle benutzt werden müssen.  Bei kleinen Clustern gibt es lange Listen im RAM sowie lange Suchdauer.

32 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 31 Dateiverwaltung Dateiimplementierung V Verteilte indexbezogene Speicherzuweisung Eigene Indexliste pro Datei Datei A 4 1 5 7... Datei B 0 2 3 6 NIL Problem: Bei einigen Dateien sehr viele Blöcke, lineare Blocksuche wird langsam

33 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 32 Dateiverwaltung Dateiimplementierung VI Verteilte indexbezogene Speicherzuweisung Baumstruktur zur schnellen Blocksuche Tabellengröße vs. Suchzeit: 1-,2-,3-stufige Tabellen

34 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 33 Dateiverwaltung Dateiimplementierung VII - UNIX Zentrale Tabelle pro Datei: i-node (Indexknoten) Verwaltungsdaten (Referenzen, Zeiger für free-Liste + mount()-Tabelle), erste Adressen von Datenblöcken + Zeiger für weitere Max 256 Einträge (Blockindizes) Max 256 Einträge (Zeiger) 16,8 GB 67 MB 266 kB Verzeichnis = Datei = Tabelle aus Dateinamen + i-node-Nummer Zentrale Tabelle aller i-nodes = super node

35 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 34 Dateiverwaltung Dateiimplementierung VIII - UNIX Schritte beim Aufsuchen von /usr/ast/mbox

36 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 35 Dateiverwaltung Dateiimplementierung IX - Windows NT Konzept Volumes (log. Massenspeicher) als Datenspeichereinheit Alle Untereinheiten eines volumes sind nur Dateien (files), gekennzeichnet durch eine 48 Bit-Zahl &16Bit-Sequenznummer Vorteile Vorteile Dateien vs. dedizierte Blöcke (Plattenbereiche) einfacher, konsistenter Dateizugriffsmechanismus, sogar auf die boot-Information. Die Sicherheitsinformationen sind getrennt pro Objekt (Verwaltungsinformation)  besser anpaßbar an die inhaltlichen Notwendigkeiten des Objekts bzw. der Funktion. Werden Plattenteile unbrauchbar, so können die Verwaltungs- informationen unsichtbar für den Benutzer auch auf andere Plattenteile verlagert werden.

37 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 36 Dateiverwaltung Chkdsk- Programm Dateiimplementierung X - Windows NT ~ ~ Datei 0 Master File Table Datei 1 Sicherheitskopie der MFT( Plattenmitte) Datei 2 log file: Alle Operationen, die die NTFS-Struktur ändern, werden hier verzeichnet und garantieren so atomare Dat eitransaktionen. Datei 3 volume file: StatusinformationenName, NTFS Version,... corrupted Bit=1: Datei 4 attribute definition table: Attributstypen + ihr Status Datei 5 Root directory : Name des Wurzelverzeichnisses, z. B. \ Datei 6 bitmap file: Belegungstabelle dervolume-Speichereinheiten (Cluster) Datei 7 boot file:bootstrapCode von Windows NT und die physikalische Geräteadresse der MFT -Datei. Datei 8 bad cluster file: Verzeichnis der unbrauchbarenvolume - Cluster... Datei 16 Normale Benutzerdateien und Verzeichnisse

38 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 37 Dateiverwaltung Dateiimplementierung XI - Windows NT Struktur eines Master File Table-Eintrags Nichtresidente Attributsteile (eigentliche Datenblöcke) VCN : virtual cluster number LCN : logical cluster number

39 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 38 Dateiverwaltung Dateiimplementierung XII - Windows NT Struktur des Wurzelverzeichnisses root directory root fileIndexpuffer Standard information file name „ \ “ B*-Baum index root file 4 file 10 file 15 index allocation VCN  LCN bitmapXXX0XX0 XXXXX... VCN 0file 0, … 1file 1, … 2file 3, … 3 VCN 4file 6, … 5file 8, … 6 7file 9, … VCN 8file 11, … 9file 12, … 10file 13, … 11file 14, … Max. 15 Dateien (Schlüssel) pro container (4 Cluster) Wurzelcontainer des B*-Baums

40 Betriebssysteme und Grundlagen verteilter Systeme: © H. Weber, FH Wiesbaden Folie 39 Dateiverwaltung Dateiimplementierung XIII - Windows NT Interne Datenstrukturen für eine NTFS-Datei Object manager data NTFS memory data NTFS disk database process master file table... file control block stream control blocks data stream user- defined attribute file handle table... file object file object


Herunterladen ppt "Datei- verwaltung Version 1.1 Kap. 5 Version vom 25.02.2005."

Ähnliche Präsentationen


Google-Anzeigen