Dateisysteme - Hochleistungs-Ein-/Ausgabe · Dateisysteme Hochleistungs-Ein-/Ausgabe MichaelKuhn...

53
Dateisysteme Quellen Dateisysteme Hochleistungs-Ein-/Ausgabe Michael Kuhn Wissenschaliches Rechnen Fachbereich Informatik Universität Hamburg -- Michael Kuhn Dateisysteme /

Transcript of Dateisysteme - Hochleistungs-Ein-/Ausgabe · Dateisysteme Hochleistungs-Ein-/Ausgabe MichaelKuhn...

Dateisysteme Quellen

DateisystemeHochleistungs-Ein-/Ausgabe

Michael Kuhn

Wissenscha�liches RechnenFachbereich InformatikUniversität 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

Speichergerät/-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

StrukturierungÜblicherweise Dateien und VerzeichnisseHierarchische OrganisationAndere Ansätze: Tagging

Verwaltung von Daten und MetadatenBlockallokationZugri�srechte, Zeitstempel etc.

Dateisysteme nutzen ein darunter liegendes SpeichergerätOder 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 häufig 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-FunktionalitätPOSIX, MPI-IO, . . .

High-Level-FunktionalitätHDF, 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 führt System Calls durch

Michael Kuhn Dateisysteme 8 / 53

Dateisysteme Quellen

Dateisysteme

E/A-Operationen. . .

Mit open können auch Dateien erstellt werdenViele mögliche Flags und Modi

write liefert die Anzahl der geschriebenen Bytes zurückMuss nicht notwendigerweise der übergebenen Größeentsprechen (Fehlerbehandlung!)write verändert intern den Dateizeiger (alternativ: pwrite)

Alle Funktionen liefern einen RückgabewertBei Fehlern sollte errno überprü� werden

Michael Kuhn Dateisysteme 9 / 53

Dateisysteme Quellen

Dateisysteme

VFS

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 weiterBasierend auf demMountpoint

Ermöglicht die Unterstützung 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 SchönbergerLicense: CC-BY-SA 3.0, see http://creativecommons.org/licenses/by-sa/3.0/

ext2 ext3

btrfs

ext4

xfs ifsiso9660

...

NFS coda

Network FS

gfs ocfssmbfs ...

pseudo FS specialpurpose FSproc sysfs

futexfs

usbfs ...

tmpfs ramfs

devtmpfspipefs

network

mmap(anonymous pages)

block based FSre

ad

(2)

wri

te(2

)

op

en(2

)

stat(

2)

chm

od

(2)

...

PageCache

mdraid...

stackable

devices on top of “normal”block devices drbd

optional

LVM

BIOs (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_sas

scsi_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 SchönbergerLicense: CC-BY-SA 3.0, see http://creativecommons.org/licenses/by-sa/3.0/

ext2 ext3

btrfs

ext4

xfs ifsiso9660

...

NFS coda

Network FS

gfs ocfssmbfs ...

pseudo FS specialpurpose FSproc sysfs

futexfs

usbfs ...

tmpfs ramfs

devtmpfspipefs

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

)

wri

te(2

)

open(2

)

stat(

2)

chm

od(2

)

...

PageCache

mdraid...

stackable

devices on top of “normal”block devices drbd

optional

LVM

BIOs (Block I/O)

BIOs BIOs

Block Layer

multi queue

blkmq

SoftwareQueues

HardwareDispatchQueues

...

...

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

BIOs

maps bios to requests

deadline

cfqnoop

I/O Scheduler

HardwareDispatchQueue

Requestbased Drivers

BIObased Drivers

Requestbased Drivers

rbd

ceph

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

- sector cnt

Fibre

Channel

over

Eth

ern

et

LIO

target_core_mod

tcm

_fc

Fire

Wir

e

ISC

SI

direct I/O(O_DIRECT)

device mapper

network

iscs

i_ta

rget_

mod

sbp_t

arg

et

target_core_file

target_core_iblock

target_core_pscsi

vfs_writev, vfs_readv, ...

dm-crypt dm-mirror

dm-thindm-cache

tcm

_qla

2xxx

tcm

_usb

_gadget

USB

Fibre

Channel

tcm

_vh

ost

Vir

tual H

ost

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 zusätzlich Inodes

Relevant für stat etc.

InodesEnhalten MetadatenEigentliche Basisobjekte des Dateisystems

Jeder Datei und jedem Verzeichnis ist ein Inode zugeordnetÜblicherweise eindeutige IDs

Michael Kuhn Dateisysteme 13 / 53

Dateisysteme Quellen

Dateisysteme

Dateisystemobjekte. . .

DateienEnthalten Daten in Form eines Byte-ArraysKönnen gelesen/geschrieben werden (explizit)Können 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 O�sets 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 Zugri�sarten haben jeweils Vor- und NachteileBeide Modi profitieren vom Caching durch das Betriebssystem

Expliziter Zugri�Vorteile: genaue Kontrolle über E/ANachteile: separate Pu�er notwendig, Kopiervorgänge zwischenKernel- und Userspace

Impliziter Zugri�Vorteile: keine separaten Pu�er notwendig, e�iziente E/A durchdas Betriebssystem, keine unnötigen KopiervorgängeNachteile: keine genaue Kontrolle, kompliziertereFehlerbehandlung (Signale)

Michael Kuhn Dateisysteme 17 / 53

Dateisysteme Quellen

Dateisysteme

Verzeichnisse

Inode Größe Namenslänge Dateityp Name23 10 2 2 .\024 11 3 2 ..\0...

......

......

42 14 6 1 hello\043 14 6 2 world\0

Abbildung: ext4-Verzeichniseintrag [1]

Traditionell lineares ArrayLangsam, da über das komplette Array iteriert werdenmuss

Heutzutage eher BaumstrukturenDeutlich komplexer, dafür geringere Zugri�szeiten

Name wird nicht im Inode gespeichertMehrere Namen können auf denselben Inode zeigen

Michael Kuhn Dateisysteme 18 / 53

Dateisysteme Quellen

Dateisysteme

Inodes

Feldgröße Inhalt2 Bytes Berechtigungen2 Bytes Benutzer-ID4 Bytes Dateigröße4 Bytes Zugri�szeit4 Bytes Inode-Änderungszeit4 Bytes Datenänderungszeit4 Bytes Löschzeit2 Bytes Gruppen-ID2 Bytes Linkzahl...

...60 Bytes Blockzeiger, Extent-Baum oder Inline-Daten...

...4 Bytes Versionsnummer100 Bytes Freier Speicher

Abbildung: ext4-Inode (256 Bytes) [1]

Michael Kuhn Dateisysteme 19 / 53

Dateisysteme Quellen

Dateisysteme

Inodes. . .

Kompliziert durch RückwärtskompatibilitätOn-Disk-Format kann nur schwer geändert werden

Viele Felder sind aus Kompatibilitätsgründen aufgeteiltZeitstempel: 4 Bytes für Sekunden seit 1970, 4 Bytes fürNanosekundenauflösungGröße: Obere und untere 4 Bytes

Felder mehrfach überladenBlockzeiger, Extent-Baum oder Inline-Daten (falls Datei kleinerals 60 Bytes)100 Bytes am Inode-Ende für erweiterte Attribute

Michael Kuhn Dateisysteme 20 / 53

Dateisysteme Quellen

Dateisysteme

Inodes. . .

1 $ touch foo2 $ ls -l foo3 -rw-r--r--. 1 u g 0 19. Apr 18:48 foo4 $ ln foo bar5 $ ls -l foo bar6 -rw-r--r--. 2 u g 0 19. Apr 18:48 bar7 -rw-r--r--. 2 u g 0 19. Apr 18:48 foo8 $ stat --format=%i foo bar9 64117410 64117411 $ rm foo12 $ ls -l bar13 -rw-r--r--. 1 u g 0 19. Apr 18:48 bar

Listing 4: Inode vs. Datei

Michael Kuhn Dateisysteme 21 / 53

Dateisysteme Quellen

Dateisysteme

POSIX-Schnittstelle

Syntaxopen, close, creatread, write, lseekchmod, chown, statlink, unlink

SemantikSpezifiziert auch wie sich E/A-Operationen verhalten sollenwrite: “POSIX requires that a read(2) which can be proved tooccur a�er a write() has returned returns the new data. Note thatnot all filesystems are POSIX conforming.”

Michael Kuhn Dateisysteme 22 / 53

Dateisysteme Quellen

ext4

ext4

Standard-Dateisystem in vielen Linux-DistributionenEingeführt 2006, stabil 2008Vorgänger: ext, ext2, ext3

Statische Festlegung bei DateisystemerzeugungInode-ZahlBlockgröße

Traditionelles DateisystemDaten werden direkt geändert (kein Copy on Write)Keine Prüfsummen für Daten

Michael Kuhn Dateisysteme 23 / 53

Dateisysteme Quellen

ext4

ext

Erstes Dateisystem speziell für LinuxNutzte als erstes Dateisystem die VFS-Schicht

Inspiriert vom Unix File System (UFS)Beseitigte Beschränkungen des MINIX-Dateisystems

Dateigrößen bis 2 GBDateinamen bis 255 Zeichen

Michael Kuhn Dateisysteme 24 / 53

Dateisysteme Quellen

ext4

ext2

Separate Zeitstempel für Zugri� und Inode-/DatenänderungDatenstrukturen für zukün�ige Erweiterungen ausgelegtTestumgebung für neue VFS-Funktionen

Access Control Lists (ACLs)Erweiterte Attribute

Michael Kuhn Dateisysteme 25 / 53

Dateisysteme Quellen

ext4

ext3

JournalingErklärung folgt später

Dateisystemvergrößerung zur LaufzeitNützlich für LVM-Umgebungen

H-Baum für größere VerzeichnisseVerkürzt die Suchzeiten im Verzeichnis

Michael Kuhn Dateisysteme 26 / 53

Dateisysteme Quellen

ext4

ext4

Größere Dateisysteme, Dateien und VerzeichnisseExtentsPreallokation, verzögerte Allokation und verbesserteMultiblockallokationJournal-PrüfsummenSchnellere DateisystemüberprüfungNanosekunden-ZeitstempelUnterstützung für TRIM

Michael Kuhn Dateisysteme 27 / 53

Dateisysteme Quellen

ext4

ext4. . .

Inhalt GrößePadding (Blockgruppe 0) 1.024 BytesSuperblock 1 BlockGruppenbeschreibung nBlöckeReservierte GDT-Blöcke mBlöckeDaten-Bitmap 1 BlockInode-Bitmap 1 BlockInode-Tabelle k BlöckeDaten-Blöcke l Blöcke

Abbildung: ext4-Blockgruppe [1]

Das Speichergerät ist in mehrere Blockgruppen unterteiltFlexible Blockgruppen fassen mehrere Blockgruppen zusammen

Michael Kuhn Dateisysteme 28 / 53

Dateisysteme Quellen

ext4

ext4. . .

Blockgröße 1 KiB 2KiB 4KiB 64KiBBlöcke 264 264 264 264

Inodes 232 232 232 232

Dateisystemgröße 16 ZiB 32 ZiB 64 ZiB 1 YiBDateigröße (Extents) 4 TiB 8 TiB 16 TiB 256 TiBDateigröße (Blöcke) 16 GiB 256GiB 4 TiB 256 PiB

Abbildung: ext4-Limits im 64-Bit-Modus [1]

Standardgröße ist 4 KiB (und o�izielles Maximum)Sollte nicht größer als Seitengröße gewählt werden

Michael Kuhn Dateisysteme 29 / 53

Dateisysteme Quellen

ext4

Allokation

BlockbasiertViele Blöcke gleicher Größe (üblicherweise 4 KiB)Zeiger auf Blöcke im Inode

Direkt, indirekt, doppelt indirekt, dreifach indirektHoher Overhead bei großen Dateien

Beispiel: 1 TiB große Datei benötigt 268.435.456 ZeigerBeschränkt maximale Dateigröße

Michael Kuhn Dateisysteme 30 / 53

Dateisysteme Quellen

ext4

Allokation. . . [2]

Michael Kuhn Dateisysteme 31 / 53

Dateisysteme Quellen

ext4

Allokation. . .

ExtentbasiertWenige möglichst große Extents

Vier Extents können im Inode gespeichert werdenMehr in einer Baumstruktur und zusätzlichen Blöcken

Zeiger auf Startblock und LängeMaximale Länge: 32.768 BlöckeEntspricht 128MiB bei einer Blockgröße von 4 KiB

Ermöglicht größere Dateien

Michael Kuhn Dateisysteme 32 / 53

Dateisysteme Quellen

ext4

Allokation. . .

BlockallokationVersuche zusammenhängende Blöcke zu allokierenVersuche Blöcke in derselben Blockgruppe zu allokieren

Multiblockallokation und verzögerte AllokationSpekulativ 8 KiB bei Dateierzeugung allokierenAllokation wird erst durchgeführt, wenn Blöcke auf dasSpeichergerät geschrieben werdenmüssen

Michael Kuhn Dateisysteme 33 / 53

Dateisysteme Quellen

ext4

Allokation. . .

Dateien und VerzeichnisseBlöcke möglichst in der Blockgruppe des Inodes allokierenDateien möglichst in der Blockgruppe des Verzeichnissesallokieren

Ziele der AllokationsstrategienMöglichst große Zugri�e

Festplatten erreichen nur geringe IOPS-WerteZugri�e nahe beieinander

Reduziert Kopfbewegungen bei FestplattenMetadaten der Blockgruppe eventuell schon im Cache

Optimierungen bei SSDs weniger von Bedeutung

Michael Kuhn Dateisysteme 34 / 53

Dateisysteme Quellen

ext4

Sparse-Dateien und Preallokation

Sparse-Dateien: Dateien mit „Löchern“Z.B. mit lseek oder truncateE�iziente Speicherung von Dateien mit vielen 0-Bytes

1 $ truncate --size=1G dummy2 $ ls -lh dummy3 -rw-r--r--. 1 u g 1,0G 18. Apr 23:49 dummy4 $ du -h dummy5 0 dummy

Listing 5: Erzeugung einer Sparse-Datei

Michael Kuhn Dateisysteme 35 / 53

Dateisysteme Quellen

ext4

Sparse-Dateien und Preallokation. . .

Preallokation: Speicher vorallokierenMit fallocate bzw. posix_fallocateVerhindert Fragmentierung bei vielen Dateivergrößerungen

1 $ fallocate --length $((1024 * 1024 * 1024)) dummy2 $ ls -lh dummy3 -rw-r--r--. 1 u g 1,0G 19. Apr 19:14 dummy4 $ du -h dummy5 1,1G dummy

Listing 6: Preallokation einer Datei

Unterschiedliche Basen je nach Werkzeug

Michael Kuhn Dateisysteme 36 / 53

Dateisysteme Quellen

ext4

Journaling

Journaling zur Sicherung der Konsistenz des DateisystemsDateisystemoperationen benötigen mehrere SchritteZ.B. das Löschen einer Datei

1 Entfernen des Verzeichniseintrags2 Freigeben des Inodes3 Freigeben der Datenblöcke

Problematisch im Fall eines Absturzes

Michael Kuhn Dateisysteme 37 / 53

Dateisysteme Quellen

ext4

Journaling. . .

Geplante Änderungen werden ins Journal eingetragenEntfernen wenn Operation vollständig durchgeführt

Bei der anschließenden DateisystemüberprüfungÄnderungen wiederholen oderÄnderungen verwerfen

Unterschiedliche ModiMetadaten-Journaling und volles Journaling

Michael Kuhn Dateisysteme 38 / 53

Dateisysteme Quellen

ext4

Journaling. . .

Journal: Alle Änderungen werden ins Journal geschriebenDeaktiviert verzögerte Allokation und O_DIRECT

Ordered: Metadaten werden ins Journal geschriebenZugehörige Daten werden vor Metadaten geschriebenProblematisch mit verzögerter AllokationIst die Standardeinstellung

Writeback: Metadaten werden ins Journal geschriebenBietet höchste Leistung aber geringste Sicherheit

Michael Kuhn Dateisysteme 39 / 53

Dateisysteme Quellen

Object Stores

Funktionen

„Dateisystem light“Dünne Abstraktionsschicht über SpeichergerätenObjektbasierter Zugri� auf Daten

Nur GrundoperationenErstellen, Ö�nen, Schließen, Lesen, Schreiben

Manchmal Object SetsKönnen benutzt werden um verwandte Objekte zu gruppieren

Michael Kuhn Dateisysteme 40 / 53

Dateisysteme Quellen

Object Stores

Funktionen. . .

Üblicherweise keine PfadeZugri� über eindeutige IDsKein Overhead durch PfadauflösungDadurch auch flacher Namensraum

Block-/Extent-AllokationEiner der komplexesten und leistungsrelevantesten Aspekte

Auf unterschiedlichen Abstraktionsebenen verfügbarCloudspeicher, Festplatte

Michael Kuhn Dateisysteme 41 / 53

Dateisysteme Quellen

Object Stores

Schichtung

Können als Unterbau für Dateisysteme genutzt werdenErlaubt Konzentration auf DateisystemfunktionalitätSpeicherverwaltung durch separate Schicht

Bei lokalen Dateisystemen nicht sinnvollFunktionalität größtenteils durch POSIX vorgegebenHauptunterschied ist Blockallokation

Sehr sinnvoll für parallele verteilte DateisystemeKein redundanter Dateisystem-Overhead

Michael Kuhn Dateisysteme 42 / 53

Dateisysteme Quellen

Datenstrukturen

B-Baum vs. B+-Baum

7 16

9 121 2 18 215 6

Abbildung: B-Baum [4]

Verallgemeinerter BinärbaumOptimiert für Systeme, die große Blöcke lesen/schreibenZeiger und Daten gemischt

Michael Kuhn Dateisysteme 43 / 53

Dateisysteme Quellen

Datenstrukturen

B-Baum vs. B+-Baum.. .

7 16

9 121 2 18 215 6 7 16

Abbildung: B+-Baum [4]

Daten nur in BlätternVorteilha� für Caching, da einfacher alle Knoten zu cachenBenutzt in NTFS, XFS, . . .

Michael Kuhn Dateisysteme 44 / 53

Dateisysteme Quellen

Datenstrukturen

Alternativen

H-BaumBasiert auf B-BaumAndere Behandlung von Hash-KollisionenBenutzt in ext3 und ext4

Bε-BaumOptimiert für SchreibvorgängeVerbesserte Leistung für Einfügeoperationen, Bereichsabfragenund Aktualisierungen

Michael Kuhn Dateisysteme 45 / 53

Dateisysteme Quellen

Leistungsbewertung

Leistungsbewertung

Dateisystemleistung ist schwierig zu bewertenViele unterschiedliche FaktorenDaten- vs. MetadatenleistungLeistung unterschiedlicher FunktionenLeistung für spezifische Anforderungenmessen

Datensicherheit kostet üblicherweise LeistungVolles Journaling, Prüfsummen etc.

Michael Kuhn Dateisysteme 46 / 53

Dateisysteme Quellen

Leistungsbewertung

Kernel- vs. Userspace

Dateisysteme üblicherweise direkt im Kernel implementiertHoher WartungsaufwandKomplexere Implementierung

Alternative: Filesystem in Userspace (FUSE)Besteht aus Kernelmodul und BibliothekEntwicklung von Dateisystemen als normale ProzesseUmleitung in Userspace durch VFS und FUSE-ModulGeringere Leistung durch Kontextwechsel

Michael Kuhn Dateisysteme 47 / 53

Dateisysteme Quellen

Leistungsbewertung

Kernel- vs. Userspace. . . [5]

libfuse

glibcglibc

FUSE

Ext3

...

VFS

ls -l /tmp/fuse

./hello /tmp/fuse

Kernel

Userspace

NFS

Michael Kuhn Dateisysteme 48 / 53

Dateisysteme Quellen

Ausblick und Zusammenfassung

Ausblick

Moderne Dateisysteme integrieren zusätzliche FunktionenVolumenverwaltung, Prüfsummen, Schnappschüsse, . . .Komfort vs. Datensicherheit

Basis für parallele verteilte DateisystemeExistierende und optimierte Blockallokation etc.Object Stores häufig besser geeignet

Michael Kuhn Dateisysteme 49 / 53

Dateisysteme Quellen

Ausblick und Zusammenfassung

Zusammenfassung

Dateisysteme organisieren Daten und MetadatenÜblicherweise standardisierte Schnittstelle

Hauptobjekte sind Dateien und VerzeichnisseInodes speichern Metadaten

Neue Techniken zur E�izienzsteigerungJournaling um Konsistenz sicherzustellenSpeicherallokation mit Hilfe von ExtentsBaumstrukturen für skalierbaren Zugri�

Michael Kuhn Dateisysteme 50 / 53

Dateisysteme Quellen

1 DateisystemeOrientierungDateisystemeext4Object StoresDatenstrukturenLeistungsbewertungAusblick und Zusammenfassung

2 Quellen

Michael Kuhn Dateisysteme 51 / 53

Dateisysteme Quellen

Quellen I

[1] djwong. Ext4 Disk Layout. https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout.

[2] Hal Pomeranz. Understanding Indirect Blocks in Unix FileSystems. http://digital-forensics.sans.org/blog/2008/12/24/understanding-indirect-blocks-in-unix-file-systems.

[3] Werner Fischer and Georg Schönberger. Linux Storage StackDiagramm. https://www.thomas-krenn.com/de/wiki/Linux_Storage_Stack_Diagramm.

[4] Wikipedia. B-tree.http://en.wikipedia.org/wiki/B-tree.

Michael Kuhn Dateisysteme 52 / 53

Dateisysteme Quellen

Quellen II

[5] Wikipedia. Filesystem in Userspace. http://en.wikipedia.org/wiki/Filesystem_in_Userspace.

Michael Kuhn Dateisysteme 53 / 53