symlink.ch
Wissen Vernetzt - deutsche News für die Welt
 
symlink.ch
FAQ
Mission
Über uns
Richtlinien

Moderation
Einstellungen
Story einsenden

Suchen & Index
Ruhmeshalle
Statistiken
Umfragen

Redaktion
Themen
Partner
Planet

XML | RDF | RSS
PDA | WAP | IRC
Symbar für Opera
Symbar für Mozilla

Freunde
Benutzergruppen
LUG Switzerland
LUG Vorarlberg
LUGen in DE
SIUG
CCCZH
Organisationen
Wilhelm Tux
FSF Europe
Events
LinuxDay Dornbirn
BBA Schweiz
CoSin in Bremgarten AG
VCFe in München
Menschen
maol
Flupp
Ventilator
dawn
gumbo
krümelmonster
XTaran
maradong
tuxedo

 
Metadaten oder Dateinamen
Veröffentlicht durch Raffzahn am Donnerstag 06. Dezember, 10:37
Aus der iloveyou.txt.vba Abteilung
Technologie Ars Technica hat unter den Titeln Metadata, The Mac, and You und File Name Extensions.section ein paar sehr interessante Betrachtung zum Thema Metadaten im Filesystem. Nicht nur für Macianer

Aktueller Auslöser ist eine Technote von Apple, die vorgibt keine Metadaten zu verwenden, sondern Dateitypen ala winDOwS - ein Überbleibsel (der Unixhörigkeit?) der Next-Fraktion. Erregte Macianer haben sogar schon eine Onlinepetition aufgesetzt. Massgeblich gestaltet von John Siracusa, dem Autor des obengenannten Artikels.

Unter CP/M oder anderen frühen Betriebssystemen war die Beschränkung auf Metadaten die alleinigst den Aufinden der Dateien dienten (Lage, Größe) ja noch verständlich. Das Hinzufügen von Änderungsdatum und ein paar rudimentären Rechten unter DOS und Unix, hat da nicht allzuviel geändert (Ok, DOS hätte warscheinlich garnix, wenn die das nicht von Unix abgeschrieben hätten). 'Richtige' Filesysteme zeichnen sich dadurch aus, daß diese nicht minimalen Metadaten in gewissen Grenzen frei verfügbare Metadaten abgelegt werden können, oder zumindest einige Grundassoziationen wie z.B. eine Klassifizierung der Daten und ggf. des Erzeugers. OS/2 war hier wirklich wegweisend. Genaugenommen waren eigentlich CP/M und DOS (FAT) Unix ebenfalls voraus, da die Dateierweiterung nicht einfach aus den letzten Zeichen des Dateinamens nach einem Punkt bestanden, sondern in einem extra 3 Byte langen Feld gehalten werden - nur die Anzeige erfolgt Traditionell (und um das Parsen einfach zu machen) durch zusammenfügen von Dateiname und Typ mittels eines Punktes. Unter CP/M hat das auch noch recht gut hingehauen, unter DOS hat sich aber irgendwie niemand mehr darum gekümmert.

Gerade das Fehlen derartiger im Filesystem unterstützen Metadaten gehört zu den größten Problemen bei Windows und auch aktuellen Unixoberflächen. Da behilft man sich dann mit Krücken wie riesigen Datenbanken um Programme an Dateitypen und diese an Dateinamensbestandteile zu binden - natürlich getrennt von den Dateien selbst, so das nicht nur eine einfache Änderung des sichtbaren Namens die Bindung zerstört, sondern diese auch durch viele andere Fehler beeinträchtigt werden kann.

Es ist schon sehr frustrierend, wenn es auf der einen Seite, mit den MIME Typen ein recht schönes System für dateitypen gibt, das aber dann sowohl auf Server, als auch auf Clientseite wieder nur vermurkst wird ... Na ja, was solls. Das ist auch eine der Hoffnungen an Linux, die gescheitert sind. Nix neues, nur ein Wiederkäuen der Minimalstandards.

Doch noch neues Mac OS 9 Update | Druckausgabe | Das zürcherische Dilemma  >

 

 
symlink.ch Login
Login:

Passwort:

extrahierte Links
  • Apple
  • Linux
  • Technote von Apple
  • Onlinepetition
  • Metadata, The Mac, and You
  • File Name Extensions.section
  • Mehr zu Technologie
  • Auch von Raffzahn
  • Kolumnen
  • Mediahype Superbowl
  • MS und Linux im deutschen Bundestag
  • Jungesellenfutter, jetzt auch mit Geschmack
  • Die Studenten und die coole Firma Microsoft
  • Microsoft Student Community
  • Kryptologische Forschung - ein gefaehrliches Pflaster
  • NetBSD als Desktopausgabe
  • Marktanteil Netscape + IE
  • Neue Schweizer Zertifizierungsstelle
  • IFPI macht Stimmung gegen CD-Brenner
  • Diese Diskussion wurde archiviert. Es können keine neuen Kommentare abgegeben werden.
    BeOS rulez (Score:1)
    Von maol (maol.symlink.ch) am Thursday 06. December, 10:56 MET (#1)
    (User #1 Info) http://www.maol.ch/
    Die haben ein relationales Dateisystem mit einem Haufen Metadaten. So kann man AFAIK die ID3-Info von mp3-Dateien ganz einfach in die Metadaten legen, und dann mit der Dateisuche nach Titel, Artist etc. suchen. Genial.

    --
    paranoid? das sind andere

    Re:BeOS rulez (Score:1)
    Von Raffzahn am Thursday 06. December, 11:02 MET (#2)
    (User #345 Info) http://www.vcfe.org/
    Jep, die haben das auch recht gwand geloest - trotz sehr weitgehender Unixaehnlichkeit. Der OS/2 Weg war ja fast sowas wie die Header einer MIME Mail (oder einer HTTP Uebertragung), also (fast) beliebieg viele Kennzeichner/Wert Paare.

    Alles moegliche wird als Filesysteme gebastelt (fuer Linux), aber richtige Fortschritte seh ich nicht - dabei waere gerade mit MIME das Metadatenthema als echter anerkannter Standard schon da.

    Gruss
    H.
    Re:BeOS rulez (Score:1)
    Von tbf am Thursday 06. December, 13:24 MET (#3)
    (User #21 Info)
    Da hab' ich doch eine Idee: Warum nicht "einfach" 'n weiteres Linux-Filesystem hacken, welches sich schlicht über beliebige andere Filesysteme legt, aber Metadaten in den Filestream einbaut? Soweit ich es überblicke ist der Kernel sogar so flexibel aufgebaut, daß dieses virtuelle FS auf das physische zugreifen könnte, ohne das physische in den Userspace einzublenden (mounten).
    Re:BeOS rulez (Score:1)
    Von maol (maol.symlink.ch) am Thursday 06. December, 13:37 MET (#4)
    (User #1 Info) http://www.maol.ch/
    "aber Metadaten in den Filestream einbaut?"

    Klar doch. Da ist es noch das kleinste Hindernis, dass das eine Partition (oder eine Datei) braucht, wo die Metadaten gespeichert sind.
    Viel wichtiger für den Erfolg eines solchen FS sind die Userspace Tools wie ls, grep, sort, less etc., die man alle Metadatenfähig machen müsste.

    Und wenn man schon dabei ist, könnte man gleich noch eine Trash-Funktion einbauen, die ein einfaches undelete gelöschter Dateien erlaubt - das ist ein Features, welches alle modernen Desktop Environments manuell nachbauen mussten.

    --
    paranoid? das sind andere

    Re:BeOS rulez (Score:1)
    Von Raffzahn am Thursday 06. December, 14:31 MET (#5)
    (User #345 Info) http://www.vcfe.org/
    Hmm - also das mit dem reueberlegen ist nicht so das wahre - es erlaubt naemlich immer noch mit tools die auf das darunterliegende System zugreifen Inkonsistenzen zu erzeugen.

    (Wobei man in dem fall gleich das nachmachen koennte was OS/2 auf FAT laufwerken macht - zwei Dateien \ea data. sf und \wp root. sf die die Metainformation vorhaelt)

    Es sollte also schon ein System sein das in sich geschlossen ist, und direkt im System gemounted wird. Ein Ausgehen von einem anderen unterliegenden System waer schon nicht schlecht - im Prinzip braucht man nur einen Mechanismus um zu einem Dateieintrag noch weitere 'Dateien' zu hinterlegen. Im Minimalfall reicht eine weitere Kette (iNode), in der dann die Metadaten abgelegt werden. D.h. man kann da dann alle Metainformationen da reinpacken. Mehrere haetten den vorteil das man tatsaechlich verschiedene 'Zweige' haben kann - so wie der Mac mit seiner unterscheidung in resource fork(s) und data fork.

    Im Ext2fs liesse sich das ganze schoen im erweiterten Dateieintrag unterbringen. Nur ein paar systemtools muessten natuerlich angepasst werden um nicht mengenweise unverlinkte iNodes anzuzeigen (und zu reparieren versuchen)

    Genaugenommen, wenn wir nur den Mimetyp hinterlegen wollen - also nicht gleich die Superloesung, dann passt das auch gut direkt in den Dateieintrag von Ext2fs. Das ganze hat auch den Vorteil das es extrem schnell ist.

    Ein anderer Weg fuer beliebige Dateisysteme waere das darueberstuelpen indem man fuer jede Datei ein Dir anlegt (das sich nur nicht als solches zeigt), welches dann als 'echte' dateien einmal die Datendatei, und zum anderen beliebige Metadateien enthaelt. Das liesse sich ueber jedes Dateisystem stuelpen, ist halt nur wie oben schon erwaehnt fehleranfaellig.

    Gruss
    H.
    Re:BeOS rulez (Score:1)
    Von tbf am Friday 07. December, 02:49 MET (#8)
    (User #21 Info)
    Hey, die Directory-Idee ist absolut sexy:
    • Falls jemand auf die ungefilterte Partition zugreift ist bleibt sie lesbar.
    • Legacy-Tools könnte man über einen weiteren Mount-Point Zugriff auf die Metadaten geben. (Verweiste Metadaten können nicht entstehen, da wenn das Meta-Directory gelöscht wird. Aber ist es sindvoll, daß Meta-Dateien einfach im Filesystem verstreut werden dürfen: "cp cool-file/mime-type somewhere-else"...))
    • Das Nachträgliche Überstülpen des MetaFS wird einfach: Ist beim ersten Zugriff die Datei wirklich 'ne Datei, wird das Meta-Directory angelegt, die Datei reingeschoben. Problem: Echte Verzeichnisse müßten gesondert markiert werden.
    • Was ich nicht sehe ist die Fehleranfälligkeit: Das echte Filesystem läßt sich problemlos verstecken...
    Direkt an den Inodes rumbasteln ist recht haarig: Wie Du selbst erkannt hast: Was passiert, wenn irgend 'n Tool das fs für'n reines ext2fs hält und anfängt rumzudoktorn? Außerdem wäre man auf ext2 festgelgt und hätte Probleme andere Filesystems, wie nfs, smbfs, reiserfs, ... drunterzulegen...
    Re:BeOS rulez (Score:1)
    Von Raffzahn am Friday 07. December, 13:53 MET (#12)
    (User #345 Info) http://www.vcfe.org/
    Weiss nicht, die suesse muesste sich schon ganz schoen auftakeln das ich sie Sexy finden koennte (und ich entsprechend Druck haben :)

    Ich mach mal ein Beispiel, damit leichter wird:
    Die Datei SexyPic welche ein GIF (image/gif) enthaelt soll im Verzeichnis /home/raffi/MeineBilder abgelegt werden.
    Im Rahnmen des MetaFS schaut der Pfad fuer den Anwender dann so aus:
    /home/raffi/MeineBilder/SexyPic

    Der daraus resultirende Baum im darunterliegenden Verzeichnis schaut dann z.B. so aus:
    a) Ein Metafile
    /home/raffi/MeineBilder/SexyPic/
    /home/raffi/MeineBilder/SexyPic/Data
    /home/raffi/MeineBilder/SexyPic/Meta

    Wobei Data die eigentliche Datei ist, und Meta Beschreibungen wie bei Mail/HTTP headern enthalt, also z.B.:
    Content-Type: image/gif
    X-Creator: MS-Paint

    Oder aber
    b) getrennte Dateien fuer jedes Metadatum:
    /home/raffi/MeineBilder/SexyPic/
    /home/raffi/MeineBilder/SexyPic/Data
    /home/raffi/MeineBilder/SexyPic/Content-Type
    /home/raffi/MeineBilder/SexyPic/X-Creator

    Hier kann man sich vorstellen als wenn jede Datei in dem Verzeichnis ein Tag mit einem Inhalt ist - Das Data-Tag enthaelt halt zufaellig die Daten selbst.

    (Im Rahmen von ext2/3fs koennte man die Headerwerte auch selbst in die Verzeichniseintraege der Tags packen)

    Nun zu deinen Anmerkungen:

    - Die Lesbarkeit ist nur im Sinne des darunterliegenden Systems gegeben. Schon beim Dateinamen scheiterts, da der der Applikation bekannte im darunterliegenden Filesystem unvollstaendig ist und auf ein Dir zeigt.

    - Verwaiste Metadaten koennen durchaus entstehen, wenn ueber das darunterliegende FS zugegriffen wird, und z.B. nur der Data Zweig geloescht wird.

    - Darueberstuelpen waere schon eine sache - ich dachte da aber eher an eine Emulationsschicht.

    - Die Fehleranfaelligkeit ergibt sich zum einen dadurch das man mit 'alten' tools direkt auf das darunterliegende System zugreifen kann - und damit z.B. ein Textfile in die Datei speichern, obwohl der Typ image/gif sagt, oder anderes. Zum anderen dadurch das dier eine groessere Nummer von Operationen noetig sind, und entsprechend die Fehleranfaelligkeit steigt.

    Und das fuehrt auch gleich zum naechsten Problem, naemlich der Performance - um jetzt zum beispiel an die Daten zu kommen sind mindestens 3 Zugriffe noetig, anstelle von 2en - Erst den Direintrag im 'originalverzeichniss lesen, dann den Verzeichnisblock mit den Metadatendateien lesen, und dann erst auf den ersten Datenblock der Datei zugreifen. im prinzip ist das wie als wuerde man alle dateien nurnoch ueber Links ansprechen ... ist zwar ganz nett, aber langsamm.

    Ext2/3fs waere fuer mich der natuerlichste Kandidat um ein direkt im FS implementiertes metadatensystem zu machen. Das ext steht naemlich wirklich fuer Erweiterbar - die Direintraege sind (in Grenzen) gereits darauf vorbeteitet zusaetzliche Informationen zu tragen. Ausserdem laeuft erstmal alles was man so an tools hat weiter.

    Die beschraenkung auf's ext2/3fs ist natuerlich ein Nachteil wenn man ein anderes verwendet - nur ist man solche ja bereits gewohnt. Dazu kommt das man die Emulationsschicht die ich mir fuer die 'alten' daten vorstelle hier auch verwenden kann. Dann ist es zumindest nicht schlechter als jetzt.

    Meinung ?

    Gruss
    H.
    Re:Meinung (Score:1)
    Von tbf am Friday 07. December, 23:16 MET (#13)
    (User #21 Info)
  • Lesbarkeit: Wer sagt, daß das sexy picture "SexyPic" (und nicht "SexyPic.jpg") heißen muß, wenn Du Legacy-Apps benutzen willst?
  • "rm SexyPic/Content" - Gosh! Brauchen wir also doch was anderes. Wobei. Zumindest leicht zu entdecken ist so'ne Inkonsistenz. Hmm... Hab gerade das gute alte ioctl in meiner System-Call-Suppe gefunden. Wie wäre's mit

    int fd = open("SexyPix", O_READ);
    ioctl(fd, METAFS_SELECT_STREAM, "Content-Type");

    Um Legacy-Apps zum Zuge kommen zu lassen, könnte man ja zusätzlich über 'nen anderen Mountpoint die Filestreams in ein Verzeichnis abbilden:

    $ ls -l /home/raffi/Bilder/SexyPic
    -rw-r--r-- 1 raffi users 1309015 Dez 07 22:55 SexyPic
    $ ls -ld /legacy/home/raffi/Bilder/SexyPic
    drwxr-xr-x 3 raffi users 1309015 Dez 07 22:55 SexyPic
    $ ls /legacy/home/raffi/Bilder/SexyPic
    Content
    Content-Type
    Context-Menu
    Description
    Notes

  • Wie, "Emulationsschicht"? Meinst kein File-System sondern 'n paar Hacks im VFS?
  • Davor, daß image/sexy drauf steht, aber text/plain drin ist, wird wohl auch das ausgefeilteste Filesystem nicht schützen können.
  • Wegen der Performance: Bei der Verzeichnis-Variante und bei der Metablöcke-vor-den-Nutzdaten-Variante (die genau betrachtet ja auch die Verzeichnis-Variante ist) kommt man wohl kaum um den Extra-Lesezugriff herum. Also doch 'n Journal a'la OS/2?
  • Metadatenmanagement direkt in ein bestehendes Filesystem zu hacken macht meiner Meinung nach wenig Sinn: Was machen die Leute, die nfs, smbfs, reiserfs, ... nutzen wollen/müssen, wenn sich das Metadatensystem etablieren sollte? Ich bleib' dabei, das Metadaten-Management über den physischen Filesystems angeordnet werden muss. Im Userspace, wie's momentan passiert ist es aus bekannten Gründen auch fehl am Platz. Bleiben also die Varianten Hack im VFS (Linux's filesystem abstraction layer) oder neues Filesystemmodul, das Partitionen mit bestehenden Filesystem-Treibern lädt aber die zum Nutzer durchgereichte Representation der Files manipuliert...
  • VFS [was:Meinung] (Score:1)
    Von maol (maol.symlink.ch) am Saturday 08. December, 11:49 MET (#14)
    (User #1 Info) http://www.maol.ch/
    Jeder Hack der zusätzliche Dateien direkt ins bestehende Filesystem einfügt ist nicht geeignet. Viel zu fehleranfällig.

    Einzige Möglichkeit ist ein System wie es schon jetzt bei den RAID-Implementationen gemacht wird:
    Ein neues Device wird erstellt, welches als Layer zwischen Anwender und darunterliegendem Filesystem liegt. Also z.B. /dev/metadata1. Jeder Zugriff darauf wird vom entsprechenden Code im Kernel gehandhabt. Nun ist es ein einfaches, bei jedem Zugriff je nach Bedarf (falls Metainformationen gefordert/geschrieben werden) die Metainfo von irgendwo (spezielle Partition, oder Datei) zu holen/schreiben, und sonst den Request einfach an das reale Device auf /dev/hda1 weiterleiten.

    Einzige Fehlermöglichkeit ist dann, wenn jemand /dev/hda1 und /dev/metadata1 gleichzeitig mountet. Dann kann es zu Inkonsistenzen kommen. Man kann sich vorstellen, dass der Metadata-Code beim Mounten jeweils prüft, ob die Metadaten und die Dateien auf /dev/hda1 noch so sind wie beim letzten Schreibvorgang, und sonst die Metadaten an die Realität anpasst (dies falls jemand direkt auf /dev/hda1 geschrieben hat, ohne dass das Metadaten-Device gemountet war).

    Viel besser wäre es sowieso, wenn sich der ganze Metadaten-Code in eines der bestehenden Journaling Filesysteme einbauen liesse, da diese sowieso schon ein Journal führen. Das Journal liesse sich noch um die Metadaten ergänzen.

    --
    paranoid? das sind andere

    Re:VFS [was:Meinung] (Score:1)
    Von Raffzahn am Monday 10. December, 10:42 MET (#15)
    (User #345 Info) http://www.vcfe.org/
    > [Metadaten ins Journal] Da gehoeren sie vieleicht hin um die Wiederherstellung zu betreiben, aber fuer den normalbetrieb gehoert sie in den Katalogeintrag (Ich benutz jetzt mal absichtlich den alten Mainframebegriff :) - der ist ja schliesslich fuer Metadaten vorgesehen (Datum, Besitzer, Rechte, und in gewissen grenzen sogar Laenge sind bereits metadaten, welche nicht zum betrieb des FS noetig sind). Gruss H.
    Re:Meinung (Score:1)
    Von Raffzahn am Monday 10. December, 14:06 MET (#16)
    (User #345 Info) http://www.vcfe.org/
    > [Dateiname]

    Wer das sagt ? Der Anwender ! - Der Dateiname ist das was ein Anwender meint wie er seine Daten benennen will.

    > [ioctrl]

    Waere auf jeden fall ein Weg um die Aufrufe schonend durch den Kernal zu bringen - auch wenn es mir sympatischer waere neue Aufrufe zu definieren.

    > [Emulationschicht]

    Die war weniger gedacht um 'alten Anwendungen' die Daten zu liefern, als eher um zu 'alten Daten' entsprechende Metadaten zu liefern.

    Also mal angenommen es gibt einen Aufruf
    int fmetaget(FILE *fd, char *buf, int buflen, char *metatag)
    fd ist eine geoeffnete Datei
    buf,buflen der Buffer fuer den gefundenen Wert
    metatag ein String mit dem namen der gesuchten Metainformation
    Rueckgabewert waere die Laenge der gefundenen Information, oder negativ wenn Fehler

    Also z.B. liefert

    FILE fd = fopen("SexyPic", O_READ);
    rc = (fd, buf, 200, "Content-Type");

    rc=9 (ohne abschliessendes \0)
    buf="image/gif"

    Ist nun die Datei eine die auf einem Filesystem ohne Metadaten liegt, dann greift die Emulationsschicht, und versucht nach wie auch immer gearteten Reglen rauszufinden was es sein koennte - also z.B. koennte sie "image/gif" zurueckliefern wenn die Datei SexyPic.gif heisst. damit waere es zwar das gleiche Rumraten wie bisher, aber mit dem vorteil das es fuer das jeweilige Programm versteckt ablaeuft, spricht dort nicht programmeirt wird. Im Prinziep sind das ja, was etwa den content-type anbelangt, Dinge die Gnome oder KDE jetzt bereits machen ... jeder fuer sich und gleich schlecht (Mal nicht zu vergessen sowas dummes wie Webserver ... im Apache steckt jede menge rumgefummel um Content-Types zu erraten).

    > [Metadatenmanagement in bestenedes System]

    Wenn ein Filesystem das Ganze erlaubt, wie z.B. ext2/3fs ist es doof es obenauf zu setzen. Fuer andere Systeme muss natuerlich zumindest ein 'aufsatzmechanismus' her der die daten ablegt ... ich wuerde es da genau wie OS/2 machen - die hatten auf FAT Partitionen die Metadaten (hier Extended Atributes genannt) in einer Datei namens EA_DATA. SF gespeichert, bzw. von da wieder geholt.

    > [Metadaten im / ueber dem 'physischen' Sytem]

    Na ja, ist nur so das zum einen Metadaten bereits dort abgelegt werden, und zum anderen Filesysteme auch die zusaetzliche Ablage erlauben (zumindest einige).

    Im VFS wuerd ich'S eher ungern sehen ... wobei das natuerlich der Richtige ort waere um die Abstraktion zu machen (also die Daten zusammenzupacken, egal ob sie als Subdirs, EA_DATA. SF oder im Verzeichniseintrag stehen).

    Ach ja, nur am Rande, die Diskusion ist nicht neu, nur haben die bisherigen Projekte immer zurueckgeschreckt die sache im Kernel zu verankern, bzw. zu standardisieren.

    Gruss
    H.
    Re:VFS [was:Meinung] (Score:1)
    Von Penpen am Monday 10. December, 22:46 MET (#18)
    (User #530 Info)
    #!/usr/local/bin/eigenesprogramm
    #$
    hmmm warum verpasst man nicht jeder Datei einen Header für Metadaten wie er bereits für scripte genutzt wird?
    Es müsste lediglich die eigentliche Datei von den
    Metadaten trennen um sie zu benutzen das liese sich auf jedem FS einsetzen und evtl als Kerneltreiber
    implementieren.


    It's the implementation, stupid (Score:1)
    Von alba7 (alexander.bartolich@gmx.at) am Thursday 06. December, 17:15 MET (#6)
    (User #237 Info) http://slashdot.org
    Kunst ist, wenn man nichts mehr wegnehmen kann. Die Philosophie von Unix ist "bottom-up". Aus einfachen, nicht weiter reduzierbaren Implementierungsblöcken setzt man immer größere Funktionalität zusammen.
    • Es gibt genau ein System um beliebig lange Bytefolgen auf einer Festplatte zu speichern - Dateien.
    • Es gibt genau ein System um Bytefolgen auf der Platte zu finden - Dateinamen.
    • Verzeichnisse sind als Datei implementiert. Allerdings mit einer eindeutigen und zwingenden Interpretation durch das Betriebssystem.
    • Symbolic Links sind als Datei implementiert. Ebenfalls, mit einer eindeutigen und zwingenden Interpretation.
    Es spricht nichts dagegen, dass der Kernel am Ende des Dateinamens, etwa getrennt durch ein Sonderzeichen wie '\0' oder '/', den Mime-Type anhängt. Oder ein open(2) auf 'abc' als 'abc#data' implementiert (# ist hier das Sonderzeichen), und eine spezielle API bereitstellt um dann auf 'abc#mime-type' zuzugreifen (nichts anderes steckt hinter dem Konzept der 'Bundles').

    Das eigentlich Problem steckt wo anders.

    • Zunächst verwenden KDE, GNOME, apache, pine, usw. alle eigene Interpretation/Implementierungen des Dateityps. Selbst wenn es einen Systemaufruf file(2) - analog zu file(1) - gibt, müssten alle Anwendungen diesen auch verwenden. Wer schreibt das alles um?
    • Und dann ist nicht gewährleistet, dass das gewählte Dateityp-Konzept auch zukunftssicher und ausreichend ist. text/ascii mag ja ganz lustig sein. Aber text/ascii/crlf zur Unterscheidung von text/ascii/lf? Oder xml1.0-encoded-in-utf8? xml1.0-according-to-docbook-dtd-5.0?
    Das Ziel des ganzen ist ja, dass der gewönliche DAU nur noch "da drauf klicken" muss, um zu arbeiten. Für mich klingt das nach Do-What-I-Mean. Und dies lässt sich in der Regel nur als Do-What-My-Admin-Told-You-To-Do implementieren. Und der kann wohl recht gut mit .txt leben. Oder halt .txt-for-stupid-boss, wenn er den File-Manager-For-Dummies auf s/\..*$// konfiguriert.

    --
    Ich bin ein Teletubby. Und das ist auch gut so.
    Re:It's the implementation, stupid (Score:1)
    Von alba7 (alexander.bartolich@gmx.at) am Thursday 06. December, 19:08 MET (#7)
    (User #237 Info) http://slashdot.org
    Beim Kürzen des Textes ist etwas wichtiges Weggefallen:

    Ich meine, dass die Implementierung dieser Art von Meta-Daten keine Erweiterung des Dateisystems bedingt.

    Insgesamt sind mir vier Möglichkeit eingefallen, um die Bytes so auf der Platte unterbringen.

    • als zusätzliche Dateien
    • als Bestandteil des Dateinamens im Inhaltsverzeichnis
    • als zusätzliche Einträge im Inhaltsverzeichnis (so macht es Microsoft bei den langen Dateinamen von Windows9X)
    • als eine zusätzliche Datei für alle Dateien (das Journal von ext3 ist so eine Sonder-Datei)
    Wichtig ist nur, dass der Kernel die Einhaltung dieses Hacks streng überwacht.

    --
    Ich bin ein Teletubby. Und das ist auch gut so.
    Re:It's the implementation, stupid (Score:1)
    Von tbf am Friday 07. December, 03:39 MET (#10)
    (User #21 Info)
    • als zusätzliche Dateien
    IHMO die KISS-Lösung (siehe auch oben: Directory-Aproach), abwärtskompatibel. Probleme: Geschwindigkeit und Speicherbedarf.
    • als Bestandteil des Dateinamens im Inhaltsverzeichnis
    relativ kompatibel, funnzt aber schlecht (siehe Artikel)
    • als zusätzliche Einträge im Inhaltsverzeichnis (so macht es Microsoft bei den langen Dateinamen von Windows9X)
    häßlich, inkompatibel mit Legacy-Tools (z.B. nach Systemcrash oder Metadaten mit shellskript manipulieren...)
    • als eine zusätzliche Datei für alle Dateien (das Journal von ext3 ist so eine Sonder-Datei)
    sicher der performanteste Ansatz. Probleme: aufwendig zu implementieren, Konsistenz, Legacy-apps
    Re:It's the implementation, stupid (Score:0)
    Von Anonymer Feigling am Friday 07. December, 11:58 MET (#11)
    Eine Möglichkeit hast du ausgelassen, und zwar, dass die Dateibesschreibung an erster Stelle im Fileheader vor den Daten kommt. Ob sie gut ist, will ich hier jetzt nicht entscheiden. Ich kann mich erinnern, dass man zu den Files auf dem Amiga Kommentare dazuschreiben konnte. Das habe ich unter Unix lange Zeit vermisst. Sinnvoll wäre, dass es prinzipiell möglich ist, Daten in Strukturierter Form an Files dranzuhängen, die nicht gleich bei der nächsten Kopie verschwinden. Sehr interresant wäre in dem Zusammenhang auch, dass an einem File histories dranhängen, zb. wo sie herkommen, von welchem Programm sie geschrieben worden, welcher User, ... und zwar, ohne, dass diese Informationen durch einfache befehle wieder vernichtet werden können. Naja
    Jede Menge Stoff (Re:It's the implementation) (Score:1)
    Von Raffzahn am Monday 10. December, 16:14 MET (#17)
    (User #345 Info) http://www.vcfe.org/
    Urks - alaaalso das wird eine laengliche Antwort. Ich versuchs ma lauf die Reihe zu bekommen.

    > [Bottum Up bei Unix, und das ach so simple System]

    Bereits die Steinzeitanforderungen von Unix halten Metadaten im Filesystem - oder was sind Erstellungsdatum, Aenderungsdatum, Eigentuemer, Lese/Schreibrechte ?

    Von der Reihnen Lehre her hat das alles im Filesystem nix verloren.

    Symbolic Links:

    Die werden bereits z.B. von ext2fs als 'eingebettete' Links unterstuetzt - zwechs performancegwinn. Links als Dateien zu implementieren ist ja auch nur ein schlimmer Hack. Auf der einen Seite erwartet man das Linsk vom OS transparent unterstuetzt werden auf der anderen implementiert man sie (dauerhaft) als Hacks ?

    > [Arten der Implementation]

    Zusaetzliche Dateien:
    Damit ist warscheinlaich was analog der Verzeichnisidee gemeint - siehe meine anderen Bemerkungen dazu - grundsaetzlich aber machbar - ist nur irgendwie unschoen in meinen Augen.

    Als Bestandteil das Dateinamens:
    Pfui - das ist ja genau das was derzeit das Problem ist. Der Dateiname ist ein Information, und da rein sachen packen macht nur probleme ... ich mein, warum haben eigentlich die Ur-Unixer nicht den Besitzer in den Dateinamen verpackt, sondern diese Metainfo in ein eigenes Feld des Verzeichniseintrags gepackt ???

    Zusaetzliche Verzeichniseintraege um Infos zu speichern:
    AAAAAAAAAAAAAAAAAAAAAAAArgh ... das ist das schlimmste was ich mir so denken kann. Ist nur dann (der einzig) gangbare weg wenn man ein kontrolliertes Format mit festen laengen hat, wo eine konforme Erweiterung unmoeglich ist. Schoen, aber genau das ist bei ext2fs z.B. nicht der Fall - hier wurde von anfang an darauf geachtet das die Verzeichniseintraege erweiterbar sind - die sind naemlich schon sowas wie eine Sammlung von Metatags.

    EINE zusaetzliche Datei:
    So wie bei OS/2 EAs auf FAT Partitions ? ist m.E. ein besserer Notbehelft als die Verzeichniseintraege zu verhunzen (ala Microsoft)

    Daten innerhalb der Blockkette der 'normalen' datei abspeichern:
    Nette Idee, nur dann knirscht es garantiert beim zugriff von ausserhalb (nicht ueber MetaFS). Des weiteren muss man den Programmen ja die Dateien (inkl. atributen wie fileposition und laenge) so praesentieren als wenn die Metadaten nicht da waehren. Wenn dann kann das nur so gehen das die Metainformation HINTER den 'echten' Daten liegen ... aber auch das braucht einiges an manipulation - insbesondere macht es Probleme beim Dateierweitern etc.

    Fuer mich kann es eigentlich nur eine Kombination sein:
    a) EIne (vom OS unterstuetzte) Abstraktionsschicht zum Zugriff - so in der art wie:
    int fmetaget(FILE *fd, char *buf, int buflen, char *metatag)
    int fmetaset(FILE *fd, char *buf, int buflen, char *metatag)
    int fmetarm(FILE *fd, char *metatag)

    b) Eine Umsetzung entweder 'native' durch das jeweilige FS, oder durch eine 'fremde' Implementierung in einer Datei. Die Fremdimplementation (als EINE Datei) wuerde immer dann verwendet wenn das jeweilige FS die Metatags nicht native unterstuetzt. Bei ext2fs waere das Ganze 'native', in den Verzeichniseintraegen gespeichert.

    c) Eine Emulation beim Zugriff auf Datenbestaende die ohne Metadaten erzeugt wurden.

    d) Eine Libschicht die die Metadaten des MetaFS sowohl Gnome als auch KDE (und ggf. allen anderen) so praesentiert wie die Ihre Metadaten erwarten.

    (Gerade im Hinblick auf d seh ich auch die chance mit einem 'neuen' MetaFS Land zu finden - um den gerade entstehenden Wildwuchs zu verringern)

    Nun zu deinen Problemen:

    > Wer schreibt das alles um.

    Ich denke mal das ist das kleinste Problem - wenn die Loesung brauchbar ist, so kann udn wird sie sich durchsetzen (ich selbst wuerde mir nur den Apache vornehmen .... mein Problemkind :) Aber siehe d - Gerade das Uebernehmen ist ja eine Staerke im OS bereich - und an den immer wieder aufkommenden Diskusionen sieht man ja das das Loesungen gesucht werden.

    > Dateitypkonzept zukunftssicher ?

    Nun, zum einen denke ich das es das ist - das Metadatenkonzept wie es bei MIME verwendet wird hat sich als sehr stabil erwiesen - vieleicht nicht perfekt, aber stabil.
    Zum anderen, es ist ja nicht daran gedacht alles in einen einzigen Wert zu packen. Zum einen der Content Type, welcher ja eine hirarchische Strukturierung erlaubt - um Dein beispiel mar etwas realer zu machen gibt es
    text
    text/plain
    text/crlf
    text/lf

    Also einmal unbestimmten Text, dann einfacher Text und dann jeweils eine Variante fuer crlf und lf Formatierung. Der Zeichensatz hat da nix verloren, sondern wird durch einen charset= parameter hinten angehaengt
    text/crlf; charset=CP1251
    z.B. fuer eine Windooftextdatei. Oder
    Content-type: text/plain; charset=us-ascii
    fuer eine reine Asciidatei.

    Dann geht es natuerlich auch weitere Untergliederungen zu nehmen:
    application/ms-word/2.0
    fuer eine Datei im Word 2.0 Format (Achtung, es geht nicht um den Ersteller, sondern um das Dateiformat!)

    Ausserdem kann man hier durchaus auch andere, weitere Metadaten nehmen, wie es ja auch fuer Ersteller und Bearbeiter sinvoll ist (Der Mac kennt da nur den Ersteller) - Beispiel:
    MetaFS-Creator: StarOffice/6.0
    (Wobei ich mir dabbei auch sowas wie bei den Typen wuensche)

    Ich schlag jetzt mal einfach MetaFS als teil des Namens vor - das haette den Vorteil das die Header nicht mit den MIME Typen kollidieren, und einwandfrei mit Mails (und HTTP) mittransportiert werden koennen...

    ... UND IST DA NICHT BEREITS EINE ELEGANTE MOEGLICHKEIT DANN AUCH BEIM DATENAUSTAUSCH DIE METADATEN ZU ERHALTEN ?

    > Der Admin kanns ja konfigurieren. bzw. der Dau kann doch mit .txt leben

    Richtig - aber mahl ehrlich, warum haben wir eigentlich die schoene Zeit der Lochkarten verlassen - zum einen konnte man damit praechtig leben, zum anderen gabs auch garkeine DAUs !

    Davon ab, der Sinn ist ja das kein Admin irgendwas konfigurieren soll/muss - denk mal daran, im Desktopbereich gibts keine Admins - und Wenn Linux im Desktopbereich je was werden soll, dann nicht indem man den DAU zum Admin ausbildet.

    Und sach jetzt nicht das Gnome/KDE ja konfigutrationen mitliefern die ja meist passen ... richtig, das ist aber genauso beschissen wie Microsofts Regestryloesungen ... sehr schoen, aber unflexibel und Fehleranfaellig.

    Hmm ... hab schon lange nicht mehr so viel in FS dokumentationen rumgewuehlt wie in den letzten Tagen ... macht richtig Spass.

    Gruss
    H.

    (Ich hoer mal besser auf)

    Re:It's the implementation, stupid (Score:1)
    Von tbf am Friday 07. December, 03:27 MET (#9)
    (User #21 Info)
    • ...
    • Symbolic Links sind als Datei implementiert. Ebenfalls, mit einer eindeutigen und zwingenden Interpretation.
    • Dateien im MetaFS sind als Dateien im physical filesystem implementiert: Der erste Block der Datei im RealFS enthält die Anzahl der allozierten Metablöck und die ersten Metadaten. Die Nutzdaten folgen nach den Metadaten. Zwingende Interpretation der Datei durch das MetaFS:
      • metafs.offset(datei) := realfs.blocksize * metafs.meta_info(datei).block_count
      • metafs::stat(datei).st_size := realfs.stat(datei).st_size - metafs.offset(datei)
      • metafs::seek(datei,offset,SEEK_SET) := realfs::seek(datei,metafs.offset(datei) + offset,SEEK_SET)
      • ...
    Es spricht nichts dagegen, dass der Kernel am Ende des Dateinamens, .... Sorry, dann hast Du den Artikel nicht gelesen: Apple ging diesen Weg und hat auf diese Weise den Usern zu Hauf' Problem eingebrockt. Zum Umschreibproblem: Wenn's filesystem rockt werden sich schnell Freiwillige finden, die die Apps patchen oder (z.b. für gnome-vfs2 oder apache) Module hacken. Sonst wäre's nicht OpenSource. Von wegen Zukunftsicher: MIME handelt das Problem mit dem "encoding" Attribut: content-type text/plain; encoding=iso-8859-15. Bei der Erkennung des Zeilenumbruchzeichens wird 'n MetaFS wohl kaum helfen. Glaub' kaum, daß wir den binary-vs-text-File-Terror (open(file, "rt") vs open(file, "r")) von Windows importieren wollen... Wie wäre es mit 'nem Filemanager, der für text/* 'ne Eintrag zum Konvertieren anbietet? Oder beim Öffnen sich die Datei nach Zeilenumbrüchen scannt und ggf. nen Dialog zeigt:

    =[ Erm... ]=====================
    |
    | Has'e wohl von 'nem DOZ-Luser, det File.
    | Könnte deene Unix-App verwirren. Zu
    | juttet altes Unix-Format konvatier'n?
    nerven!
    |
    | [ Nö ] [ Yep ]
    |
    | [ ] Wag det nich' nochmal, mich damit zu +------------------------------------

    PS: 'n ln-s, daß <pre> durchläßt wär' auch ganz cool...

    Re:It's the implementation, stupid (Score:1)
    Von alba7 (alexander.bartolich@gmx.at) am Friday 04. January, 13:27 MET (#19)
    (User #237 Info) http://slashdot.org
    > [...]
    > Der erste Block der Datei im RealFS enthält die Anzahl
    > der allozierten Metablöcke und die ersten Metadaten.
    > Die Nutzdaten folgen nach den Metadaten.

    Und was machst du, wenn die Metadaten wachsen und du noch einen Block brauchst? Fügst dann mitten in der Datei weitere Blöcke ein?
    Das schreit nach Code-Verdoppelung. Denn der Kernel hat bereits ein Konzept, wie man beliebig lange Datenströme auf der Platte unterbringt.

    IMHO ist es zielführender in der Inode ein weiteres Feld "link-to-meta-inode" einzuführen. Das zeigt dann ein auf eine ganz normale Datei, auf die allerdings von keinem einzigen Verzeichnis verweisen wird. Allerdings ist man immer noch auf eine einzige Datei beschränkt: Also "link-to-inode-of-meta-file-directory".

    Ich denke, dass das wahre Problem aber ist, wie man dies ohne eine neues API vom User-Land ansprechen kann.
    XFS bietet eine exzellente Implementierung von ACLs über einen Meta-Daten-Mechanismus. Über Samba lassen die sich von NT-Clients auch ganz einfach definieren. Nur Backup gibt es keines, denn weder tar noch cpio nioch zip wissen etwas über Meta-Daten (ok, es geht mit xfsdump, aber das Problem ist hoffentlich klar).

    --
    Ich bin ein Teletubby. Und das ist auch gut so.

    Linux User Group Schweiz
    Durchsuche symlink.ch:  

    Never be led astray onto the path of virtue.
    trash.net

    Anfang | Story einsenden | ältere Features | alte Umfragen | FAQ | Autoren | Einstellungen