Bcachefs 1.33: Προηγμένη διάγνωση, μετρήσεις σε πραγματικό χρόνο και βελτιστοποίηση Btree

Βασικά σημεία:
  • Λεπτομερή μηνύματα σφάλματος: εξηγήστε την αιτία, τον τύπο (σκληρό/μαλακό) και τη λύση.
  • Το bcachefs fs top εμφανίζει πλέον ταχύτητες μεταφοράς σε πραγματικό χρόνο.
  • Ασύγχρονη σύντηξη κόμβων Btree για βελτίωση της απόδοσης υπό φορτίο
  • Νέες επιλογές mount_trusts_udev και writeback_timeout.
  • Μαζική μείωση του goto στον κώδικα (από 2500 σε 600) προετοιμάζοντας την άφιξη του Rust.
bcachefs

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

Πριν από λίγες ημέρες, ο Kent Overstreet ανακοίνωσε την κυκλοφορία του Bcachefs 1.33.0 , μιας νέας έκδοσης του συστήματος αρχείων που εισάγει βαθιές δομικές αλλαγές στη διαχείριση δεδομένων και στην αρχιτεκτονική του πηγαίου κώδικά του.

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

«Συμφιλίωση»: Μια νέα εποχή για την ακεραιότητα των δεδομένων

Το πιο αξιοσημείωτο νέο χαρακτηριστικό, που περιγράφεται ως η πιο σημαντική αλλαγή τα τελευταία δύο χρόνια, είναι η εισαγωγή της συνάρτησης Reconciliation (rebalance_v2) . Αυτός ο νέος μηχανισμός αντικαθιστά το παλιό σύστημα "αναδιάρθρωσης" και αντιμετωπίζει έναν από τους κύριους περιορισμούς του: το σύστημα μπορεί πλέον να διαχειρίζεται και να μετακινεί όχι μόνο δεδομένα χρήστη αλλά και μεταδεδομένα συστήματος αρχείων.

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

Καθαρισμός κώδικα και προετοιμασία για σκουριά

Στο εσωτερικό, η έκδοση 1.33.0 φέρνει μια μαζική αναδιάρθρωση του κώδικα C για να τον κάνει πιο ασφαλή και συμβατό με μια μελλοντική εφαρμογή στο ΣκωρίαΟ προγραμματιστής πραγματοποίησε έναν βαθύ καθαρισμό, μειώνοντας τον αριθμό των δηλώσεων. goto από 2.500 σε μόλις 600, κάτι που απλοποιεί σημαντικά τη λογική ροή του προγράμματος.

Επιπλέον, έχουν εισαχθεί νέες μακροεντολές, όπως DARRAY() y try()Αυτά έχουν σχεδιαστεί για να μιμούνται τη δυναμική διανυσματική συμπεριφορά και τον χειρισμό σφαλμάτων των Rust και C++. Αυτό όχι μόνο εκσυγχρονίζει τον τρέχοντα κώδικα, αλλά θα διευκολύνει επίσης τη φορητότητα και θα μειώσει την επιφάνεια σφαλμάτων μνήμης στο μέλλον.

Βελτιωμένη διαγνωστική και ευελιξία αποθήκευσης

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

Αυτή η διαφάνεια εκτείνεται σε διάφορα επίπεδα:

  • Λεπτομερή σφάλματα εισόδου/εξόδου: Όταν το επίπεδο μπλοκ αναφέρει μια αποτυχία, το Bcachefs μεταδίδει πλέον τον συγκεκριμένο κώδικα (όπως π.χ. BLK_STS_IOERR), βοηθώντας στον εντοπισμό του εάν η αιτία είναι ο φυσικός δίσκος.
  • Σφάλματα συναρμολόγησης: Εάν λείπουν συσκευές για τη συναρμολόγηση ενός τόμου, το σύστημα πλέον υποδεικνύει ακριβώς ποια μονάδα λείπει, εμφανίζοντας το όνομα και το μοντέλο της με βάση την τελευταία φορά που την είδατε.
  • Όρια ποσοστού σφάλματος: Τα όρια για τα "μαλακά" (λογισμικό) και τα "σκληρά" (υλικό) σφάλματα έχουν διαχωριστεί, διασφαλίζοντας ότι μια πλημμύρα μικρών σφαλμάτων δεν καλύπτει μια κρίσιμη βλάβη του δίσκου.

Επιπλέον, η εντολή bcachefs fs top Έχει βελτιωθεί. Οι εσωτερικοί μετρητές εμφανίζουν πλέον ταχύτητες μεταφοράς δεδομένων αντί μόνο στατικούς αριθμούς, διευκολύνοντας πολύ τη συσχέτιση συμβάντων (όπως π.χ. data_update_fail) με μειώσεις απόδοσης σε πραγματικό χρόνο.

Βελτιστοποιήσεις σε Btrees και νέες επιλογές τοποθέτησης

Στο εσωτερικό, η απόδοση σε συνθήκες μεγάλου φόρτου εργασίας βελτιώνεται χάρη σε αλλαγές στη διαχείριση B-tree. Η συγχώνευση κενών κόμβων γίνεται πλέον ασύγχρονα, εξαλείφοντας τα σημεία συμφόρησης στο buffer εγγραφής. Επιπλέον, έχει προστεθεί ένα προαιρετικό πέρασμα ανάκτησης. merge_btree_nodes, για χειροκίνητη βελτιστοποίηση της δομής δέντρου, εάν είναι απαραίτητο.

Ένα άλλο πολύ πρακτικό πρόσθετο χαρακτηριστικό είναι η δυνατότητα εκκίνησης ενός συστήματος αρχείων με τη διαμόρφωση replicas=2 σε έναν μόνο δίσκοΑυτό επιτρέπει στους χρήστες να ξεκινούν με μία μόνο μονάδα δίσκου γνωρίζοντας ότι το σύστημα «πρέπει» να έχει πλεονασμό. Μόλις συνδεθεί μια δεύτερη μονάδα δίσκου, το Bcachefs αντιγράφει αυτόματα τα δεδομένα χωρίς να απαιτείται πολύπλοκη χειροκίνητη παρέμβαση.

Τέλος, αξίζει να αναφερθεί ότι η νέα έκδοση, η οποία είναι ήδη διαθέσιμη για διανομές όπως Debian, Fedora, Arch Linux και NixOS, απαιτεί πυρήνα Linux 6.16 ή νεότερη έκδοση και διανέμεται σε δύο βασικά πακέτα: την ενότητα πυρήνα (bcachefs-kernel-dkms) και τα εργαλεία χρήστη (bcachefs-tools).


Προσθήκη ως προτιμώμενης πηγής στην Google