Journaling και fsck

Άγγελος Οικονομόπουλος aoiko at cc.ece.ntua.gr
Tue Nov 5 17:05:01 EET 2002


On Tuesday 05 November 2002 15:34, Giorgos Keramidas wrote:
> On 2002-11-05 10:13, Άγγελος Οικονομόπουλος <aoiko at cc.ece.ntua.gr>
[snip]
> > bsd propaganda gia ta soft updates, e? (8a kataferei pote o kirk na
> > kanei to background fsck na douleuei swsta? :) )
>
> Προκατάληψη πως ότι λέω έχει πάντα σχέση με το τι κάνει το FreeBSD ε;

? apo pou to sumperaineis auto?

> Όχι αγαπητέ.  Το journalling του reiserfs έχει κάτι που λέγεται
> rollback.  Και το rollback κάνει, μάντεψε... roll back.  Γυρίζει το
> filesystem κάποια βήματα πίσω.  Με ποια κριτήρια;
> 
>     Μέχρι που το filesystem να είναι σε stable κατάσταση.
> 
>
> > > Το journalling δεν εγγυάται ότι δεν θα χαθούν ποτέ και σε καμία
> > > περίπτωση τα δεδομένα, αλλά ότι ποτέ δεν θα μείνει το filesystem σε
> > > κατάσταση που να είναι "περίεργη" και να απαιτεί fsck.
> >
> >
> > nyet. apla egguatai oti den 8a e3etastei olo to fs alla mono oti
> > xreiazetai (basika den 8a e3etastei, log replay 8a ginei - san na
> > kaneis ena fsck pou einai ane3arthto apo to mege8os tou fs
> > (alla _oxi_ O(1))(god wrote in lisp mode)).

/***************
 * mark 1
**************/
> 
> Και τι είναι my dear Watson αυτό το περίφημο log replay; Έστω ότι
> κάνεις το εξής μικρό παράδειγμα.  Δεν κάνει τίποτα περίεργο.  Απλά
> ανοίγει το ίδιο αρχείο δυο φορές και γράφει τη μια φορά τη φράση
> "hello world" στο αρχείο και την άλλη τη φράση "hello second world".
> 
>      1	#define BUFLEN 30
>      2	char buf[BUFLEN];
>      3	int fd;
>      4	int len;
>      5
>      6	fd = open("/tmp/hello.txt", O_RDONLY | O_TRUNC, S_IWRITE);
>      7	if (fd == -1)
>      8		err(1, "open #1");
>      9
>     10	bzero(buf, BUFLEN);
>     11	snprintf(buf, BUFLEN, "hello world\n");
>     12	len = strlen(buf);
>     13	if (write(fd, buf, len) != len)
>     14		err(1, "write #1");
>     15
>     16	if (close(fd) == -1)
>     17		err(1, "close #1");
>     18
>     19	fd = open("/tmp/hello.txt", O_RDONLY | O_TRUNC, S_IWRITE);
>     20	if (fd == -1)
>     21		err(1, "open #2");
>     22
>     23	bzero(buf, BUFLEN);
>     24	snprintf(buf, BUFLEN, "hello second world\n");
>     25	len = strlen(buf);
>     26	if (write(fd, buf, len) != len)
>     27		err(1, "write #2");
>     28
>     29	if (close(fd) == -1)
>     30		err(1, "close #2");
> 
> Έστω τώρα ότι ανάμεσα στη γραμμή 28 και στη γραμμή 29 πέφτει το ρεύμα.
> Τι θα περιέχει το αρχείο /tmp/hello.txt μετά το rollback;  Αν το
> rollback σε γυρίσει στο σημείο που έγινε το τελευταίο close() στο
> αρχείο, τότε θα περιέχει το "hello world" [line 16 & sync].
> 
> Αν όμως σε γυρίσει στο τελευταίο επιτυχές γράψιμο δεδομένων στον
> δίσκο, και στο μεταξύ έχει προλάβει το open("...", O_TRUNC) να
> μηδενίσει το αρχείο, τότε ναι μεν θα έχεις ένα "σωστό" filesystem με
> την έννοια ότι δεν θα περιέχει i-node δείκτες που δείχνουν κάπου
> μεταξύ never-never land και Tanelorn, αλλά τα data που έχει το αρχείο
> δεν είναι αυτά που είχες πριν.
> 
> Λοιπόν... τι θα γίνει;

/me koitaei ekplhktos to katebato sto monitor...
ma to reiser v3 kanei metadata journaling (nomizw oti uphr3e kapote kai ena 
patch gia data journaling) kai ara auta pou les isxuoun e3' orismou (mono 
pou den mporw na katalabw pou kolane...)

sthn paragrafo panw apo to mark 1 h antirhsh mou htan oti to metadata 
journaling tou reiser3 _den_egguatai_ fs consistency meta to crash[0]. auto 
to egguontai mono soft-updates xwris write-cache[1], opws exei bare8ei na 
leei o deRaadt.

epomenws, o, ti kai an h8eles na mou peis me to mail sou, den to katalaba. 
mhpws mporeis na to 3anagrapseis me pio mikres protaseis kai apla logakia 
gia mporw na to katalabw? :-)

[0] to giati nomizw oti mporei na bre8ei sto usenix(?) paper tou McKusick 
gia ta soft updates
[1] praktika kai to ext3[2] mounted me data=ordered
[2] o hans reiser diadidei oti to reiser4 uposthrizei atomic fs 
transactions, alla den exw diabasei ton kwdika kai den 3erw an einai 
implemented ston current kwdika

-- 
Make sure input cannot violate the limits of the program.
            - The Elements of Programming Style (Kernighan & Plaugher)




More information about the Linux-greek-users mailing list