Προώθηση Bcachef στον πυρήνα Linux

Ο Kent Overstreet, ο συγγραφέας του συστήματος προσωρινής αποθήκευσης συσκευών μπλοκ BCache SSD, το οποίο αποτελεί μέρος του πυρήνα Linux, συνόψισε τα αποτελέσματα της εργασίας για την προώθηση του συστήματος αρχείων Bcachefs στην ομιλία του στο συνέδριο LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) στην κύρια σύνθεση του πυρήνα του Linux και μίλησε για σχέδια για την περαιτέρω ανάπτυξη αυτού του FS. Τον Μάιο, ένα ενημερωμένο σύνολο ενημερώσεων κώδικα με την εφαρμογή του Bcachefs FS προτάθηκε για έλεγχο και συμπερίληψη στην κύρια σύνθεση του πυρήνα του Linux. Η FS Bcachefs αναπτύσσεται εδώ και περίπου 10 χρόνια. Η ετοιμότητα για επανεξέταση της εφαρμογής των Bcachefs πριν από την ένταξη στον πυρήνα ανακοινώθηκε στα τέλη του 2020 και η τρέχουσα έκδοση των ενημερώσεων κώδικα λαμβάνει υπόψη τα σχόλια και τις ελλείψεις που εντοπίστηκαν κατά την προηγούμενη αναθεώρηση.

Ο στόχος ανάπτυξης του Bcachefs είναι να φτάσει το επίπεδο XFS σε απόδοση, αξιοπιστία και επεκτασιμότητα, παρέχοντας παράλληλα πρόσθετα χαρακτηριστικά που είναι εγγενή στα Btrfs και ZFS, όπως η συμπερίληψη πολλών συσκευών σε ένα διαμέρισμα, διατάξεις αποθήκευσης πολλαπλών επιπέδων, αναπαραγωγή (RAID 1/10). προσωρινή αποθήκευση, διαφανής συμπίεση δεδομένων (λειτουργίες LZ4, gzip και ZSTD), τμήματα καταστάσεων (στιγμιότυπα), επαλήθευση ακεραιότητας με αθροίσματα ελέγχου, δυνατότητα αποθήκευσης κωδικών διόρθωσης σφαλμάτων Reed-Solomon (RAID 5/6), κρυπτογραφημένη αποθήκευση πληροφοριών (ChaCha20 και Poly1305 είναι μεταχειρισμένα). Όσον αφορά την απόδοση, το Bcachefs προηγείται των Btrfs και άλλων συστημάτων αρχείων που βασίζονται στον μηχανισμό Copy-on-Write και επιδεικνύει απόδοση κοντά στα Ext4 και XFS.

Από τα τελευταία επιτεύγματα στην ανάπτυξη των Bcachefs, σημειώνεται η σταθεροποίηση της υλοποίησης στιγμιότυπων που είναι διαθέσιμα για γραφή. Σε σύγκριση με τα Btrfs, τα στιγμιότυπα στα Bcachefs είναι πλέον πολύ καλύτερα επεκτάσιμα και απαλλαγμένα από τα προβλήματα που ενυπάρχουν στο Btrfs. Στην πράξη, η εργασία των στιγμιότυπων δοκιμάστηκε κατά την οργάνωση αντιγράφων ασφαλείας MySQL. Το Bcachefs έχει κάνει επίσης πολλή δουλειά για τη βελτίωση της επεκτασιμότητας - το σύστημα αρχείων έχει καλή απόδοση σε δοκιμές σε χώρο αποθήκευσης 100 TB και το Bcachefs αναμένεται να εφαρμοστεί σε χώρο αποθήκευσης 1 PB στο εγγύς μέλλον. Προστέθηκε μια νέα λειτουργία nocow για την απενεργοποίηση του μηχανισμού "αντιγραφή σε εγγραφή" (nocow). Κατά τη διάρκεια του καλοκαιριού, σχεδιάζουν να φέρουν την εφαρμογή των κωδικών διόρθωσης σφαλμάτων και του RAIDZ σε σταθερή κατάσταση, καθώς και να λύσουν προβλήματα με υψηλή κατανάλωση μνήμης κατά την επαναφορά και τον έλεγχο συστημάτων αρχείων με το βοηθητικό πρόγραμμα fsck.

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

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

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

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

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο