Κυκλοφορία του ZFS σε Linux 0.8.0, υλοποιήσεις του ZFS για τον πυρήνα του Linux

Μετά από σχεδόν δύο χρόνια ανάπτυξης παρουσιάζονται απελευθέρωση ZFS σε Linux 0.8.0, μια υλοποίηση του συστήματος αρχείων ZFS συσκευασμένη ως λειτουργική μονάδα για τον πυρήνα του Linux. Το module έχει δοκιμαστεί με πυρήνες Linux από 2.6.32 έως 5.1. Έτοιμα πακέτα εγκατάστασης σύντομα θα προετοιμαστεί για μεγάλες διανομές Linux, συμπεριλαμβανομένων των Debian, Ubuntu, Fedora, RHEL/CentOS. Η μονάδα ZFS σε Linux περιλαμβάνεται ήδη στις διανομές Debian, Ubuntu, Gentoo, Sabayon Linux και ALT Linux.

Ως μέρος του ZFS στο Linux, έχει προετοιμαστεί μια υλοποίηση στοιχείων ZFS που σχετίζονται τόσο με τη λειτουργία του συστήματος αρχείων όσο και με τη λειτουργία του διαχειριστή τόμου. Συγκεκριμένα, υλοποιούνται τα ακόλουθα στοιχεία: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) και ZPL (ZFS POSIX Layer). Επιπλέον, το έργο παρέχει τη δυνατότητα χρήσης του ZFS ως backend για το σύστημα αρχείων συμπλέγματος Luster. Η εργασία του έργου βασίζεται στον αρχικό κώδικα ZFS που εισήχθη από το έργο OpenSolaris και βελτιώθηκε με βελτιώσεις και διορθώσεις από την κοινότητα Illumos. Το έργο αναπτύσσεται με τη συμμετοχή εργαζομένων του Εθνικού Εργαστηρίου Livermore στο πλαίσιο σύμβασης με το Υπουργείο Ενέργειας των ΗΠΑ.

Ο κώδικας διανέμεται υπό μια δωρεάν άδεια CDDL, η οποία είναι ασύμβατη με το GPLv2, το οποίο δεν επιτρέπει την ενσωμάτωση του ZFS σε Linux στον κύριο κλάδο του πυρήνα Linux, καθώς δεν επιτρέπεται η μίξη κώδικα με άδειες GPLv2 και CDDL. Για να αποφευχθεί αυτή η ασυμβατότητα της άδειας, αποφασίστηκε να διανεμηθεί ολόκληρο το προϊόν υπό την άδεια CDDL ως μονάδα χωριστής φόρτωσης, η οποία παρέχεται ξεχωριστά από τον πυρήνα. Η σταθερότητα της βάσης κωδικών ZFS σε Linux αξιολογείται ως συγκρίσιμη με άλλα συστήματα αρχείων για Linux.

Βασικές αλλαγές:

  • Προστέθηκε ενσωματωμένη υποστήριξη για κρυπτογράφηση αποθηκευμένων δεδομένων στο επίπεδο του συστήματος αρχείων και των κατατμήσεων. Ο προεπιλεγμένος αλγόριθμος κρυπτογράφησης είναι aes-256-ccm. Η εντολή "zfs load-key" έχει προταθεί για τη φόρτωση κλειδιών κρυπτογράφησης.
  • Εφάρμοσε τη δυνατότητα μεταφοράς κρυπτογραφημένων δεδομένων κατά την εκτέλεση των εντολών 'zfs send' και 'zfs receive'. Κατά τον καθορισμό της επιλογής «-w», τα δεδομένα που είναι ήδη κρυπτογραφημένα στο χώρο συγκέντρωσης μεταφέρονται σε άλλη ομάδα ως έχουν, χωρίς ενδιάμεση αποκρυπτογράφηση. Με τέτοια αντιγραφή, τα δεδομένα παραμένουν προστατευμένα από το κλειδί του αποστολέα, το οποίο επιτρέπει τη χρήση αυτής της λειτουργίας για δημιουργία αντιγράφων ασφαλείας σε αναξιόπιστα συστήματα (σε περίπτωση παραβίασης του παραλήπτη, ο εισβολέας δεν θα μπορεί να έχει πρόσβαση στα δεδομένα χωρίς το κλειδί).
  • Προστέθηκε υποστήριξη για την αφαίρεση κύριων μονάδων δίσκου από μια πισίνα αποθήκευσης, συνδεδεμένη τόσο μεμονωμένα όσο και ως μέρος ενός καθρέφτη. Η αφαίρεση πραγματοποιείται με την εντολή "zpool remove". Η διαδικασία διαγραφής αντιγράφει τα δεδομένα από την εξαιρούμενη μονάδα δίσκου στις υπόλοιπες κύριες μονάδες δίσκου στο χώρο συγκέντρωσης.
  • Προστέθηκε η εντολή "zpool checkpoint" για αποθήκευση της τρέχουσας κατάστασης της πισίνας με τη δυνατότητα επαναφοράς περαιτέρω αλλαγών στο αποθηκευμένο χρονικό σημείο (δημιουργείται ένα στιγμιότυπο ολόκληρης της πισίνας). Αυτή η δυνατότητα μπορεί να είναι χρήσιμη στη διαδικασία εκτέλεσης δυνητικά επικίνδυνων σύνθετων διοικητικών εργασιών, η οποία υπό κανονικές συνθήκες οδηγεί σε μη αναστρέψιμες αλλαγές (για παράδειγμα, ενεργοποίηση σημαιών για νέα λειτουργικότητα ZFS ή εκκαθάριση δεδομένων).
  • Η εντολή "zpool trim" προστέθηκε για να ενημερώσει τις μονάδες δίσκου που χρησιμοποιούνται στο χώρο συγκέντρωσης σχετικά με τομείς που δεν χρησιμοποιούνται πλέον. Η χρήση της λειτουργίας TRIM καθιστά δυνατή την αύξηση της απόδοσης των SSD και την πρόληψη της υποβάθμισης της απόδοσής τους. Έχει προταθεί μια νέα ιδιότητα "autotrim" για να ενεργοποιηθεί η συνεχής διαδικασία παρασκηνίου μετάδοσης εντολών TRIM.
  • Προστέθηκε η εντολή "zpool initialize" για την προετοιμασία όλου του μη εκχωρημένου χώρου στο δίσκο, η οποία του επιτρέπει να είναι άμεσα έτοιμος για χρήση, χωρίς υποβάθμιση της απόδοσης κατά την πρώτη πρόσβαση (για παράδειγμα, όταν φιλοξενούνται εικονικές αποθηκευτικοί χώροι όπως το VMware VMDK).
  • Προστέθηκε υποστήριξη για ποσοστώσεις λογιστικής και σε επίπεδο έργου, επιπλέον των προηγούμενων διαθέσιμων ποσοστώσεων σε επίπεδο χρήστη και ομάδας. Στην ουσία, τα έργα είναι ένας ξεχωριστός χώρος αντικειμένων που σχετίζονται με ένα ξεχωριστό αναγνωριστικό (project ID). Η σύνδεση ορίζεται μέσω της λειτουργίας 'chattr -p' ή μέσω της κληρονομικότητας χαρακτηριστικών. Για τη διαχείριση έργου, παρουσιάζονται οι εντολές "zfs project" και "zfs projectspace", οι οποίες σας επιτρέπουν να διαχειριστείτε τη δημιουργία έργων και να ορίσετε όρια χώρου στο δίσκο για αυτά.
  • Προστέθηκε η δυνατότητα δημιουργίας σεναρίων Lua για την αυτοματοποίηση διαφόρων εργασιών με το ZFS. Τα σενάρια εκτελούνται σε ειδικά απομονωμένα περιβάλλοντα χρησιμοποιώντας την εντολή "zpool program".
  • Εφαρμόστηκε νέα βιβλιοθήκη πυζφς, το οποίο παρέχει ένα σταθερό API για τη διαχείριση ZFS από εφαρμογές Python. Η βιβλιοθήκη είναι ένα περιτύλιγμα γύρω από το libzfs_core και παρέχει ένα πανομοιότυπο σύνολο συναρτήσεων, αλλά χρησιμοποιεί πιο κοντινούς τύπους Python.
  • Τα βοηθητικά προγράμματα arcstat, arcsummary και dbufstat έχουν γίνει συμβατά με την Python 3. Τα βοηθητικά προγράμματα arcstat.py, arc_summary.py και dbufstat.py έχουν μετονομαστεί σε εκδόσεις χωρίς την επέκταση ".py".
  • Προστέθηκε υποστήριξη για τη διεπαφή πυρήνα Linux Direct IO (O_DIRECT), η οποία επιτρέπει την πρόσβαση σε δεδομένα χωρίς αποθήκευση στην προσωρινή μνήμη και παράκαμψη της κρυφής μνήμης.
  • Εισάγονται βελτιστοποιήσεις απόδοσης:
    • Η εργασία των εντολών "scrub" και "resilver" έχει επιταχυνθεί λόγω του διαχωρισμού σε δύο φάσεις (μια ξεχωριστή φάση έχει διατεθεί για τη σάρωση μεταδεδομένων και τον προσδιορισμό της θέσης των μπλοκ με δεδομένα στο δίσκο, η οποία επιτρέπει περαιτέρω επαλήθευση χρησιμοποιώντας διαδοχικά δεδομένα ΑΝΑΓΝΩΣΗ);
    • Προστέθηκε υποστήριξη για τάξεις κατανομής,
      Επιτρέποντας τη συγκέντρωση σχετικά μικρών SSD και τη χρήση τους για την αποθήκευση ορισμένων μόνο τύπων μπλοκ που χρησιμοποιούνται συνήθως, όπως μεταδεδομένα, δεδομένα DDT και μπλοκ μικρών αρχείων.

    • Βελτιωμένη απόδοση εντολών διαχειριστή όπως π.χ
      "zfs list" και "zfs get", αποθηκεύοντας προσωρινά τα μεταδεδομένα που είναι απαραίτητα για τη λειτουργία τους.

    • Προστέθηκε υποστήριξη για την παραλληλοποίηση λειτουργιών εκχώρησης μπλοκ εκτελώντας ξεχωριστές διεργασίες κατανεμητή για κάθε ομάδα μετα-πλαισίων. Στα συμβατικά συστήματα, υπάρχει αύξηση απόδοσης 5-10%, αλλά σε μεγάλα (8 128 GB SSD, 24 πυρήνες NUMA, 256 GB μνήμης RAM), η αύξηση των λειτουργιών κατανομής μπλοκ μπορεί να φτάσει το 25%.
    • Προστέθηκε η δυνατότητα αναβολής εκτέλεσης της εντολής "resilver" (ανακατασκευή της διανομής δεδομένων λαμβάνοντας υπόψη τις αλλαγές στη διαμόρφωση των μονάδων δίσκου) - εάν η προηγούμενη δεν έχει ακόμη ολοκληρωθεί κατά την έναρξη μιας νέας λειτουργίας, τότε ο νέος χειριστής θα ξεκινήσει την εκτέλεση μόνο μετά το τέλος του προηγούμενου?
    • Έχουν προστεθεί βελτιστοποιήσεις στο ZIL (ZFS Intent Log) για να επιτρέπεται η δημιουργία και η επεξεργασία μπλοκ παρουσία μπλοκ που εξακολουθούν να υποβάλλονται σε επεξεργασία από το χώρο αποθήκευσης.
    • Μειωμένος χρόνος εγγραφής για κατατμήσεις (zvol) στο σύστημα. Όταν ένα pool περιέχει μεγάλο αριθμό κατατμήσεων, είναι πλέον διαθέσιμα αμέσως μετά την "εισαγωγή zpool".
    • Προστέθηκε υποστήριξη για υπολογισμό με επιτάχυνση υλικού των κατακερματισμών SHA256 και λειτουργιών κρυπτογράφησης AES-GSM με χρήση τσιπ Intel QAT (Τεχνολογία Quick Assist). Προστέθηκε υποστήριξη για επιτάχυνση υλικού του chipset Intel C62x και της CPU Atom C3000.

Πηγή: opennet.ru

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