Click here to load reader

Dateisysteme - Hochleistungs-Ein-/Ausgabe · PDF fileDateisysteme Hochleistungs-Ein-/Ausgabe MichaelKuhn Wissenscha˝lichesRechnen FachbereichInformatik ... Universal:ISO9660,UDF,

  • View
    214

  • Download
    0

Embed Size (px)

Text of Dateisysteme - Hochleistungs-Ein-/Ausgabe · PDF fileDateisysteme Hochleistungs-Ein-/Ausgabe...

  • Dateisysteme Quellen

    DateisystemeHochleistungs-Ein-/Ausgabe

    Michael Kuhn

    Wissenschaliches RechnenFachbereich InformatikUniversitt Hamburg

    2017-04-21

    Michael Kuhn Dateisysteme 1 / 53

  • Dateisysteme Quellen

    1 DateisystemeOrientierungDateisystemeext4Object StoresDatenstrukturenLeistungsbewertungAusblick und Zusammenfassung

    2 Quellen

    Michael Kuhn Dateisysteme 2 / 53

  • Dateisysteme Quellen

    Orientierung

    E/A-Schichten

    Anwendung

    Bibliotheken

    Speichergert/-verbund

    Paralleles verteiltes Dateisystem

    Dateisystem

    Leis

    tung

    sana

    lyse

    Opt

    imie

    rung

    en

    Date

    nred

    uktio

    n

    Abbildung: E/A-Schichten

    Michael Kuhn Dateisysteme 3 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Aufgabe

    Strukturierungblicherweise Dateien und VerzeichnisseHierarchische OrganisationAndere Anstze: Tagging

    Verwaltung von Daten und MetadatenBlockallokationZugrisrechte, Zeitstempel etc.

    Dateisysteme nutzen ein darunter liegendes SpeichergertOder einen SpeicherverbundLogical Volume Manager (LVM) und/oder mdadm

    Michael Kuhn Dateisysteme 4 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Beispiele

    Linux: ext4, XFS, btrfs, ZFS, . . .Windows: FAT, exFAT, NTFSOS X: HFS+, APFSUniversal: ISO9660, UDF, . . .

    Michael Kuhn Dateisysteme 5 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Beispiele. . .

    Netzwerk: NFS, AFS, SambaKryptographisch: EncFS, eCryptfsParallel verteilt: GPFS, Lustre, . . .Pseudo: procfs, . . .Setzen hufig auf darunterliegenden Dateisystemen auf

    Michael Kuhn Dateisysteme 6 / 53

  • Dateisysteme Quellen

    Dateisysteme

    E/A-Schnittstellen

    Anfragen werden ber E/A-Schnittstellen realisiertWeiterleitung an das DateisystemUnterschiedliche Abstraktionsebenen

    Low-Level-FunktionalittPOSIX, MPI-IO, . . .

    High-Level-FunktionalittHDF, NetCDF, . . .

    Michael Kuhn Dateisysteme 7 / 53

  • Dateisysteme Quellen

    Dateisysteme

    E/A-Operationen

    1 fd = open("/path/to/file", O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);

    2 nb = write(fd, data, sizeof(data));3 rv = close(fd);4 rv = unlink("/path/to/file");

    Listing 1: E/A ber Low-Level-Funktionen

    Initialer Zugri ber PfadDanach ber File Descriptor (bis auf einige Ausnahmen)

    Funktionen befinden sich in der libcDiese fhrt System Calls durch

    Michael Kuhn Dateisysteme 8 / 53

  • Dateisysteme Quellen

    Dateisysteme

    E/A-Operationen. . .

    Mit open knnen auch Dateien erstellt werdenViele mgliche Flags und Modi

    write liefert die Anzahl der geschriebenen Bytes zurckMuss nicht notwendigerweise der bergebenen Greentsprechen (Fehlerbehandlung!)write verndert intern den Dateizeiger (alternativ: pwrite)

    Alle Funktionen liefern einen RckgabewertBei Fehlern sollte errno berpr werden

    Michael Kuhn Dateisysteme 9 / 53

  • Dateisysteme Quellen

    Dateisysteme

    VFS

    Virtual File System (Switch)Zentrale Dateisystemkomponente im Kernel

    Standardisiertes Interface fr alle Dateisysteme (POSIX)Gibt Dateisystemstruktur und -schnittstelle grtenteils vor

    Leitet Anfragen der Anwendungen weiterBasierend auf demMountpoint

    Ermglicht die Untersttzung unterschiedlichster DateisystemeAnwendungen bleiben durch POSIX trotzdem portabel

    Michael Kuhn Dateisysteme 10 / 53

  • Dateisysteme Quellen

    Dateisysteme

    VFS. . . [3]

    Applications (Processes)

    VFS

    malloc

    BIOs (Block I/O)

    The Linux Storage Stack Diagramhttp://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram

    Created by Werner Fischer and Georg SchnbergerLicense: CC-BY-SA 3.0, see http://creativecommons.org/licenses/by-sa/3.0/

    ext2 ext3btrfs

    ext4xfs ifs

    iso9660...

    NFS codaNetwork FS

    gfs ocfssmbfs ...

    pseudo FS specialpurpose FSproc sysfs

    futexfsusbfs ...

    tmpfs ramfsdevtmpfs

    pipefs

    network

    mmap(anonymous pages)

    block based FSre

    ad(2

    )

    write

    (2)

    open

    (2)

    stat

    (2)

    chm

    od(2

    )

    ...

    PageCache

    mdraid...

    stackable

    devices on top of normalblock devices drbd

    optional

    LVMBIOs (Block I/O)

    ceph

    struct bio- sector on disk - bio_vec cnt- bio_vec index- bio_vec list

    - sector cnt

    direct I/O(O_DIRECT)

    device mapperdm-crypt dm-mirror

    dm-thindm-cache bcache

    Michael Kuhn Dateisysteme 11 / 53

  • Dateisysteme Quellen

    Dateisysteme

    VFS. . . [3]

    Applications (Processes)

    VFS

    request-baseddevice mapper targets

    dm-multipath

    Physical devices

    HDD SSD DVDdrive

    MicronPCIe Card

    LSIRAID

    AdaptecRAID

    QlogicHBA

    EmulexHBA

    malloc

    BIOs (Block I/O)

    sysfs(transport attributes)

    SCSI upper level drivers/dev/sda .../dev/sdb

    SCSI low level driversmegaraid_sas

    aacraid

    qla2xxx ...libata

    ahci ata_piix ... lpfc

    Transport Classesscsi_transport_fc

    scsi_transport_sasscsi_transport_...

    /dev/vd*

    virtio_blk mtip32xx

    /dev/rssd*

    The Linux Storage Stack Diagramhttp://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram

    Created by Werner Fischer and Georg SchnbergerLicense: CC-BY-SA 3.0, see http://creativecommons.org/licenses/by-sa/3.0/

    ext2 ext3btrfs

    ext4xfs ifs

    iso9660...

    NFS codaNetwork FS

    gfs ocfssmbfs ...

    pseudo FS specialpurpose FSproc sysfs

    futexfsusbfs ...

    tmpfs ramfsdevtmpfs

    pipefs

    network

    nvmedevice

    The Linux Storage Stack Diagramversion 3.17, 2014-10-17

    outlines the Linux storage stack as of Kernel version 3.17

    mmap(anonymous pages)

    iscsi_tcp

    network

    null_blk/dev/rbd*

    block based FS

    read

    (2)

    write

    (2)

    open

    (2)

    stat

    (2)

    chm

    od(2

    )

    ...

    PageCache

    mdraid...

    stackable

    devices on top of normalblock devices drbd

    optional

    LVMBIOs (Block I/O)

    BIOs BIOsBlock Layer

    multi queueblkmq

    SoftwareQueues

    HardwareDispatchQueues

    ...

    ...

    hooked in device drivers(they hook in like stackeddevices do)

    BIOs

    maps bios to requests

    deadlinecfq

    noop

    I/O Scheduler

    HardwareDispatchQueue

    Requestbased Drivers

    BIObased DriversRequestbased Drivers

    rbd

    ceph

    struct bio- sector on disk - bio_vec cnt- bio_vec index- bio_vec list

    - sector cnt

    Fibre

    Cha

    nnel

    over

    Eth

    erne

    t

    LIO

    target_core_mod

    tcm

    _fc

    FireW

    ire

    ISCS

    I

    direct I/O(O_DIRECT)

    device mapper

    network

    iscsi_

    targ

    et_m

    od

    sbp_

    targ

    et

    target_core_filetarget_core_iblock

    target_core_pscsi

    vfs_writev, vfs_readv, ...

    dm-crypt dm-mirrordm-thindm-cache

    tcm

    _qla

    2xxx

    tcm

    _usb

    _gad

    get

    USB

    Fibre

    Cha

    nnel

    tcm

    _vho

    stVi

    rtual

    Hos

    t

    nvme

    /dev/nvme#n#

    SCSI Mid Layer

    virtio_pci

    LSI 12GbsSAS HBA

    mpt3sas

    bcache

    /dev/nullb*

    vmw_pvscsi

    /dev/skd*

    skd

    stecdevice

    virtio_scsi

    para-virtualizedSCSI

    VMware'spara-virtualized

    SCSI

    Michael Kuhn Dateisysteme 12 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Dateisystemobjekte

    Unterscheidung in Benutzer- und SystemsichtBenutzer sehen Dateien und VerzeichnisseDas System kennt zustzlich Inodes

    Relevant fr stat etc.

    InodesEnhalten MetadatenEigentliche Basisobjekte des Dateisystems

    Jeder Datei und jedem Verzeichnis ist ein Inode zugeordnetblicherweise eindeutige IDs

    Michael Kuhn Dateisysteme 13 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Dateisystemobjekte. . .

    DateienEnthalten Daten in Form eines Byte-ArraysKnnen gelesen/geschrieben werden (explizit)Knnen in den Speicher gemappt werden (implizit)

    VerzeichnisseEnthalten Dateien und VerzeichnisseZur Organisation des Namensraumes

    Michael Kuhn Dateisysteme 14 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Dateien

    1 nb = pwrite(fd, data, sizeof(data), 42);2 nb = pread(fd, data, sizeof(data), 42);

    Listing 2: Expliziter Zugri

    pwrite und pread verhalten sich wie write bzw. readExplizite Angabe des Osets und damit threadsicher

    Zugri ber File DescriptorKann vonmehreren Threads parallel genutzt werden

    Michael Kuhn Dateisysteme 15 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Dateien. . .

    1 char* pt = mmap(NULL, FILE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

    2 memcpy(pt + 42, data, sizeof(data));3 memcpy(data, pt + 42, sizeof(data));4 munmap(pt, FILE_SIZE);

    Listing 3: Impliziter Zugri

    mmap erlaubt es eine Datei in den Speicher einzublendenDatei beginnt an Adresse ptVerschiedene Sichtbarkeitseinstellungen (shared vs. private)

    Zugri wie auf andere SpeicherobjekteZ.B. via memcpy oder direkte Zuweisung

    Michael Kuhn Dateisysteme 16 / 53

  • Dateisysteme Quellen

    Dateisysteme

    Dateien. . .

    Beide Zugrisarten haben jeweils Vor- und NachteileBeide Modi profitieren vom Caching durch das Betriebssystem

    Expliziter ZugriVorteile: genaue Kontrolle ber E/ANachteile: separate Puer notwendig, Kopiervorgnge zwischenKernel- und Userspace

    Impliziter ZugriVorteile: keine separaten Puer notwendig, eiziente E/A du

Search related