Προς το περιεχόμενο

File-System Debate


soturin

Προτεινόμενες αναρτήσεις

Έχοντας πάρει πρόσφατα δίσκο για data, τον μορφοποίησα με σύστημα ntfs έτσι... αφηρημένα. Μετά σκέφτηκα γιατί όχι κάτι άλλο; Έχω λόγο που επέλεξα αυτό; Κι αν το τάδε άλλο γιατί;

 

Προσωπικά τουλάχιστον είμαι αρκετά νυχτωμένος επί του θέματος :-)

 

Αυτή ήταν αφορμή και μετά από ιδέα φίλου να ανοίξω το θέμα αυτό ώστε να γίνει κάποια κουβέντα γύρω από τα file-systems. Ποιά είναι διαθέσιμα, ποια προτιμάμε, γιατί, γιατί (πιο αναλυτικά) κτλ κτλ.

Να γουστάρουν (κονταροχτυπηθούν ίσως :P ) οι "δεινόσαυροι" και να μαθαίνουμε οι ψάρακες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ΟΚ, θα ξεκινήσω εγώ. Πριν πω οτιδήποτε όμως θα δηλώσω 2 πραγματάκια:

1. Δεν έχω δει το ZFS του Solaris σε 64-bit σύστημα και

2. Δεν έχω ενημερωθεί αρκετά για το ext4

 

Έχω όλα μου τα partitions σε ext3 εκτός από το /boot το οποίο είναι ext2. Οι σκληροί μου είναι είτε SATA είτε PATA και δεν έχω solid state disks ούτε flash memories άλλου τύπου. Το σύστημά μου δεν έχει ούτε μόνο μικρά ούτε μόνο μεγάλα αρχεία, όλα τα partitions έχουν ένα μείγμα (αυτό το τελευταίο δεν είναι μόνο λόγω τεμπελιάς). Τέλος δεν έχω στο σπίτι μου UPS (ακόμα). Τι σημασία έχουν όλα αυτά:

Ένα file system δεν φτιάχνεται για να παίζει παντού. Δύο πολύ σημαντικά πράγματα που παίζουν ρόλο στην ανάπτυξη ενός FS είναι

α. Πόσο είναι διατεθειμένο το FS να χρησιμοποιεί το αποθηκευτικό μέσο και κατ' επέκταση να μειώσει την διάρκεια της ζωής του και

β. Με ποιόν τρόπο θα διασφαλίσει την ακεραιότητα και την ασφάλεια των δεδομένων που θα διαχειριστεί.

 

Χωρίς να θέλω να κουράσω και να μπω σε πάρα πολύ τεχνικές λεπτομέρειες θεωρώ ότι ένα journaling file system για "παραδοσιακά" αποθηκευτικά όπως οι κλασσικοί σκληροί δίσκοι είναι απαραίτητο. Το journal ουσιαστικά είναι ένας τρόπος για να κρατάει το FS ένα ημερολόγιο (εξ' ου και ο όρος journal=ημερολόγιο) του τι λειτουργίες εγγραφής πάνω στην πλακέτα έχει να εκτελέσει και αυτές για οικονομία χρόνου, πόρων και φθοράς του φυσικού υλικού που αποτελεί το δίσκο, αντί να εκτελούνται όταν ζητείται από το λειτουργικό, εκτελούνται ανά τακτά χρονικά διαστήματα. Επίσης, το journal χρησιμεύει στην περίπτωση απότομης διακοπής λειτουργίας του συστήματος να είναι ως ένα βαθμό (όχι πάντα 100%) η ανάκτηση των αρχείων που την ώρα της διακοπής της λειτουργίας βρίσκονταν σε επεξεργασία. Journaling file systems εκτός των άλλων είναι και τα NTFS, ext3, ext4, ZFS, UFS2, reiserfs 3 και reiserfs 4.

Τα μη journaling file systems (ext2) μπορεί να μην παρέχουν τέτοιους μηχανισμούς διασφάλισης της ακεραιότητας των δεδομένων μου αλλά συνήθως είναι πολύ πιο γρήγορα στο I/O γιατί δεν έχουν τα επιπλέον βήματα της τήρησης των δεδομένων.

Ο λόγος για τον οποίο το /boot μου είναι σε μη journaling FS είναι γιατί αυτό το partition είναι αφ' ενός read-only (άρα δεν φοβάμαι corruption σε διακοπή ρεύματος π.χ.) και αφ' εταίρου γιατί μόλις ξεκινήσει το σύστημα κανένα αρχείο από αυτά που βρίσκονται εκεί δεν χρησιμοποιείται. Άρα εκεί προτιμάω την ταχύτητα του ext2 αντί για την ασφάλεια του ext3. Επιπλέον, το κάνω και από συνήθεια πια :-)

Υπάρχουν όμως και τα flash file systems. Αυτά απευθύνονται σε συγκεκριμένα devices όπως flash cards, ssd κτλ. Επειδή σε αυτές τις συσκευές δεν υπάρχει ακίδα που μετακινείται για να γράψει δεδομένα με ηλεκτρομαγνητισμό (και άρα δεν υπάρχει φόβος καταστροφής του μέσου από απότομη διακοπή λειτουργίας) και επειδή η εγγραφή δεδομένων είναι πολύ πιο γρήγορη, το journal γίνεται (ως ένα ποσοστό και με κάθε επιφύλαξη) άχρηστο. Αν υπολογίσει δε κανείς τον μικρότερο χρόνο ζωής τέτοιων συσκευών σε σύγκριση με τους παραδοσιακούς σκληρούς δίσκους, τότε όπως καταλαβαίνεις, ο στόχος είναι να μειωθούν τα writes όσο το δυνατόν περισσότερο. Τέλος, επειδή ο τρόπος που (ειδικά στα solid state disks ισχύει αυτό) ο ίδιος ο δίσκος διαχειρίζεται το φυσικό υλικό και οι αλγόριθμοι που χρησιμοποιούνται για να ΜΗΝ χρησιμοποιείται το ίδιο cell του μέσου συνέχεια είναι τέτοιοι που (πιστεύω ότι) δεν μπορεί να αποδώσει ένα file system όπως το ext3 σε αυτά τα μέσα. Τέτοια FS είναι το trueffs και το jffs2. Το δεύτερο βέβαια είναι journaling αλλά οι λόγοι εκεί είναι διαφορετικοί.

Άφησα για το τέλος το (personal favorite) reiserfs. Ο Hans Reiser προσπάθησε να δώσει πνοή σε αυτό που θεωρώ ότι είναι το επόμενο μεγάλο βήμα στα file systems. Η "ενοποίηση" των δεδομένων και η ύπαρξη μηχανισμών ώστε η αναζήτηση οποιουδήποτε όρου να μπορεί να γίνεται αστραπιαία και κυρίως σε οποιοδήποτε τύπο αρχείου. Π.χ. όταν κάνω ένα search σε ένα directory για τον όρο "file system", να μπορώ να πάρω αμέσως απάντηση όχι μόνο για αρχεία με το όνομα αυτό αλλά και για email στα οποία αναφέρεται αυτός ο όρος, σε mpeg layer 7 multimedia αρχεία που έχουν αυτήν την περιγραφή κτλ. Δυστυχώς ο Hans την άκουσε και εμείς μείναμε χωρίς support για το reiserfs 3 και με ημιτελές το version 4. Συν του γεγονότος ότι ήταν τέτοια η υλοποίηση του reiserfs 3 που ναι μεν είχες σχεδόν 100% επιτυχία στην ανάκτηση data ακόμα και μετά από crash αλλά υπήρχε και αυτό το (απειροελάχιστο) ποσοστό στο οποίο το σύστημα μπορεί να μην έβρισκε τον ίδιο του τον εαυτό για να boot-άρει.

Τελικά, και ειδικά για production συστήματα, αν ξέρεις τί είδους αρχεία θα αποθηκευτούν σε ένα partition, με ένα ext3 και custom block και fragment sizes ειδικά για το μέγεθος αρχείων που θα αποθηκευτούν έχεις πολύ καλή απόδοση. Σε desktop μηχανήματα δεν μπορώ να πω ότι θα έχει τεράστια διαφορά στην ταχύτητα.

Δεν έχω αναφερθεί καθόλου σε θέματα fragmentation και κατ' επέκταση free space management όπως και data size expansion όπως και σε θέματα data security και encryption αλλά είναι λίγο πιο πολύπλοκο το θέμα και συν τοις άλλοις, τέτοια ώρα τέτοια λόγια. :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

reiserfs και ext3 δημιουργούν προβλήματα. Πριν από χρόνια είχα δοκιμάσει το XFS γαϊδούρι κανονικό. Δεν πάθαινε τίποτα (+ έβαζα και τον kernel debugger της sgi αλλά αυτό είναι άλλη ιστορία). Δυστυχώς το ubuntu διάβασα ότι δεν έχει καλή υποστήριξη στο XFS (λόγω του grub) και το απέφυγα στην πρόσφατη εγκατάσταση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομίζω ότι το ext4 κάνει πολύ δυναμική είσοδο στο χώρο και θα προτιμηθεί.

Τα σημαντικότερα στοιχεία του ext4 είναι το block sub-allocation και το delayed allocation που θα βοηθήσουν πάρα πολύ στο να μειωθεί το fragmentation του συστήματος. Αυτά μαζί με το persistent pre-allocation (feature του XFS αρχικά) που κάνει reserve όλο το χώρο που χρειάζεται ένα αρχείο κατά τη δημιουργία του και όχι κατά την εγγραφή data σε αυτό (πολύ χρήσιμο σε βάσεις δεδομένων) και τέλος το checksumming του journal που θα χρησιμεύσει για το integrity των δεδομένων το κάνουν πια πολύ ενδιαφέρουσα πρόταση. Αλλά ακόμα δεν έχουν εγκαταλείψει την ιδέα του customized B trees (htree το ονομάζουν) αλγόριθμου για το indexing των αρχείων, κάτι για το οποίο ακόμα διατηρώ τις αμφιβολίες μου.

Και το XFS που είπε ο Ather πιο πάνω είναι ένα πολύ καλό file system αλλά μην ξεχνάμε ότι όλα αυτά είναι παλιά και εν πολλοίς παρωχημένα file systems λόγω των σχεδιαστικών επιλογών που έγιναν όταν γράφτηκαν καθώς τότε ούτε ο ίδιος όγκος δεδομένων υπήρχε ούτε ο ίδιος τύπος δεδομένων.

Βέβαια θα ήθελα πάρα πολύ να δώ τα internals του NTFS καθώς και τι θα απογίνει με εκείνο το file system layer που θα έβαζε η Microsoft στο NTFS αν τελικά αποφασίσει να το υλοποιήσει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγώ από την άλλη θα πω την άποψη της «πιάτσας»:

 

Έχω δει corruption σε reiserfs, έχω δει *πολλά* αρχεία γεμάτα μηδενικά σε XFS, δεν έχω ποτέ αντιμετωπίσει πρόβλημα με ext3 filesystem, από τότε που βγήκε.

 

Στα προσωπικά μου μηχανήματα βάζω ext2 στο /boot, reiserfs στο / (που και να το χάσω δε με πολυπειράζει) και ext3 με directory indexes στο /home. Στα υπόλοιπα μηχανήματα βάζω ext3 σχεδόν καθολικά.

 

Κάτα τ' άλλα, η επομενη μεγάλη εξέλιξη IMHO θα είναι το btrfs, το οποίο μπήκε στον 2.6.29-rc1 ;-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μόνο μια φορά χρησιμοποίησα reiserfs στο / σε μια παλια εγκατάσταση σε ενα λαπτοπ... δεν είδα για να είμαι ειλικρινής καμία διαφορά σε σχέση με το ext3 αλλά και πάλι δε νομίζω οτι κατείχα τη γνώση για να εκμεταλλευτώ τις πιθανές δυνατότητές του.... Εν πάσι περιπτώσι τa reiser γενικά είναι καλό να τα ξεχάσουμε λόγω του Χανούτου (Hans) και του μικρού προβλήματός του με το σαπούνι στις ντουζιερες της φυλακής. (Ενημερωτικά.... πριν από λίγες μέρες έφαγε πολύ ξύλο από συγκρατούμενούς του και αναγκάστηκε να μεταφερθεί στο νοσοκομείο. Από τότε είναι σε απομόνωση από τον γενικό πληθυσμό της φυλακής. Επίσης σε δηλώσεις του εισαγγελέα φαίνεται ότι μάλλον δε θα βγεί από τη φυλακή ποτέ... και χαρούμενος να είναι που γλύτωσε τη βελόνα)

 

Κατά τα άλλα σχεδόν παντού εκτός από το /boot (στο οποίο βαζω πάντα ext2) χρηησιμοποιώ ext3. Επίσης δεν έχω εδώ και τόσα χρόνια ποτέ αντιμετωπίσει πρόβλημα με το συγκεκριμένο file system. (Μια φορά μόνο είχα πρόβλημα αλλά αποδειχθηκε ότι ήταν hardware related).

 

Θα συμφωνήσω με τον προλαλίσαντα (τα σέβη μου κύριε άποικε) ότι δυνητικά η μεγαλύτερη εξέλιξη θα είναι το BTRFS, το οποίο είναι υπό heavy development αν και "Btrfs is already in the mainline Linux kernel. It was merged on 9th January, and will be available in the Linux 2.6.29 release. ".

(για περισσότερα : http://btrfs.wiki.kernel.org/index.php/Main_Page και http://en.wikipedia.org/wiki/Btrfs).

επίσης εδώ για ένα benchmanrk : http://btrfs.boxacle.net/ τα αποτελέσματα του οποίου είναι λίαν ενθαρρυντικά.

 

 

Σμηνίτης (Μοδίστρα) hasodikis

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μόνο μια φορά χρησιμοποίησα reiserfs στο / σε μια παλια εγκατάσταση σε ενα λαπτοπ... δεν είδα για να είμαι ειλικρινής καμία διαφορά σε σχέση με το ext3 αλλά και πάλι δε νομίζω οτι κατείχα τη γνώση για να εκμεταλλευτώ τις πιθανές δυνατότητές του....

reiserfs είχα δοκιμάσει κι εγώ παλιότερα, και το είχα παντού. Σε λειτουργίες όπως tar zxvf tarball.tgz ήταν πολύ πιο γρήγορο από το ext3, γενικότερα είναι γρήγορο σε διεργασίες που χρησιμοποιούνται πολλά και μικρά αρχεία. Κι εγώ δεν έχω ασχοληθεί περεταίρω με filesystems και δεν έχω περισσότερες γνώσεις για να αναλύσω τις διαφορές τους διεξοδικότερα. Όμως το παράτησα και το γύρισα σε ext3 για 2 λόγους. Ο ένας είναι ιδεολογικός, λόγω των πράξεων του reiser και ο δεύτερος επειδή σταμάτησε η ανάπτυξή του και ενδεχομένως να υπάρξουν προβλήματα σε μελλοντικά updates. Έκτοτε κι εγώ χρησιμοποιώ ext3 για filesystems παντού, εκτός από μια κατάτμηση που έχω xfs και xρησιμοποιείται από το mythtv για εγγραφές.

 

Επίσης θα ήθελα να υπενθυμίσω και μια πολύ ενδιαφέρουσα συζήτηση που είχε γίνει στο παρελθόν.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εγώ μετά από τις πρώτες αναγνωριστικές επαφές μου με Linux και ext2, πέρασα σε reiserFS. Διαπίστωσα αισθητή διαφορά από το ext2 (αναμενόμενο άλλωστε) και έκτοτε έχω "κολλήσει" με αυτό. Νομίζω ότι θα το αντικαταστήσω με το ext4 όταν με το καλό εγκαταστήσω το Ubuntu 9.04.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

γνωριζω ελαχιστα απο FS

 

βλεπω οτι πολλοι εχουν ext2 για το / και ext3 για τα υπολοιπα.Προσωπικα εχω ext3 παντου.Μπορει καποιος να μου εξηγησει γιατι να μετατρεψω το / μου απο ext3 σε ext2?

 

και επισης,η μετατροπη ext3 σε ext4 γινεται; (οχι αν ειναι εφικτη,αν το εχει δοκιμασει καποιος,τι προβληματα δημιουργησε κλπ)

 

ευχαριστω πολυ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ext2 στο / δεν (θα έπρεπε να) έχει πλέον κανείς. Στο /boot έχουμε μερικοί, εκεί δηλαδή που μπαίνει ο πυρήνας και το initrd, διότι το journaling δεν έχει νόημα απ' τη στιγμή που δεν υποστηρίζεται από τον bootloader journal replay. Επιπλέον, αν στο / έχει κανείς reiserfs ή xfs ή κάποιο άλλο μυστήριο binary-tree based fs, τότε ένα χωριστό /boot επιβάλλεται, διότι σε περίπτωση unclean shutdown ο grub ενδέχεται να αρνηθεί να bootάρει από το /.

 

ext3 σε ext2 μετατρέπεις απλά βγάζοντας το has_journal feature με το tune2fs.

 

Το ext4 είναι forward compatible, μπορείς δηλαδή να μετατρέψεις ext3 σε ext4, όχι όμως το αντίστροφο. Για περισσότερες πληροφορίες:

http://kernelnewbies.org/Ext4

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...