Τι είναι μια εικονική μηχανή; (Γιατί και πότε να το χρησιμοποιήσετε)

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

Ως μηχανικός λογισμικού, χρησιμοποιώ καθημερινά εικονικές μηχανές. Είναι ισχυρά εργαλεία στην ανάπτυξη λογισμικού, αλλά έχουν και άλλες χρήσεις. Γνωστά και ως VM, πολλές επιχειρήσεις τα χρησιμοποιούν λόγω της ευελιξίας, της αξιοπιστίας και της οικονομικής τους αποδοτικότητας. Επίσης, αποτρέπουν καταστροφές από τη δοκιμή φυγής λογισμικού.

Ας ρίξουμε μια ματιά στο τι είναι οι εικονικές μηχανές και γιατί χρησιμοποιούνται.

Τι είναι μια εικονική μηχανή;

Μια εικονική μηχανή είναι μια εμφάνιση ενός λειτουργικού συστήματος (OS) όπως τα Windows, Mac OS ή Linux που εκτελούνται εντός του κύριου λειτουργικού συστήματος ενός υπολογιστή.

Συνήθως, εκτελείται σε ένα παράθυρο εφαρμογής στην επιφάνεια εργασίας σας. Μια εικονική μηχανή έχει πλήρη λειτουργικότητα και λειτουργεί σαν ξεχωριστός υπολογιστής ή μηχάνημα. Στην ουσία, μια εικονική μηχανή είναι ένας εικονικός υπολογιστής που λειτουργεί μέσα σε έναν άλλο υπολογιστή που είναι γνωστός ως κεντρικός υπολογιστής.

Εικονική μηχανή 1
Εικόνα 1: Εικονική μηχανή που λειτουργεί σε φορητό υπολογιστή.

Μια εικονική μηχανή δεν διαθέτει υλικό (μνήμη, σκληρό δίσκο, πληκτρολόγιο ή οθόνη). Χρησιμοποιεί προσομοιωμένο υλικό από τον κεντρικό υπολογιστή. Εξαιτίας αυτού, πολλαπλά εικονικά μηχανήματα, τα οποία αναφέρονται επίσης ως ‘επισκέπτες’, μπορούν να εκτελεστούν σε έναν μόνο κεντρικό υπολογιστή.

Εικονική μηχανή 2
Εικόνα 2: Μηχανή υποδοχής που εκτελεί πολλαπλά VM.

Ο κεντρικός υπολογιστής μπορεί επίσης να τρέξει πολλαπλά VM με διαφορετικά λειτουργικά συστήματα, συμπεριλαμβανομένων των Linux, Mac OS και Windows. Αυτή η δυνατότητα εξαρτάται από το λογισμικό που ονομάζεται hypervisor (βλ. Εικόνα 1 παραπάνω). Ο hypervisor εκτελείται στον κεντρικό υπολογιστή και σας επιτρέπει να δημιουργήσετε, να διαμορφώσετε, να εκτελέσετε και να διαχειριστείτε εικονικές μηχανές.

Ο hypervisor εκχωρεί χώρο στο δίσκο, προγραμματίζει τον χρόνο επεξεργασίας και διαχειρίζεται τη χρήση της μνήμης για κάθε VM. Αυτό συμβαίνει σε εφαρμογές όπως η Oracle VirtualBox, VMware, Parallels, Xen, Microsoft Hyper-V και πολλοί άλλοι: είναι hypervisors.

Ένας hypervisor μπορεί να εκτελεστεί σε φορητό υπολογιστή, υπολογιστή ή διακομιστή. Κάνει τις εικονικές μηχανές διαθέσιμες στον τοπικό υπολογιστή ή στους χρήστες που είναι κατανεμημένοι σε ένα δίκτυο.

Διαφορετικοί τύποι εικονικών μηχανών και περιβαλλόντων απαιτούν διαφορετικούς τύπους hypervisors. Ας ρίξουμε μια ματιά σε μερικά από αυτά.

Τύποι εικονικών μηχανών

Εικονικές μηχανές συστήματος

Τα VM συστήματος, που μερικές φορές ονομάζονται πλήρης εικονικοποίηση, εκτελούνται από έναν hypervisor και παρέχουν τη λειτουργικότητα ενός πραγματικού συστήματος υπολογιστή. Χρησιμοποιούν το εγγενές λειτουργικό σύστημα του κεντρικού υπολογιστή για τη διαχείριση και την κοινή χρήση πόρων του συστήματος.

Οι εικονικές μηχανές συστήματος απαιτούν συχνά έναν ισχυρό κεντρικό υπολογιστή με γρήγορους ή πολλαπλούς CPU, μεγάλες ποσότητες μνήμης και τόνους χώρου στο δίσκο. Ορισμένα, τα οποία εκτελούνται σε προσωπικούς ή φορητούς υπολογιστές, ενδέχεται να μην απαιτούν την υπολογιστική ισχύ που χρειάζονται οι εικονικοί διακομιστές μεγάλων επιχειρήσεων. Ωστόσο, θα λειτουργούν αργά εάν το σύστημα υποδοχής δεν είναι επαρκές.

Επεξεργασία εικονικών μηχανών

Οι εικονικές μηχανές διεργασίας διαφέρουν αρκετά από τις SVM—μπορεί να τις έχετε να εκτελούνται στον υπολογιστή σας και να μην το γνωρίζετε καν. Είναι επίσης γνωστά ως εικονικές μηχανές εφαρμογών ή περιβάλλοντα διαχείρισης χρόνου εκτέλεσης (MREs). Αυτές οι εικονικές μηχανές τρέχουν μέσα σε ένα κεντρικό λειτουργικό σύστημα και υποστηρίζουν εφαρμογές ή διαδικασίες συστήματος.

Γιατί να χρησιμοποιήσετε ένα PVM; Εκτελούν υπηρεσίες χωρίς να εξαρτώνται από συγκεκριμένα λειτουργικά συστήματα ή υλικό. Έχουν το δικό τους μικρό λειτουργικό σύστημα με μόνο τους πόρους που χρειάζονται. Το MRE βρίσκεται σε ξεχωριστό περιβάλλον. δεν έχει σημασία αν τρέχει σε Windows, Mac OS, Linux ή σε οποιοδήποτε άλλο κεντρικό μηχάνημα.

Μία από τις πιο κοινές Εικονικές Μηχανές Διαδικασιών είναι αυτή για την οποία πιθανότατα έχετε ακούσει και μπορεί να έχετε δει να εκτελείται στον υπολογιστή σας. Χρησιμοποιείται για την εκτέλεση εφαρμογών Java και ονομάζεται Java Virtual Machine ή JVM για συντομία.

Τύποι Υπερβλέπων

Οι περισσότερες από τις εικονικές μηχανές με τις οποίες ασχολούμαστε χρησιμοποιούν έναν hypervisor επειδή μιμούνται ένα ολόκληρο σύστημα υπολογιστή. Υπάρχουν δύο διαφορετικοί τύποι hypervisors: Bare Metal Hypervisors και Hosted Hypervisors. Ας ρίξουμε μια γρήγορη ματιά και στα δύο.

Bare Metal Hypervisor

Τα BMH μπορούν επίσης να ονομάζονται εγγενείς υπερεπόπτες και εκτελούνται απευθείας στο υλικό του κεντρικού υπολογιστή αντί να εκτελούνται εντός του λειτουργικού συστήματος του κεντρικού υπολογιστή. Στην πραγματικότητα, παίρνουν τη θέση του λειτουργικού συστήματος του κεντρικού υπολογιστή, προγραμματίζοντας και διαχειριζόμενοι τη χρήση υλικού από κάθε εικονική μηχανή, αποκλείοντας έτσι τον «μεσαίο» (το λειτουργικό σύστημα του κεντρικού υπολογιστή) στη διαδικασία.

Οι εγγενείς hypervisors χρησιμοποιούνται συνήθως για μεγάλης κλίμακας εταιρικά VM, τα οποία χρησιμοποιούν οι εταιρείες για να παρέχουν στους υπαλλήλους τους πόρους διακομιστή. Οι υπηρεσίες Microsoft Azure ή Amazon Web Services είναι VM που φιλοξενούνται σε αυτόν τον τύπο αρχιτεκτονικής. Άλλα παραδείγματα είναι τα KVM, Microsoft Hyper-V και VMware vSphere.

Hosted Hypervisor

Οι φιλοξενούμενοι hypervisors τρέχουν σε τυπικά λειτουργικά συστήματα—όπως κάθε άλλη εφαρμογή που εκτελούμε στους υπολογιστές μας. Χρησιμοποιούν το λειτουργικό σύστημα του κεντρικού υπολογιστή για τη διαχείριση και τη διανομή πόρων. Αυτός ο τύπος hypervisor είναι πιο κατάλληλος για μεμονωμένους χρήστες που πρέπει να εκτελούν πολλά λειτουργικά συστήματα στους υπολογιστές τους.

Αυτές περιλαμβάνουν εφαρμογές όπως το Oracle VirtualBox, το VMware Workstations, το VMware Fusion, το Parallels Desktop και πολλές άλλες. Μπορείτε να βρείτε πιο λεπτομερείς πληροφορίες σχετικά με τους hosted hypervisors στο άρθρο μας, Το καλύτερο λογισμικό εικονικής μηχανής.

Γιατί να χρησιμοποιήσετε εικονικές μηχανές;

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

1. Αποδοτική

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

Η χρήση εικονικών μηχανών ως εταιρικοί διακομιστές έχει γίνει πλέον ο κανόνας. Με εικονικά μηχανήματα από έναν πάροχο όπως το MS Azure, δεν υπάρχουν αρχικές αγορές υλικού και χρεώσεις συντήρησης. Αυτά τα εικονικά μηχανήματα μπορούν να ρυθμιστούν, να ρυθμιστούν και να χρησιμοποιηθούν για μόλις πένες την ώρα. Μπορούν επίσης να απενεργοποιηθούν όταν δεν χρησιμοποιούνται και δεν επιβαρύνονται με κανένα κόστος.

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

2. Κλιμακόμενο και ευέλικτο

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

3. Γρήγορη ρύθμιση

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

4. Αποκατάσταση καταστροφών

Εάν προσπαθείτε να αποτρέψετε την απώλεια δεδομένων και να προετοιμαστείτε για ανάκτηση από καταστροφή, τα VM μπορούν να είναι ένα καταπληκτικό εργαλείο. Είναι εύκολο να δημιουργηθούν αντίγραφα ασφαλείας και μπορούν να διανεμηθούν σε διαφορετικές τοποθεσίες εάν χρειάζεται. Εάν ένα τρίτο μέρος όπως η Microsoft ή η Amazon φιλοξενεί τις εικονικές μηχανές, θα είναι εκτός τοποθεσίας—πράγμα που σημαίνει ότι τα δεδομένα σας είναι ασφαλή εάν το γραφείο σας καεί.

5. Εύκολο στην αναπαραγωγή

Οι περισσότεροι hypervisors σάς επιτρέπουν να δημιουργήσετε ένα αντίγραφο ή εικόνα ενός VM. Η απεικόνιση σάς επιτρέπει να περιστρέφετε εύκολα ακριβείς αναπαραγωγές της ίδιας βασικής εικονικής μηχανής για οποιαδήποτε κατάσταση.

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

6. Ιδανικό για Dev/Test

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

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

Τα VM λειτουργούν θαυμάσια για δοκιμές προϊόντων και αξιολογήσεις όπως αυτές που κάνουμε εδώ στο TechFewer.com. Μπορώ να εγκαταστήσω εφαρμογές σε ένα VM που εκτελείται στο μηχάνημά μου και να τις δοκιμάσω χωρίς να γεμίσω το κύριο περιβάλλον μου.

Όταν τελειώσω τη δοκιμή, μπορώ πάντα να διαγράψω την εικονική μηχανή και μετά να δημιουργήσω μια νέα όταν τη χρειαστώ. Αυτή η διαδικασία μου επιτρέπει επίσης να δοκιμάζω σε πολλές πλατφόρμες, παρόλο που έχω μόνο μια μηχανή Windows.

Τελικές λέξεις

Όπως μπορείτε να δείτε, οι εικονικές μηχανές είναι ένα οικονομικά αποδοτικό, ευέλικτο εργαλείο που μπορεί να χρησιμοποιηθεί για πολλές εφαρμογές. Δεν χρειάζεται πλέον να αγοράζουμε, να ρυθμίζουμε και να συντηρούμε ακριβό υλικό για να παρέχουμε πρόσβαση διακομιστή σε δοκιμαστές, προγραμματιστές και άλλους. Τα VM μας δίνουν την ευελιξία να δημιουργούμε εύκολα και γρήγορα τα λειτουργικά συστήματα, το υλικό και τα περιβάλλοντα που χρειαζόμαστε — ανά πάσα στιγμή.