Το έργο NetBSD αναπτύσσει έναν νέο NVMM hypervisor

NetBSD Project Developers ανακοίνωσε σχετικά με τη δημιουργία ενός νέου hypervisor και της σχετικής στοίβας εικονικοποίησης, τα οποία περιλαμβάνονται ήδη στον πειραματικό κλάδο NetBSD-current και θα προσφέρονται στη σταθερή έκδοση του NetBSD 9. Το NVMM επί του παρόντος περιορίζεται στην υποστήριξη της αρχιτεκτονικής x86_64 και παρέχει δύο backend για ενεργοποίηση μηχανισμών εικονικοποίησης υλικού: x86-SVM με υποστήριξη για επεκτάσεις εικονικοποίησης CPU AMD και x86-VMX για επεξεργαστές Intel. Στην τρέχουσα μορφή του, είναι δυνατή η εκτέλεση έως και 128 εικονικών μηχανών σε έναν κεντρικό υπολογιστή, καθεμία από τις οποίες μπορεί να εκχωρηθεί έως και 256 εικονικούς πυρήνες επεξεργαστή (VCPU) και 128 GB μνήμης RAM.

Το NVMM περιλαμβάνει ένα πρόγραμμα οδήγησης που εκτελείται σε επίπεδο πυρήνα συστήματος και συντονίζει την πρόσβαση σε μηχανισμούς εικονικοποίησης υλικού, και μια στοίβα Libnvmm που εκτελείται στο χώρο χρήστη. Η αλληλεπίδραση μεταξύ των στοιχείων του πυρήνα και του χώρου χρήστη πραγματοποιείται μέσω του IOCTL. Ένα χαρακτηριστικό του NVMM που το διακρίνει από τους hypervisors όπως το KVM είναι HAXM και Bhyve, είναι ότι σε επίπεδο πυρήνα εκτελείται μόνο το ελάχιστο απαιτούμενο σύνολο δεσμεύσεων γύρω από μηχανισμούς εικονικοποίησης υλικού και όλος ο κώδικας εξομοίωσης υλικού μετακινείται έξω από τον πυρήνα στο χώρο χρήστη. Αυτή η προσέγγιση σάς επιτρέπει να μειώσετε τον αριθμό του κώδικα που εκτελείται με αυξημένα προνόμια και να μειώσετε τον κίνδυνο να τεθεί σε κίνδυνο ολόκληρο το σύστημα σε περίπτωση επιθέσεων σε ευπάθειες στον hypervisor. Επιπλέον, ο εντοπισμός σφαλμάτων και οι δοκιμές ασάφειας του έργου απλοποιούνται αισθητά.

Ωστόσο, το ίδιο το Libnvmm δεν περιέχει λειτουργίες εξομοιωτή, αλλά παρέχει μόνο ένα API που σας επιτρέπει να ενσωματώσετε υποστήριξη NVMM σε υπάρχοντες εξομοιωτές, για παράδειγμα, QEMU. Το API καλύπτει λειτουργίες όπως η δημιουργία και η εκκίνηση μιας εικονικής μηχανής, η κατανομή μνήμης στο σύστημα φιλοξενουμένων και η κατανομή VCPU. Για να βελτιώσει την ασφάλεια και να μειώσει πιθανά διανύσματα επίθεσης, το libnvmm παρέχει μόνο λειτουργίες που ζητούνται ρητά—από προεπιλογή, οι σύνθετοι χειριστές δεν καλούνται αυτόματα και ενδέχεται να μην χρησιμοποιηθούν καθόλου εάν μπορούν να αποφευχθούν. Το NVMM προσπαθεί να κρατά τα πράγματα απλά, χωρίς να γίνεται πολύ περίπλοκο, και σας επιτρέπει να ελέγχετε όσο το δυνατόν περισσότερες πτυχές της εργασίας σας.

Το έργο NetBSD αναπτύσσει έναν νέο NVMM hypervisor

Το τμήμα του NVMM σε επίπεδο πυρήνα είναι αρκετά στενά ενσωματωμένο με τον πυρήνα NetBSD και επιτρέπει βελτιωμένη απόδοση μειώνοντας τον αριθμό των εναλλαγών περιβάλλοντος μεταξύ του λειτουργικού συστήματος επισκέπτη και του περιβάλλοντος κεντρικού υπολογιστή. Από την πλευρά του χώρου χρήστη, το libnvmm προσπαθεί να συγκεντρώσει κοινές λειτουργίες εισόδου/εξόδου και να αποφύγει τις άσκοπες κλήσεις συστήματος. Το σύστημα εκχώρησης μνήμης βασίζεται στο υποσύστημα pmap, το οποίο σας επιτρέπει να αφαιρέσετε σελίδες μνήμης φιλοξενουμένων στο διαμέρισμα ανταλλαγής σε περίπτωση έλλειψης μνήμης στο σύστημα. Το NVMM είναι απαλλαγμένο από παγκόσμιες κλειδαριές και κλίμακες, επιτρέποντάς σας να χρησιμοποιείτε ταυτόχρονα διαφορετικούς πυρήνες CPU για να εκτελείτε διαφορετικές εικονικές μηχανές επισκέπτη.

Έχει ετοιμαστεί μια λύση που βασίζεται σε QEMU που χρησιμοποιεί NVMM για την ενεργοποίηση μηχανισμών εικονικοποίησης υλικού. Γίνονται εργασίες για να συμπεριληφθούν τα προετοιμασμένα patches στην κύρια δομή του QEMU. Ο συνδυασμός QEMU+NVMM είναι ήδη позволяет εκτελείτε επιτυχώς φιλοξενούμενα συστήματα με FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 και άλλα λειτουργικά συστήματα σε συστήματα x86_64 με επεξεργαστές AMD και Intel (το ίδιο το NVMM δεν συνδέεται με μια συγκεκριμένη αρχιτεκτονική, για παράδειγμα, εάν δημιουργηθεί το κατάλληλο backend , θα μπορεί να λειτουργεί σε συστήματα ARM64 ). Μεταξύ των τομέων περαιτέρω εφαρμογής του NVMM, σημειώνεται επίσης η απομόνωση sandbox μεμονωμένων εφαρμογών.

Το έργο NetBSD αναπτύσσει έναν νέο NVMM hypervisor

Πηγή: opennet.ru

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