Journaling και fsck
Christos Cheretakis
xalkina at otenet.gr
Tue Nov 5 18:26:01 EET 2002
Giorgos Keramidas wrote:
> 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 που έχει το αρχείο
> δεν είναι αυτά που είχες πριν.
>
> Λοιπόν... τι θα γίνει;
>
> :-)
>
>
Διορθώστε με αν κάνω λάθος, αλλά νομίζω ότι κανένα journaling
filesystem για Linux, τουλάχιστον στο default distribution και setup
του, δεν υποστηρίζει data journaling. Το μόνο που εγγυώνται είναι πως οι
δομές του filesystem (i-nodes, ή ό,τι αντίστοιχο έχει, block allocation
tables, κλπ) δε θα βρεθούν ποτέ σε inconsistant state. Νομίζω ότι το XFS
υποστηρίζει data journaling, αλλά όχι στο "default" setup του και για το
ReiserFS ήταν στα σχέδια.
Χ/
--
Λες κι η στάθμη της αγάπης πάει να βρει
Πόσοι κρύβονται στη λάσπη θησαυροί
Πως κοπήκανε στα δάχτυλα οι σταυροί
Γι' ανθρώπων έργα...
More information about the Linux-greek-users
mailing list