S3-Laufwerksmapping unter Linux mit YAS3F

Amazon S3 hat ein reines HTTP basiertes API. Somit braucht man in der Regel entsprechende Tools oder eine eigene API-Programmierung, um S3 an seine Webapplikation anzubinden.

Da viele Web-Anwendungen noch rein Dateisystem-basiert arbeiten (z.B. Adobe Media Server) ist man versucht, das Problem der Anbindung von S3 an eine EC2-Instanz einfach über einen S3 Laufwerks-Mapper zu lösen. Insbesondere im Linux Umfeld gibt es da seit Jahren das Tool S3FS ( https://code.google.com/p/s3fs/wiki/FuseOverAmazon) was aber folgende Probleme hat:

  • es ist erstes bei einem Einsatz mit vielen kleinen Dateien nicht wirklich stabil
  • es hat keine Cluster-Unterstützung
  • die Order-Adressierung im S3 Bucket ist nicht mehr kompatibel zu Amazon S3 in der AWS Console und anderen Tools wie CloudBerry … mit der Folger das solche Ordner als 0 Bytes Dateien dargestellt werden. (das scheint jetzt wohl aber gerade mit der Version 1.68 behoben zu sein …)

Aus diesem Grunde haben wir bereits vor längerer Zeit entschieden S3FS nicht einzusetzen und eigentlich generell auf S3-Laufwerks-Mapper zu verzichten.

Im Rahmen eines größeren Consulting Projektes für die Berliner Philharmoniker haben wir uns doch noch mal intensiv mit Thema S3 Laufwerks-Mapping beschäftigt, da mit YAS3FS (Yet Another S3-backed File System) eine Alternative zu S3FS existiert. Wir sind gerade dabei YAS3F zu testen und konnten auch bereits einen fiesen Fehler unter hoher Last entdecken, der dann vom Programmierer Danilo Poccia extrem schnell behoben wurde, wow!

YAS3F ist bermerkenswert weil:

  • For maximum speed all data read from S3 is cached locally on the node, in memory or on disk, depending of the file size.
  • Clusterfähigkeit: SNS notifications are used to update other nodes in the cluster that something has changed on S3 and they need to invalidate their cache
  • Unterstützung von IAM Roles
  • und viele andere tolle Sachen: https://github.com/danilop/yas3fs

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.