Το bcachefs είναι ήδη αρκετά ώριμο για να συμπεριληφθεί στον κύριο κλάδο του Linux, σύμφωνα με τα λόγια του συγγραφέα του 

bcachefs

Το Bcachefs είναι ένα σύστημα αρχείων αντιγραφής σε εγγραφή για λειτουργικά συστήματα που βασίζονται σε Linux.

πρόσφατα βοηθά Κεντ Όβερστριτ, ο συγγραφέας του bcachefs, στην ομιλία του στο συνέδριο LSFMM 2023 συνόψισε τα αποτελέσματα της εργασίας στο Προώθηση συστήματος αρχείων Bcachefs στον κύριο κλάδο του πυρήνα Linux και συζήτησαν σχέδια για περαιτέρω ανάπτυξη του πυρήνα.

Το Bcachefs αναπτύσσεται χρησιμοποιώντας ήδη αποδεδειγμένες τεχνολογίες στην ανάπτυξη της συσκευής μπλοκ Bcache, σχεδιασμένη να αποθηκεύει προσωρινά την πρόσβαση σε αργούς σκληρούς δίσκους σε γρήγορες μονάδες SSD (περιλαμβάνεται στον πυρήνα από την έκδοση 3.10). Το Bcachefs χρησιμοποιεί τον μηχανισμό Copy-on-Write (COW), στην οποία οι αλλαγές δεν οδηγούν σε αντικατάσταση δεδομένων: η νέα κατάσταση εγγράφεται σε μια νέα θέση, μετά την οποία αλλάζει ο δείκτης τρέχουσας κατάστασης.

Ένα χαρακτηριστικό των Bcachefs είναι το υποστήριξη για τη σύνδεση μονάδων πολλαπλών επιπέδων, στο οποίο ο χώρος αποθήκευσης αποτελείται από πολλαπλά επίπεδα: ταχύτερες μονάδες δίσκου (SSD) είναι προσαρτημένες στο κάτω επίπεδο, οι οποίες χρησιμοποιούνται για την προσωρινή αποθήκευση δεδομένων που χρησιμοποιούνται συχνά, και το επάνω επίπεδο σχηματίζει μονάδες δίσκου μεγαλύτερης χωρητικότητας και φθηνότερες που αποθηκεύουν δεδομένα λιγότερης ζήτησης. Η προσωρινή αποθήκευση επανεγγραφής μπορεί να χρησιμοποιηθεί μεταξύ των επιπέδων. Οι μονάδες δίσκου μπορούν να προστεθούν δυναμικά και να αποσπαστούν από ένα διαμέρισμα χωρίς να διακοπεί η χρήση του συστήματος αρχείων (τα δεδομένα μετακινούνται αυτόματα).

Σχετικά με το έργο αναφέρεται ότι ο στόχος ανάπτυξης του Bcachefs είναι να φτάσει στο επίπεδο του XFS όσον αφορά την απόδοση, αξιοπιστία και επεκτασιμότητα.

Παρέχοντας πρόσθετες λειτουργίες εγγενείς σε Btrfs και ZFS, όπως πολλές συσκευές σε ένα διαμέρισμα, διατάξεις αποθήκευσης πολλαπλών επιπέδων, αναπαραγωγή (RAID 1/10), προσωρινή αποθήκευση, λειτουργίες LZ4, gzip και ZSTD, τμήματα κατάστασης , επαλήθευση ακεραιότητας αθροίσματος ελέγχου, δυνατότητα για αποθήκευση κωδικών διόρθωσης σφαλμάτων Reed-Solomon, αποθήκευση κρυπτογραφημένων πληροφοριών.

Όσον αφορά την απόδοση, το Bcachefs προηγείται των Btrfs και άλλων συστημάτων αρχείων που βασίζονται στον μηχανισμό Copy-on-Write, επιδεικνύοντας απόδοση κοντά στα Ext4 και XFS.

Από τα τελευταία επιτεύγματα στην ανάπτυξη των Bcachefs ξεχωρίζει η σταθεροποίηση της υλοποίησης στιγμιότυπων που διατίθενται για γραφή. Σε σύγκριση με τα Btrfs, τα στιγμιότυπα στα Bcachef τώρα κλιμακώνονται σημαντικά καλύτερα και είναι απαλλαγμένα από προβλήματα που είναι εγγενή στα Btrfs.

Στην πράξη, η εργασία των στιγμιότυπων δοκιμάστηκε κατά την οργάνωση αντιγράφων ασφαλείας MySQL. Το Bcachefs έχει κάνει επίσης πολλή δουλειά για τη βελτίωση της επεκτασιμότητας: το σύστημα αρχείων έχει αποδώσει καλά σε δοκιμές σε χώρο αποθήκευσης 100 TB και το Bcachefs αναμένεται να αναπτυχθεί σε χώρο αποθήκευσης 1PB στο εγγύς μέλλον.

Πέραν αυτού, τονίζεται επίσης ότι πρόσθεσε μια νέα λειτουργία nocow για να απενεργοποιήσει τον μηχανισμό "αντιγραφή κατά την εγγραφή".. Κατά τη διάρκεια του καλοκαιριού, σχεδιάζουν να φέρουν την εφαρμογή του RAIDZ και τους κωδικούς διόρθωσης σφαλμάτων σε σταθερή κατάσταση, καθώς και να λύσουν προβλήματα με υψηλή κατανάλωση μνήμης κατά την επαναφορά και την επαλήθευση συστημάτων αρχείων με το βοηθητικό πρόγραμμα fsck.

των σχεδίων για το μέλλον αναφέρεται το δΘέλω να χρησιμοποιήσω τη γλώσσα Rust στην ανάπτυξη των Bcachefs. Σύμφωνα με τον συγγραφέα του Bcachefs:

Του αρέσει να κωδικοποιεί, όχι να διορθώνει κώδικα, και τώρα είναι τρελό να γράφει κώδικα σε C όταν υπάρχει καλύτερη επιλογή. Η Rust εμπλέκεται ήδη στο Bcachefs στην υλοποίηση ορισμένων από τα βοηθητικά προγράμματα χώρου χρηστών. Επίσης, η ιδέα της πλήρους επανεγγραφής των Bcachefs στο Rust σταδιακά εκκολάπτεται, καθώς η χρήση αυτής της γλώσσας εξοικονομεί σημαντικά χρόνο εντοπισμού σφαλμάτων.

Σχετικά με τη μετακίνηση του Bcachefs στον κύριο κλάδο του πυρήνα από Linux, η διαδικασία υιοθέτησης ενδέχεται να καθυστερήσει λόγω του μεγάλου μεγέθους των αλλαγών (2500 patches και περίπου 90 χιλιάδες γραμμές κώδικα), το οποίο είναι δύσκολο να αναθεωρηθεί. Για να επιταχυνθεί η αναθεώρηση, ορισμένοι προγραμματιστές έχουν προτείνει τον διαχωρισμό της σειράς patch σε μικρότερα, πιο λογικά διαχωρισμένα μέρη.

Κατά τη διάρκεια της συζήτησης, ορισμένοι συμμετέχοντες επέστησαν επίσης την προσοχή στην ανάπτυξη του έργου από έναν προγραμματιστή και στον κίνδυνο να μην συντηρηθεί ο κώδικας εάν συμβεί κάτι στον προγραμματιστή του (δύο υπάλληλοι της Red Hat ενδιαφέρονται για το έργο, αλλά η εργασία σας είναι ακόμη σε εκκρεμότητα ). περιορισμένες διορθώσεις σφαλμάτων).

Τον Μάιο, προτάθηκε να αναθεωρηθεί και να συμπεριληφθεί στο κύριο μέρος του πυρήνα του Linux. Η ετοιμότητα για επανεξέταση της εφαρμογής του Bcachefs πριν από τη συμπερίληψή του στον πυρήνα ανακοινώθηκε στα τέλη του 2020 και η τρέχουσα έκδοση των ενημερώσεων κώδικα λαμβάνει υπόψη τα σχόλια και τις ελλείψεις που εντοπίστηκαν κατά την προηγούμενη αναθεώρηση.

πηγή: https://lwn.net/