File Sytem



  • Hi,

    Was ist der Unterschied zwischen einem Transactional und einem Journaling Filesystem?

    Journaling: Die Filesystem Metadaten werden in ein Logfile geschrieben bevor die Metadaten auf die Harddisk geschrieben werden?

    Wie funktioniert Fsck?



  • Journalig: entweder wird das file auf die harddisk korrekt geschrieben, oder wir schreiben gar nichts...all or nothing...



  • mike1 schrieb:

    Journalig: entweder wird das file auf die harddisk korrekt geschrieben, oder wir schreiben gar nichts...all or nothing...

    Das ist falsch.

    1. Zuerst wird ins Logfile geschrieben, das nun ein Schreibvorgang erfolgt.

    2. Dann wird versucht die Daten korrekt auf die HD zu schreiben.

    3. Ist dies geglückt, dann wird der Eintrag im Logfile geändert und vermerkt das es funktioniert hat.

    Der Vorgang war also Atomic.

    Sollte aber nach 1. irgendwas während 2 oder 3 arbeitet fehlschlagen, dann wird beim nächsten Reboot/Diskrepair das was 2 und 3 angestellt hat rückgängig gemacht und der Eintrag aus 1 wieder entfernt.
    Damit ist das FS wieder konsistent.



  • Die meisten journalisierenden FS tun das nur für Metadaten, nicht aber für Daten.
    Und die meisten journalisierenden FS bieten keine Transaktionen an, d.h. man kann sich nicht aussuchen welche Änderungen zu einem atomaren Block zusammengefasst werden. Atomar ist immer nur eine Änderung für sich, also das Löschen eines Files, das Erzeugen eines Verzeichnisses, eine Grössenänderung eines Files - aber eben immer nur ein solcher Vorgang für sich.

    Das Journal dient meist einzig dazu die internen Strukturen des FS konsistent zu halten, damit man fsck , chkdsk oder dergleichen eben nicht braucht.

    Ein transaktionales FS dagegen bietet Transaktionen an. Nach meinem Verständnis müssen solche Transaktionen dann sowohl Änderungen an Daten als auch Änderungen an mehreren Files/Verzeichnissen umfassen können.



  • im log file werden also nur die metadaten geschrieben?

    was ist der unterschied zwischen einem Transactional und einem Journaling Filesystem?



  • mike1 schrieb:

    im log file werden also nur die metadaten geschrieben?

    Im Logfile wird das reingeschrieben was das FS eben reinschreibt. Das kann alles mögliche sein, kommt auf das FS an.

    mike1 schrieb:

    was ist der unterschied zwischen einem Transactional und einem Journaling Filesystem?

    Hab ich doch schon beschrieben.



  • was ist der unterschied zwischen einem Journaling Filesystem und einem Transactional?

    (Die Frage ist nicht kommutativ)



  • Was ist der Unterschied zwischen unselbständig und einfach nur frech?
    Oder zwischen Witz und unnötigem blödem Kommentar?
    So viele Fragen, so wenig Antworten...

    Ja, das Leben ist hart. Hansaplast hilft.



  • @hustbaer:

    nur noch mal zum verstaendlich werden:
    a transactional file system can have journal entries that do multiple actions at once: example: http://i.imgur.com/T2deAUT.png -> transactions are just a GROUP of journal entries.

    a journaling file system has 1 action per transaction z.B. delete file? -> ajournaling filesystem cannot do multiple things in one journal entry



  • push!



  • Naja, nicht ganz.

    Anstatt auf deine Aussagen einzeln einzugehen versuche ich das ganze nochmal etwas besser zu beschreiben.

    Erstmal vorweg: die meisten transaktionalen FS sind auch journalisierende FS. Die beiden schliessen sich also schonmal nicht aus.

    "Journalisierend" heisst im Prinzip nur dass ein "Journal-File" ("Log-File") verwendet wird in dem erstmal aufgezeichnet wird was zu machen ist, dann wird das "Journal-File" geflusht, und dann wird erst gemacht. Das ist eine Technik die auch in vielen anderen Bereichen Anwendung findet, z.B. bei Datenbanken unabhängig davon ob diese Transaktionen anbieten oder nicht. Ein "journalisierendes" FS muss aber keine Transaktionen anbieten -- es kann das Journal-File z.B. einfach nur verwenden um sicherzustellen dass die ganzen internen vom FS verwendeten Strukturen konsistent bleiben. Die meisten "journalisierenden" FS benügen sich auch damit.

    D.h. "journalisierend" sagt etwas darüber aus wie das FS implementiert ist, aber nicht darüber was es alles an Features bietet.

    "Transaktional" dagegen sagt etwas über das Feature-Set des FS aus (nämlich dass das FS ACID Transaktionen "kann"), aber nicht wie diese Features implementiert sind. Sogesehen sind die beiden Begriffe strenggenommen orthogonal (also voneinander gänzlich unabhängig).
    Die "einfachste" Variante Transaktionen anzubieten ist allerdings ein Journal-File zu verwenden, und daher sind quasi alle "transaktionalen" FS auch "journalisierend".

    Zum Thema ACID Transaktionen vielleicht nochmal hier nachlesen: http://en.wikipedia.org/wiki/ACID
    Einem nicht-transaktionalen FS fehlt zumindest das "I" und meist auch das "A" von ACID. ("C" und "D" muss jedes FS anbieten wenn es ernstgenommen werden will)

    Also nochmal auf ultra-kurz:
    "journalisierend": das FS verwendet ein Journal-File (wofür auch immer)
    "transactional": das FS bietet ACID Transaktionen an (wie auch immer es das macht)

    "journalisierend & transactional": das FS verwendet ein Journal-File und bietet ACID Transaktionen an. Dabei kann man davon ausgehen dass das Journal-File verwendet wird um die Transaktionen "A" zu machen. Ob das Journal-File auch verwendet wird um die Transaktionen "I" zu machen ist fraglich - da gibt es nämlich auch andere Verfahren die gut funktionieren und relativ einfach umzusetzen sind.


Anmelden zum Antworten