Dateisysteme

Dateisysteme

Dateisysteme Hochleistungs-Ein-/Ausgabe Michael Kuhn 2019-04-09 Wissenschaliches Rechnen Fachbereich Informatik Universität Hamburg Dateisysteme Orientierung Grundlagen Struktur Beispiel: ext4 Object Stores Datenstrukturen Leistungsbewertung Ausblick und Zusammenfassung Michael Kuhn Dateisysteme 1/49 E/A-Schichten Orientierung Anwendung Bibliotheken Paralleles verteiltes Dateisystem Dateisystem Optimierungen Datenreduktion Leistungsanalyse Speichergerät/-verbund Abbildung 1: E/A-Schichten und orthogonale Themen Michael Kuhn Dateisysteme 2/49 Aufgabe Grundlagen 1. Strukturierung • Üblicherweise hierarchische Organisation • Auf Basis von Dateien und Verzeichnissen • Andere Ansätze: Tagging, Queries etc. 2. Verwaltung von Daten und Metadaten • Blockallokation und -verwaltung • Zugri über Datei- und Verzeichnisnamen • Zugrisrechte, Zeitstempel etc. • Dateisysteme nutzen ein darunter liegendes Speichergerät • Kann auch durch Speicherverbund bereitgestellt werden • Logical Volume Manager (LVM) und/oder mdadm unter Linux Michael Kuhn Dateisysteme 3/49 Beispiele Grundlagen • Linux: tmpfs, ext4, XFS, btrfs, ZFS • Windows: FAT, exFAT, NTFS • OS X: HFS+, APFS • Universal: ISO9660, UDF • Pseudo: sysfs, proc Michael Kuhn Dateisysteme 4/49 Beispiele... Grundlagen • Netzwerk: NFS, AFS, Samba • Kryptographisch: EncFS, eCryptfs • Parallel verteilt: Spectrum Scale, Lustre, OrangeFS, CephFS, GlusterFS • Setzen häufig auf darunterliegenden Dateisystemen auf Michael Kuhn Dateisysteme 5/49 E/A-Schnittstellen Grundlagen • Anfragen werden über E/A-Schnittstellen realisiert • Schnittstellen für unterschiedliche Abstraktionsebenen • Weiterleitung an das eigentliche Dateisystem • Low-Level-Funktionalität • POSIX, MPI-IO • High-Level-Funktionalität • HDF, NetCDF, ADIOS Michael Kuhn Dateisysteme 6/49 E/A-Operationen Grundlagen 1 fd = open("/path/to/file", O_RDWR | O_CREAT | O_TRUNC, 2 S_IRUSR | S_IWUSR); 3 rv = close(fd); 4 rv = unlink("/path/to/file"); Listing 1: E/A über POSIX-Funktionen • Mit open können auch Dateien erstellt werden • Viele mögliche Flags und Modi • Initialer Zugri über Pfad • Danach über File Descriptor (bis auf einige Ausnahmen) • Alle Funktionen liefern einen Rückgabewert • Bei Fehlern sollte errno überprü werden Michael Kuhn Dateisysteme 7/49 E/A-Operationen... Grundlagen 1 nb = write(fd, data, sizeof(data)); Listing 2: E/A über POSIX-Funktionen • write liefert die Anzahl der geschriebenen Bytes zurück • Muss nicht notwendigerweise der übergebenen Größe entsprechen (Fehlerbehandlung!) • write verändert intern den Dateizeiger (alternativ: pwrite) • Funktionen befinden sich in der libc • Diese führt System Calls durch Michael Kuhn Dateisysteme 8/49 VFS Grundlagen • Virtual File System (Switch) • Zentrale Dateisystemkomponente im Kernel • Standardisiertes Interface für alle Dateisysteme (POSIX) • Gibt Dateisystemstruktur und -schnittstelle größtenteils vor • Leitet Anfragen der Anwendungen an das entsprechende Dateisystem weiter • Basierend auf dem Mountpoint • Ermöglicht die Unterstützung unterschiedlichster Dateisysteme • Anwendungen bleiben durch POSIX trotzdem portabel Michael Kuhn Dateisysteme 9/49 VFS... [3] Grundlagen mmap (anonymous pages) Applications (processes) malloc ... stat(2) open(2) read(2) write(2) chmod(2) VFS Block-based FS Network FS Pseudo FS Special ext2 ext3 ext4 xfs NFS coda purpose FS Direct I/O proc sysfs Page btrfs ifs iso9660 smbfs ... (O_DIRECT) pipefs futexfs tmpfs ramfs cache gfs ocfs ... ceph usbfs ... devtmpfs Stackable FS ecryptfs overlayfs unionfs FUSE userspace (e.g. sshfs) network stackable (optional) struct bio - sector on disk BIOs (block I/Os) Devices on top of “normal” BIOs (block I/Os) - sector cnt block devices - bio_vec cnt drbd LVM - bio_vec index device mapper mdraid - bio_vec list dm-crypt dm-mirror ... dm-cache dm-thin bcache dm-raid dm-delay The Linux Storage Stack Diagram http://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram Created by Werner Fischer and Georg Schönberger License: CC-BY-SA 3.0, see http://creativecommons.org/licenses/by-sa/3.0/ Michael Kuhn Dateisysteme 10 / 49 VFS... [3] Grundlagen The Linux Storage Stack Diagram version 4.10, 2017-03-10 outlines the Linux storage stack as of Kernel version 4.10 Virtual Host Virtual FireWire Fibre Channel Fibre over Ethernet ISCSI Channel Fibre USB mmap (anonymous pages) Applications (processes) LIO malloc vfs_writev, vfs_readv, ... ... stat(2) open(2) read(2) write(2) chmod(2) VFS tcm_fc sbp_target tcm_usb_gadget tcm_vhost tcm_qla2xxx iscsi_target_mod Block-based FS Network FS Pseudo FS Special ext2 ext3 ext4 xfs NFS coda proc purpose FS target_core_mod Direct I/O sysfs Page btrfs ifs iso9660 smbfs ... (O_DIRECT) pipefs futexfs tmpfs ramfs cache target_core_file gfs ocfs ... ceph usbfs ... devtmpfs Stackable FS target_core_iblock ecryptfs overlayfs unionfs FUSE userspace (e.g. sshfs) target_core_pscsi target_core_user network stackable (optional) struct bio - sector on disk BIOs (block I/Os) Devices on top of “normal” BIOs (block I/Os) - sector cnt block devices - bio_vec cnt drbd LVM - bio_vec index device mapper mdraid - bio_vec list dm-crypt dm-mirror ... dm-cache dm-thin bcache dm-raid dm-delay userspace BIOs BIOs Block Layer BIOs I/O scheduler blkmq Maps BIOs to requests multi queue hooked in device drivers noop Software (they hook in like stacked cfq ... queues devices do) deadline Hardware Hardware dispatch ... dispatch queue queues Request Request BIO based drivers based drivers based drivers Request-based device mapper targets dm-multipath SCSI mid layer sysfs scsi-mq /dev/zram* /dev/rbd* /dev/mmcblk*p* /dev/nullb* /dev/vd* /dev/rssd* /dev/skd* (transport attributes) SCSI upper level drivers /dev/sda /dev/sd* ... /dev/ubiblock* /dev/nbd* /dev/loop* /dev/nvme*n* /dev/rsxx* Transport classes scsi_transport_fc /dev/sr* /dev/st* zram ubi rbd nbd mmc loop null_blk virtio_blk mtip32xx nvme skd rsxx scsi_transport_sas scsi_transport_... network memory SCSI low level drivers libata megaraid_sas qla2xxx pm8001 iscsi_tcp virtio_scsi ufs ... ahci ata_piix ... aacraid lpfc mpt3sas vmw_pvscsi network HDD SSD DVD LSI Qlogic PMC-Sierra Micron nvme stec para-virtualized virtio_pci mobile device drive RAID HBA HBA SCSI flash memory PCIe card device device Adaptec Emulex LSI 12Gbs VMware's SD-/MMC-Card RAID HBA SAS HBA para-virtualized IBM flash Physical devices SCSI adapter The Linux Storage Stack Diagram http://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram Created by Werner Fischer and Georg Schönberger License: CC-BY-SA 3.0, see http://creativecommons.org/licenses/by-sa/3.0/ Michael Kuhn Dateisysteme 11 / 49 Dateisystemobjekte Struktur • Unterscheidung in Benutzer- und Systemsicht • Benutzer sehen Dateien und Verzeichnisse mit Metadaten • Dateien bestehen aus Bytes, Verzeichnisse enthalten Dateien und Verzeichnisse • Das System verwaltet Interna • Fasst mehrere Blöcke zu Dateien zusammen etc. • Inodes • Eigentliche Basisobjekte des Dateisystems • Jeder Datei und jedem Verzeichnis ist ein Inode zugeordnet (siehe stat) • Enthalten Metadaten • Sowohl für Benutzer sichtbare als auch interne • Üblicherweise eindeutige IDs und fixe Größe Michael Kuhn Dateisysteme 12 / 49 Dateisystemobjekte... Struktur • Dateien • Enthalten Daten in Form eines Byte-Arrays • POSIX macht keine weitergehenden Vorgaben • Können gelesen/geschrieben werden (explizit) • Können in den Speicher gemappt werden (implizit) • Verzeichnisse • Zur Organisation des Namensraumes • Können Dateien und weitere Verzeichnisse enthalten • Aus Benutzersicht eine Liste • Intern häufig Baumstrukturen Michael Kuhn Dateisysteme 13 / 49 Dateien Struktur 1 nb = pwrite(fd, data, sizeof(data), 42); 2 nb = pread(fd, data, sizeof(data), 42); Listing 3: Expliziter Zugri • pwrite und pread verhalten sich wie write bzw. read • Explizite Angabe des Osets und damit threadsicher • Zugri über File Descriptor • Kann von mehreren Threads parallel genutzt werden Michael Kuhn Dateisysteme 14 / 49 Dateien... Struktur 1 char* pt = mmap(NULL, file_size, PROT_READ | PROT_WRITE, 2 MAP_SHARED, fd, offset); 3 memcpy(pt + 42, data, sizeof(data)); 4 memcpy(data, pt + 42, sizeof(data)); 5 munmap(pt, FILE_SIZE); Listing 4: Impliziter Zugri • mmap erlaubt es eine Datei in den Speicher einzublenden • Datei wird an Adresse pt eingeblendet • Verschiedene Sichtbarkeitseinstellungen (shared vs. private) • Zugri wie auf andere Speicherobjekte • Z. B. via memcpy oder direkte Zuweisung Michael Kuhn Dateisysteme 15 / 49 Dateien... Struktur • Beide Zugrisarten haben jeweils Vor- und Nachteile • Beide Modi profitieren vom Caching durch das Betriebssystem • Expliziter Zugri • Vorteile: genaue Kontrolle über E/A, Möglichkeit direkter E/A • Nachteile: separate Puer notwendig, Kopiervorgänge zwischen Kernel- und Userspace • Impliziter Zugri • Vorteile: keine separaten Puer notwendig, eiziente E/A durch das Betriebssystem, keine unnötigen Kopiervorgänge, große Dateien können komplett gemappt werden • Nachteile: keine genaue Kontrolle, kompliziertere Fehlerbehandlung (Signale) Michael Kuhn Dateisysteme 16 / 49 Verzeichnisse Struktur Inode Größe Namenslänge Dateityp Name 23 10 2 2 . 24 11 3 2 .. 42 14 6 1 hello 42 14 6 1 world Abbildung 2: ext4-Verzeichniseintrag [1] • Traditionell lineares Array • Langsam, da über das komplette Array iteriert werden muss • Heutzutage eher Baumstrukturen • Deutlich komplexer, dafür geringere Zugriszeiten • Name wird nicht im Inode gespeichert • Mehrere Namen können auf denselben Inode zeigen Michael Kuhn Dateisysteme 17 / 49 Inodes Struktur Feldgröße Inhalt 2 Bytes Berechtigungen

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    51 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us