Οι εικονικές μηχανές προσπαθούν να ξεγελάσουν τα λειτουργικά τους συστήματα ώστε αυτά να νομίζουν ότι λειτουργούν με φυσικό υλικό. Δείτε πως μπορείτε να καταλάβετε από τη γραμμή εντολών του linux εάν ο υπολογιστής είναι φυσικός ή virtul.
Table of Contents
Virtual Machines και Hypervisors
Ένας παραδοσιακός υπολογιστής είναι ένα φυσικό αντικείμενο. Είναι μια συλλογή διαφορετικών εξαρτημάτων υλικού που είναι συνδεδεμένα και βιδωμένα μεταξύ τους, ώστε να μπορείτε να φορτώσετε ένα λειτουργικό σύστημα, να εγκαταστήσετε εφαρμογές, να τις εκκινήσετε και να τις χρησιμοποιήσετε.
Το υλικό είναι ακριβό. Ο περιορισμός του σε ένα λειτουργικό σύστημα ανά φυσικό υπολογιστή σημαίνει ότι το κόστος λειτουργίας πολλών λειτουργικών συστημάτων γίνεται απαγορευτικό. Η καλύτερη λύση θα ήταν να επιτραπεί σε έναν μεμονωμένο φυσικό υπολογιστή να εκτελεί μια επιλογή λειτουργικών συστημάτων ταυτόχρονα, με το καθένα να πιστεύει ότι λειτουργεί στο δικό του, μοναδικό υλικό.
Ένας hypervisor το κάνει αυτό δυνατό. Ένας hypervisor (ονομάζεται επίσης και virtual machine manager ή virtual machine monitor) είναι λογισμικό που σας επιτρέπει να δημιουργείτε εικονικές μηχανές. Αυτοί συμπεριφέρονται σαν να ήταν μεμονωμένοι, φυσικοί υπολογιστές, παρόλο που εκτελούνται στον ίδιο φυσικό κεντρικό υπολογιστή, μοιράζοντας τον χώρο του σκληρού δίσκου, τη μνήμη και τους πυρήνες της CPU.
Φυσικά, ο κεντρικός υπολογιστής πρέπει να είναι αρκετά ισχυρός για να ανταπεξέλθει στις απαιτήσεις του συνόλου των εικονικών μηχανών, αλλά, δεδομένης της επάρκειας σε μνήμη RAM και της μεγάλης ισχύος επεξεργασίας στον κεντρικό υπολογιστή, οι εικονικές μηχανές μπορούν να λειτουργούν με ταχύτητες σχεδόν σαν να ήταν σε ξεχωριστά μηχανήματα.
Από την κυκλοφορία του πυρήνα 2.6.20 το 2007, το Linux είχε άμεση υποστήριξη Virtual Machine που βασίζεται σε Kernel. Το Linux έχει διαθέσιμους αρκετούς hypervisors, όπως τα VirtualBox, GNOME Boxes και QEMU-KVM . Χρησιμοποιούν την εγγενή δυνατότητα KVM του Linux, βασιζόμενοι στη λειτουργικότητα του εγγενούς πυρήνα, και προσθέτοντας επιπλέον δυνατότητες, όπως η δυνατότητα λήψης στιγμιότυπου μιας εικονικής μηχανής.
Οι εικονικές μηχανές αποφέρουν εξοικονόμηση κόστους, αποδοτικότητα, απλοποιημένες λύσεις και (με τη σωστή παροχή) οφέλη ασφαλείας. Διευκολύνουν επίσης την επεκτασιμότητα. Οι νέοι διακομιστές μπορούν να δημιουργηθούν αυτόματα καθώς η ζήτηση για μια υπηρεσία αυξάνεται και να τερματίζονται όταν η ζήτηση πέφτει. Αυτό τα καθιστά εξαιρετικά δημοφιλή τόσο στο cloud όσο και στην εσωτερική υποδομή ενός data center.
Αν διαχειρίζεστε εξ αποστάσεως έναν server Linux θα πρέπει να γνωρίζετε εάν πρόκειται για εικονική μηχανή ή για φυσικό κουτί. Αλλά και άλλες πληροφορίες, όπως σε ποιον τύπο πλατφόρμας εκτελείται. Ακολουθούν διάφοροι τρόποι με τους οποίους μπορείτε να εντοπίσετε εάν ο υπολογιστής στον οποίο εργάζεστε είναι φυσικός ή εικονικός.
Η εντολή dmidecode
Η εντολή dmidecode υποστηρίζει μεγάλο αριθμό επιλογών και διακοπτών. Ανακρίνει τους πίνακες του Desktop Management Interface (DMI) και εκτυπώνει τις πληροφορίες στο παράθυρο του ssh τερματικού.
Μπορείτε να την χρησιμοποιήσετε με τον διακόπτη -s και έτσι να ζητήσετε το όνομα του προϊόντος του συστήματος. Σημειώστε ότι πρέπει να χρησιμοποιήσετε sudo.
Η εντολή διαμορφώνετε ως εξής: sudo dmidecode -s system-product-name
Αυτή η εντολή σε ένα VirtualBox VM που εκτελεί το Ubuntu 22.04 θα δώσει:
Η πλατφόρμα προσδιορίζεται σωστά ως η VirtualBox.
Ενώ σε ένα QEMU-KVM VM που εκτελεί το Fedora 35, θα δείτε.
Αν και αναφέρεται ως τυπικός υπολογιστής, είναι ένας τυπικός εικονικός υπολογιστής QEMU, τύπου Q35. Έτσι η πλατφόρμα αναγνωρίζεται σωστά ως εικονική μηχανή.
Εάν εκτελέσετε την ίδια εντολή σε έναν φυσικό υπολογιστή, θα λάβετε κάποιες πληροφορίες για τον κατασκευαστή.
Αυτός ο υπολογιστής είναι μια προσαρμοσμένη κατασκευή που βασίζεται σε μητρική πλακέτα Micro-Star International Company Limited, με κωδικό προϊόντος MS-7B86.
Η εντολή lshw
Η εντολή lshw παραθέτει τις λεπτομέρειες για ένα ευρύ φάσμα υλικού του υπολογιστή. Μπορούμε να επιλέξουμε για ποια κατηγορία υλικού θέλουμε να κάνει αναφορά η lshw.
Εδώ θα χρησιμοποιήσουμε την επιλογή -class με τον τροποποιητή system. Η χρήση sudo σε αυτή την εντολή διασφαλίζει ότι βλέπετε όλες τις λεπτομέρειες.
Η εντολή διαμορφώνετε ως εξής: sudo lshw -class system
Αν την εκτελέσετε σε ένα VirtualBox που τρέχει Ubuntu.
- Το πεδίο “description” (περιγραφή) έχει μια γενική καταχώριση “υπολογιστής”.
- Το πεδίο “product” (προϊόν) λέει ότι πρόκειται για μια εικονική μηχανή που τρέχει στο VirtualBox.
- Το πεδίο “vendor” (πωλητής) περιέχει το όνομα της γερμανικής εταιρείας που δημιούργησε το VirtualBox, Innotek GmbH. Η Innotek εξαγοράστηκε από την Oracle Corporation το 2010 ως μέρος της εξαγοράς της Sun Microsystems, Inc.
Αντίστοιχα στο Fedora που εκτελείται σε GNOME Boxes θα λάβετε
- Και πάλι, το πεδίο “description” έχει μια γενική καταχώριση “υπολογιστής”.
- Το πεδίο “product” δίνει τις ίδιες τυπικές πληροφορίες υπολογιστή QEMU που είδαμε με την εντολή dmidecode.
- Το πεδίο “vendor” περιέχει το “QEMU”, το οποίο δηλώνει ξεκάθαρα ότι πρόκειται για εικονική μηχανή.
Αυτό είναι το αποτέλεσμα της εκτέλεσης της ίδιας εντολής στον φυσικό μας υπολογιστή.
Μπορείτε να δείτε ότι πρόκειται για φυσικό υπολογιστή, με μητρική πλακέτα Micro-Star .
- Το υλικό προσδιορίζεται ως επιτραπέζιος υπολογιστής.
- Το πεδίο “product” δίνει τον τύπο μητρικής πλακέτας, MS-7B86.
- Το πεδίο “vendor” περιέχει το όνομα του κατασκευαστή.
Η εντολή hostnamectl
Αυτή η εντολή έχει το πλεονέκτημα ότι δεν χρειάζεται να έχετε sudo δικαιώματα για να την εκτελέσετε. Ωστόσο, είναι διαθέσιμη μόνο σε διανομές με ενεργοποιημένο το systemd. Η πλειοψηφία των σύγχρονων διανομών χρησιμοποιούν systemd .
Η εντολή διαμορφώνετε ως εξής: hostnamectl
Αυτή είναι η απάντηση από την εκτέλεση της εντολής στο VirtualBox VM με Ubuntu.
- Στο πεδίο “icon-name” έχει προσαρτηθεί το “-vm”.
- Το πεδίο “Chassis” (Πλαίσιο) περιέχει το “vm”.
- Το πεδίο “Virtualization” περιέχει το “oracle”.
- Το πεδίο “Hardware Vendor” (Πωλητής υλικού) περιέχει “innotek GmbH”.
- Το πεδίο “Hardware Model” (Μοντέλο υλικού) περιέχει “VirtualBox”.
Τα αποτελέσματα από το VM GNOME Boxes που τρέχει Feroda είναι παρόμοια.
- Στο πεδίο “icon-name” εμφανίζεται το “-vm”.
- Στο πεδίο “Chassis” υπάρχει το “vm”.
- Το πεδίο “Virtualization” περιέχει το “kvm”.
- Στο πεδίο “Hardware Vendor” υπάρχει το “QEMU”
- Στο πεδίο “Hardware Model” εμφανίζεται το “Standard PC (Q35 + ICH9, 2009).”
Αν χρησιμοποιήσετε την εντολή hostnamectl σε ένα φυσικό υπολογιστή, θα δείτε ότι στα αποτελέσματα δεν εμφανίζεται η γραμμή “Virtualization”.
Αν δεν δείτε το πεδίο “Virtualization”, τότε έχετε μπροστά σας ένα φυσικό υπολογιστή.
Η εντολή systemd-detect-virt
Αν θέλετε να λάβετε όσο το δυνατόν πιο σύντομη απάντηση, η εντολή systemd-detect-virt είναι πιθανότατα αυτό που ψάχνετε. Και πάλι αυτή απαιτεί μια διανομή εξοπλισμένη με systemd, αλλά δεν απαιτεί sudo προνόμια.
Η εντολή διαμορφώνετε ως εξής: systemd-detect-virt
Αυτό είναι το αποτέλεσμα της εκτέλεσης της εντολής στο VirtualBox με Ubuntu.
Αντίστοιχα στο GNOME boxes που τρέχει Feroda
Η εκτέλεση της εντολής systemd-detect-virt στο φυσικό μηχάνημα έχει ως αποτέλεσμα να εκτυπωθεί “nome” (κανένα) στο τερματικό.
Στην εντολή αυτή θα μπορούσατε να προσθέσετε περισσότερους διακόπτες για μεγαλύτερη αναζήτηση. Μπορείτε να δείτε την πλήρη λίστα της εντολής χρησιμοποιώντας την επιλογή –list.
Και για να είναι πιο εύκολο να τα δείτε την λίστα που σας παρέχεται βάλτε στην εντολή και το column.
systemd-detect-virt --list | column
Η παραπάνω εντολή θα σας επιστρέψει:
Πάρτε το κόκκινο χάπι
Αυτές οι τεχνικές σας ενημερώνουν πότε μία διανομή linux εκτελείται σε φυσικό υλικό και πότε βρίσκεται μέσα σε μια εικονική μηχανή.
Όπως ο Νίο στο Matrix, θα γνωρίζετε τι είναι πραγματικό και τι όχι.