Folosim KVM pentru a crea mașini virtuale pe server. Documentație în limba rusă pentru Ubuntu Instalarea kvm pe serverul ubuntu 16.04

Am scris anterior despre instalare Qemu-KVM V Debian. Dar, după părerea mea, informațiile s-au dovedit a fi incomplete. Plus că nu am ținut cont de unele nuanțe. Prin urmare, vă aduc în atenție un articol actualizat despre instalarea mașinii virtuale Qemu-KVM. Desigur, voi șterge articolul vechi.

Cred că ar trebui să explic ce este mașină virtuală, nu merita. Probabil știți acest lucru (din moment ce citiți acest articol). Dacă nu - . Ne vom concentra direct pe subiect. Qemu-KVM este un proiect de combinare a două dintre cele mai de vis (după părerea mea) tehnologii de virtualizare completă. Qemu este un fel de „emulator de computer” care acceptă o mare varietate de arhitecturi hardware. Poate rula aproape orice sistem de operare pentru orice dispozitiv (de exemplu, am rulat versiuni vechi Mac OS X, care este pentru PowerPC). Dezavantajul lui Qemu este încetineala din cauza lipsei de accelerare hardware. Și apoi un alt proiect vine în ajutor - KVM. Sau Kernel Virtual Machine. KVM este o tehnologie Kernel-urile Linux, ceea ce face posibilă furnizarea accelerare hardware cu virtualizare completă. Dezavantajul KVM este că acceptă doar arhitectura x86

De ce Qemu-KVM? Pentru Linux, acesta este cel mai recomandat proiect de virtualizare. Funcționează mai repede decât VirtualBoxȘi VMware Player(conform testelor mele), KVM este o tehnologie nativă pentru Linux. În plus, dacă ai un bun calculator de jocuri cu două plăci video, puteți instala în Qemu-KVM Windows, aruncați una dintre plăcile video în ea și uitați de repornirea la alt sistem de operare. Dacă doriți să jucați, lansați o mașină virtuală cu Windows și jucați. Performanța va fi de 95% din performanța Windows instalat pe hardware. Dar este pur și simplu superb, după părerea mea. Voi scrie un articol separat despre asta. Va fi interesant:)

Acum voi descrie planul nostru de acțiune. În primul rând, voi efectua instalarea folosind un exemplu Debian 8.2 GNOME pe 64 de biți, deși nu vor exista diferențe semnificative în alte medii grafice. În al doilea rând, voi descrie lucrul cu KVM numai în modul grafic (la urma urmei, nu îl vom instala pe un server). Prin urmare, fără terminale, scripturi și așa mai departe, așa cum se face de obicei în cazul virtualizării serverului. În al treilea rând, vă sfătuiesc să citiți în plus documentația pentru Qemu și KVM (voi furniza link-uri la sfârșitul articolului). Acest lucru vă va fi foarte util dacă doriți să profitați la maximum de întregul potențial al acestui pachet. Ei bine, planul nostru de acțiune este clar. Acum pașii de acțiune:

  • instalați qemu-kvm;
  • instalarea unui manager grafic și a utilităților suplimentare;
  • configurarea unui pod de rețea;
  • crearea unui depozit pentru mașini virtuale;
  • instalarea unui sistem invitat.
Mai întâi, să verificăm dacă computerul acceptă virtualizarea hardware. Pentru a face acest lucru, executați comanda în terminal:

egrep "(vmx|svm)" /proc/cpuinfo

Ieșirea comenzii trebuie să conțină oricare dintre acestea vmx, sau svm. Dacă nu sunt acolo, verificați dacă virtualizarea este activată în BIOS (căutați elemente Intel VT-i sau similar pentru AMD). Dacă nu există nimic, atunci nu ai noroc.

Instalați componentele necesare:

sudo apt install qemu-kvm bridge-utils libvirt-bin virt-manager

Adăugați-vă în grupul libvirt:

sudo adduser $USER libvirt

Acum, să configuram rețeaua. Pentru ca toate mașinile virtuale să poată accesa rețeaua și să comunice între ele, trebuie să creați o punte de rețea și carduri de rețea virtuale pentru fiecare mașină virtuală ( dispozitive de atingere). Deoarece vom instala mașini virtuale din GUI, atunci nu este nevoie să creați robinete manual. Virt Manager va face asta pentru noi de fiecare dată când începem. Trebuie doar să configuram puntea. Mai întâi, să activăm rutarea în nucleu:

sudo nano /etc/sysctl.conf

Căutăm linia net.ipv4_forward=0 și îi schimbăm valoarea în 1 . Salvăm și:

sudo sysctl -p

În continuare, voi presupune următoarele: 1) pe computerul dvs. există o placă de rețea care primește o adresă IP de la router. 2) accesezi internetul printr-un modem 3G, iar placa ta de rețea este gratuită. Această opțiune implică mai mult făcut singur, dar a fost testat de mai multe ori (eu am testat-o ​​pe una dintre mașini). Deci, deschideți fișierul interfețe:

sudo nano /etc/network/interfaces

Conținutul său implicit este:



auto lo
iface lo inet loopback

Îi schimbăm conținutul. Pentru prima varianta:

sursa /etc/network/interfaces.d/*

# Interfața de rețea loopback
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
adresa 192.168.0.2
gateway 192.168.0.1
mască de rețea 255.255.255.0
rețeaua 192.168.0.0
difuzat 192.168.0.255
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0

Pentru a doua varianta:

sursa /etc/network/interfaces.d/*

# Interfața de rețea loopback
auto lo
iface lo inet loopback

auto ppp0
iface ppp0 inet wvdial

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
adresa 192.168.0.2
gateway 192.168.0.1
mască de rețea 255.255.255.0
rețeaua 192.168.0.0
difuzat 192.168.0.255
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
up route del default br0

Notă: dacă nu aveți nevoie de o conexiune automată la Internet printr-un modem după pornirea sistemului, eliminați liniile auto ppp0 și
iface ppp0 inet wvdial . În caz contrar, asigurați-vă că atunci când sistemul pornește, modemul este introdus în portul USB.

Salva. Acum, pentru opțiunea cu un modem, trebuie să instalați programul de apelare wvdial:

sudo apt install wvdial

Editarea configurației (notă: un modem 3G este folosit ca exemplu Linie dreaptă. Puteți găsi cu ușurință exemple de configurații pentru alte modemuri pe Internet):

sudo nano /etc/wvdial.conf


Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","home.beeline.ru"
Modul prost = 1
ISDN = 0
Tip modem = Modem USB
PPPD nou = da
Telefon = *99#
Modem = /dev/ttyACM0
Nume de utilizator = linie directă
Parola = direct
Baud = 9600
Țara = Rusia
Reconectare automată=activată
DNS automat = dezactivat
Secunde inactiv = 0

Salva. Acum modemul se va porni imediat după pornirea sistemului. Line up route del default br0 șterge ruta implicită prin pod. Dacă nu faceți acest lucru, nu vă veți putea conecta la Internet, deoarece traficul va trece peste pod și nu prin modemul 3G.

Ultimul pas trebuie să-l spunem firewall, astfel încât să treacă traficul de la mașinile noastre virtuale în rețea și înapoi. Pentru a face acest lucru, puteți merge în două moduri: scrieți un script cu mai multe reguli pentru iptables, care va rula împreună cu sistemul, sau introduceți aceste reguli manual și salvați-le. Voi folosi prima varianta. Pentru al doilea va trebui să instalați pachetul iptables-persistentși pur și simplu introduceți regulile unul câte unul (folosind sudo). Asa de. creați un script (în orice editor de text). Lipiți următorul conținut acolo:

#!/bin/sh

# Definiți interfața de ieșire pentru care se va aplica înlocuirea adresei (NAT).
iptables -v -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Redirecționăm toate pachetele care au venit la modem de la retea globala(0.0.0.0/0) către rețeaua locală (192.168.0.0/24)
iptables -v -A FORWARD -i ppp0 -o br0 -s 0.0.0.0/0 -d 192.168.0.0/24 -j ACCEPT

# Redirecționați toate pachetele care vin de la retea locala(192.168.0.0/24) la global (0.0.0.0/0)
iptables -v -A FORWARD -i br0 -o ppp0 -s 192.168.0.0/24 -d 0.0.0.0/0 -j ACCEPT

Salvați-l ca poarta de acces.shși acordați drepturi de execuție (fie în proprietățile fișierului, fie în terminalul cu comanda chmod +x gateway.sh). Acum puteți fie să-l lansați manual după ce sistemul a pornit, fie să îl adăugați la pornire. Pentru a face acest lucru, mutați scriptul în ~/.config/autostart(V manager de fișiere porniți spectacolul fișiere ascunseși vei vedea directorul .configîn directorul dvs. de acasă).

Acum totul este gata pentru a instala mașina virtuală. Din meniul aplicației, lansați Virt Manager (manager de mașină virtuală):

Clic Click dreapta pe net gazdă localăși alegeți Detalii. Accesați fila Depozitare. Trebuie să specificăm directorul (sau partiția/discul de disc) pentru a stoca mașinile virtuale.

În colțul din stânga jos, faceți clic pe semnul plus ( Adăugați o piscină), indicați tipul de stocare și calea către aceasta.

Pe fila Interfețe de rețea, puteți verifica dacă totul funcționează.

Acum apăsăm Fișier - mașină virtuală nouă. Specificați calea către imaginea de disc și tipul de mașină virtuală. În continuare, indicăm cantitatea de RAM pentru aceasta și numărul de nuclee de procesor. Apoi, indicați stocarea noastră și faceți clic Volum nou. Specificați numele, lăsați tipul qcow2, și dimensiunea. Va fi virtual HDD. Dacă intenționați să instalați un sistem cu un shell grafic și o grămadă de programe, acordați mai mult spațiu (50 gigaocteți). În ultima filă, bifați caseta Schimbați setările înainte de lansare, verificăm că calitatea dispozitiv de rețea Puntea noastră este selectată, scrieți orice nume pentru mașina virtuală și faceți clic Complet. Fereastra de parametri pentru această mașină virtuală se va deschide în fața ta.





Accesați fila CPU, și puneți o bifă Copiați setările procesorului gazdă.

Lângă filă Net(următorul) și, de asemenea, indicați vitio. Pe fila Afişa te rog sa indici Condiment, și pe filă Video - QXL. De obicei, această combinație oferă performanțe maxime de redare a graficelor, dar dacă doriți, puteți experimenta. Vă rugăm să rețineți că pentru oaspeți sisteme Windows, necesar instalare separată Drivere QXL (în Windows însuși).


Acum că totul este gata, faceți clic în colțul din stânga sus Începe instalarea. Și instalați sistemul ca de obicei, cu o singură excepție: de îndată ce instalatorul începe să configureze automat rețeaua, faceți clic pe Anulare, și selectați Configurați manual rețeaua. Specificați adresa IP dorită pentru mașina virtuală (în cazul nostru 192.168.0.3 ), mască de rețea ( 255.255.255.0 ), gateway (gateway-ul va fi adresa gazdei, adică 192.168.0.2 ) și serverul DNS (aici doar specificați Google 8.8.8.8 ). Asta e tot. Nu este nevoie să faci nimic mai departe. Instalați sistemul și configurați-l. În general, asta e tot. Pașii descriși sunt o modalitate de a înlocui, de exemplu, VirtualBox cu mai multe cea mai bună alternativă. După ce ați citit documentația, veți înțelege cât de largi sunt capabilitățile Qemu-KVM. În mod deliberat, nu am descris aici parametri și metode adiționale ale consolei pentru lansarea mașinilor virtuale prin terminal, deoarece acest lucru nu este întotdeauna necesar pe o mașină de acasă. Voi scrie un articol separat despre asta, despre configurarea unui server multifuncțional de acasă (care poate acționa și ca server de mașină virtuală). Pentru cei care, dintr-un motiv oarecare, nu au înțeles ce s-a scris, sau mai sunt momente de neînțeles, le sugerez să vizioneze un videoclip în care nu voi descrie, dar le voi arăta cum să instalez și să configurez toate aceste lucruri. Dacă aveți sugestii sau completări la articol, scrieți în comentarii.

Vine un moment în viața unui administrator de sistem când trebuie să construiești o infrastructură de întreprindere de la zero sau să refaci una existentă care a fost moștenită. În acest articol, voi vorbi despre cum să implementați corect un hypervisor bazat pe Linux KVM și libvirt cu suport LVM (grup logic).

Vom parcurge toate complexitățile managementului hipervizorului, inclusiv utilitățile consolei și GUI, extinderea resurselor și migrarea mașinilor virtuale la alt hypervisor.

În primul rând, să înțelegem ce este virtualizarea. Definiția oficială este: „Virtualizarea este furnizarea unui set de resurse de calcul sau combinația lor logică, extrasă din implementarea hardware, oferind în același timp izolarea logică unele de altele a proceselor de calcul care rulează pe aceeași resursă fizică”. Adică, în termeni umani, având un server puternic, îl putem transforma în mai multe servere de dimensiuni medii, iar fiecare dintre ele își va îndeplini sarcina care i-a fost atribuită în infrastructură, fără a interfera cu altele.

Administratorii de sistem care lucrează îndeaproape cu virtualizarea în întreprindere, maeștri și virtuoși ai meseriei lor, sunt împărțiți în două tabere. Unii sunt adepți ai VMware pentru Windows de înaltă tehnologie, dar nebunește de scump. Alții sunt fani ai soluțiilor open source și gratuite bazate pe Linux VM. Am putea enumera avantajele VMware pentru o lungă perioadă de timp, dar aici ne vom concentra pe virtualizarea bazată pe Linux VM.

Tehnologii de virtualizare și cerințe hardware

Acum există două tehnologii de virtualizare populare: Intel VT și AMD-V. Intel VT (de la Intel Virtualization Technology) implementează virtualizarea în modul de adresare reală; virtualizarea I/O hardware corespunzătoare se numește VT-d. Această tehnologie este adesea denumită prin abrevierea VMX (Virtual Machine eXtension). AMD și-a creat propriile extensii de virtualizare și inițial le-a numit AMD Secure Virtual Machine (SVM). Când tehnologia a ajuns pe piață, a devenit cunoscută sub numele de AMD Virtualization (abreviat ca AMD-V).

Inainte de a intra Hardwareîn funcțiune, asigurați-vă că echipamentul acceptă una dintre aceste două tehnologii (puteți vedea specificațiile pe site-ul producătorului). Dacă suportul de virtualizare este disponibil, acesta trebuie să fie activat în BIOS înainte de implementarea hypervisorului.

Alte cerințe ale hipervizoarelor includ suport pentru RAID hardware (1, 5, 10), care crește toleranța la eroare a hipervizorului la ieșire hard disk-uri Defect. Dacă nu există suport pentru RAID hardware, atunci puteți utiliza software-ul ca ultimă soluție. Dar RAID este un must-have!

Soluția descrisă în acest articol găzduiește trei mașini virtuale și rulează cu succes Cerințe minime: Core 2 Quad Q6600 / 8 GB DDR2 PC6400 / 2 × 250 GB HDD SATA (hardware RAID 1).

Instalarea și configurarea unui hypervisor

Vă voi arăta cum să configurați un hypervisor folosind un exemplu Debian Linux 9.6.0 - X64-86. Puteți utiliza orice distribuție Linux doriți.

Când vă decideți asupra alegerii hardware-ului și acesta este în sfârșit livrat, este timpul să instalați hypervisorul. Când instalăm sistemul de operare, facem totul ca de obicei, cu excepția partiționării discului. Administratorii neexperimentați selectează adesea opțiunea „Partiționați automat tot spațiul pe disc fără a utiliza LVM”. Apoi toate datele vor fi scrise într-un singur volum, ceea ce nu este bun din mai multe motive. În primul rând, dacă hard disk-ul se defectează, îți vei pierde toate datele. În al doilea rând, schimbarea sistemului de fișiere va cauza multe probleme.

În general, pentru a evita pașii inutile și pierderea de timp, recomand să utilizați partiționarea discului cu LVM.

Manager de volum logic

Logical Volume Manager (LVM) este un subsistem disponibil pe Linux și OS/2, construit pe Device Mapper. Sarcina sa este de a reprezenta diferite zone de pe un hard disk sau zone de pe mai multe hard disk-uri ca un volum logic. LVM creează un grup de volume logic (VG - Volumes Group) din volume fizice (PV - Physical Volumes). Acesta, la rândul său, este format din volume logice (LV - Logical Volume).

Acum în toate distribuții Linux cu nucleul 2.6 și mai sus există suport pentru LVM2. Pentru a utiliza LVM2 pe un sistem de operare cu kernel 2.4, trebuie să instalați un patch.

După ce sistemul a detectat hard disk-uri, managerul de partiții hard disk va porni. Selectați Ghidat - utilizați întregul disc și configurați LVM.


Acum selectăm discul pe care va fi instalat grupul nostru de volume.



Sistemul va oferi opțiuni pentru aspectul media. Selectați „Scrieți toate fișierele pe o partiție” și continuați.




După salvarea modificărilor, vom obține un grup logic și două volume în el. Prima este partiția rădăcină, iar a doua este fișierul de swap. Aici mulți își vor pune întrebarea: de ce să nu alegeți manual marcajul și să creați singur LVM-ul?

Voi răspunde simplu: la crearea unui grup logic VG, partiția de boot nu este scrisă în VG, ci este creată ca o partiție separată cu Sistemul de fișiere ext2. Dacă acest lucru nu este luat în considerare, volumul de boot va ajunge într-un grup logic. Acest lucru vă va condamna la agonie și suferință atunci când restabiliți volumul de pornire. Acesta este motivul pentru care partiția de boot este trimisă la un volum non-LVM.



Să trecem la configurarea grupului logic pentru hypervisor. Selectați elementul „Configurație Manager volum logic”.



Sistemul vă va anunța că toate modificările vor fi scrise pe disc. Suntem de acord.



Să creăm grup nou- de exemplu, să-i spunem vg_sata.



INFO

Serverele folosesc medii SATA, SSD, SAS, SCSI, NVMe. Când creați un grup logic, este o practică bună să specificați nu numele gazdei, ci tipul de media care este utilizat în grup. Vă sfătuiesc să denumiți grupul logic astfel: vg_sata, vg_ssd, vg_nvme și așa mai departe. Acest lucru vă va ajuta să înțelegeți din ce media este construit grupul logic.




Să creăm primul nostru volum logic. Acesta va fi volumul pentru partiția rădăcină sistem de operare. Selectați elementul „Creați volum logic”.



Selectați un grup pentru noul volum logic. Avem doar unul.



Atribuim un nume volumului logic. Când atribuiți un nume, cel mai corect este să utilizați un prefix sub forma numelui unui grup logic - de exemplu, vg_sata_root, vg_ssd_root și așa mai departe.



Specificați volumul pentru noul volum logic. Vă sfătuiesc să alocați 10 GB pentru rădăcină, dar mai puțin este posibil, deoarece volumul logic poate fi întotdeauna extins.



Prin analogie cu exemplul de mai sus, creăm următoarele volume logice:

  • vg_sata_home - 20 GB pentru directoarele utilizatorilor;
  • vg_sata_opt - 10 GB pentru instalarea aplicației software;
  • vg_sata_var - 10 GB pentru datele care se schimbă frecvent, de exemplu jurnalele de sistem și alte programe;
  • vg_sata_tmp - 5 GB pentru date temporare, dacă cantitatea de date temporare este mare, se pot face mai multe. În exemplul nostru, această secțiune nu a fost creată ca fiind inutilă;
  • vg_sata_swap - egal cu cantitatea de RAM. Aceasta este o secțiune pentru schimb și o creăm ca o plasă de siguranță - în cazul în care se epuizează RAM pe hypervisor.

După crearea tuturor volumelor, încheiem munca managerului.



Acum avem mai multe volume pentru a crea partiții ale sistemului de operare. Nu este greu de ghicit că fiecare partiție are propriul volum logic.



Creăm o partiție cu același nume pentru fiecare volum logic.



Salvați și înregistrați modificările efectuate.



După salvarea modificărilor de aspect al discului, componentele de bază ale sistemului vor începe să fie instalate și apoi vi se va solicita să selectați și să instalați componente suplimentare sisteme. Dintre toate componentele, vom avea nevoie de ssh-server și de utilități standard de sistem.



După instalare, acesta va fi generat și scris pe disc încărcător de pornire GRUB. Îl instalăm pe asta disc fizic, unde este salvată partiția de pornire, adică /dev/sda .




Acum așteptăm până când încărcătorul de pornire termină de scris pe disc, iar după notificare repornim hypervisorul.





După repornirea sistemului, conectați-vă la hypervisor prin SSH. În primul rând, sub root, instalați utilitățile necesare pentru lucru.

$ sudo apt-get install -y sudo htop ecran net-tools dnsutils bind9utils sysstat telnet traceroute tcpdump wget curl gcc rsync

Configurați SSH după bunul plac. Vă sfătuiesc să faceți imediat autorizarea folosind chei. Reporniți și verificați funcționalitatea serviciului.

$ sudo nano /etc/ssh/sshd_config $ sudo systemctl restart sshd; sudo systemctl status sshd

Înainte de a instala software-ul de virtualizare, trebuie să verificați volumele fizice și starea grupului logic.

$sudo pvscan $sudo lvs

Instalăm componente și utilități de virtualizare pentru a crea o punte de rețea pe interfața hypervisor.

$ sudo apt-get update; apt-get upgrade -y $ sudo apt install qemu-kvm libvirt-bin libvirt-dev libvirt-daemon-system libvirt-clients virtinst bridge-utils

După instalare, configurăm puntea de rețea pe hypervisor. Comentați setările interfeței de rețea și setați altele noi:

$ sudo nano /etc/network/interfaces

Conținutul va fi cam așa:

Auto br0 iface br0 inet adresa statica 192.168.1.61 netmask 255.255.255.192 gateway 192.168.1.1 broadcast 192.168.0.61 dns-nameserver 127.0.0.1 enp255.255.192 gateway 192.168.1.1 0 bridge_fd 0

Adăugăm utilizatorul nostru, sub care vom lucra cu hypervisor, la grupurile libvirt și kvm (pentru RHEL grupul se numește qemu).

$ sudo gpasswd -a iryzhevtsev kvm $ sudo gpasswd -a iryzhevtsev libvirt

Acum trebuie să ne inițializam grupul logic pentru a lucra cu hypervisorul, să-l lansăm și să-l adăugăm la pornire când sistemul pornește.

$ sudo virsh pool-list $ sudo virsh pool-define-as vg_sata logical --target /dev/vg_sata $ sudo virsh pool-start vg_sata; sudo virsh pool-autostart vg_sata $ sudo virsh pool-list

INFO

Pentru operatie normala Grupurile LVM cu QEMU-KVM trebuie să activeze mai întâi grupul logic prin consola virsh.

Acum descărcați distribuția pentru instalare pe sisteme invitate și puneți-o în folderul dorit.

$ sudo wget https://mirror.yandex.ru/debian-cd/9.5.0/amd64/iso-cd/debian-9.5.0-amd64-netinst.iso $ sudo mv debian-9.5.0-amd64-netinst .iso /var/lib/libvirt/images/; ls -al /var/lib/libvirt/images/

Pentru a vă conecta la mașini virtuale prin VNC, editați fișierul /etc/libvirt/libvirtd.conf:

$ sudo grep "listen_addr = " /etc/libvirt/libvirtd.conf

Să anulăm comentariile și să schimbăm linia listen_addr = "0.0.0.0" . Salvăm fișierul, repornim hypervisor-ul și verificăm că toate serviciile au început și funcționează.

Continuarea este disponibilă numai pentru membri

Opțiunea 1. Alăturați-vă comunității „site” pentru a citi toate materialele de pe site

Calitatea de membru al comunității în perioada specificată vă va oferi acces la TOATE materialele Hacker, vă va crește reducerea cumulativă personală și vă va permite să acumulați un rating profesional Xakep Score!

Scriu această notă pentru a demonstra instalare pas cu pasși configurarea unei mașini virtuale bazate pe KVM în Linux. Am scris anterior despre virtualizare, unde am folosit minunatul .

Acum mă confrunt cu întrebarea de a închiria un server bun, cu o cantitate mare de RAM și mare hard disk. Dar nu vreau să rulez proiecte direct pe mașina gazdă, așa că le voi separa în servere virtuale mici separate care rulează containere Linux sau Docker (voi vorbi despre ele într-un alt articol).

Toate găzduirile cloud moderne funcționează pe același principiu, adică. hoster pe glandă bună ridică o grămadă servere virtuale, pe care îl numim VPS/VDS și le distribuie utilizatorilor sau automatizează acest proces (bună ziua, DigitalOcean).

KVM (mașină virtuală bazată pe kernel) este un software pentru Linux care utilizează hardware-ul procesoarelor compatibile x86 pentru a lucra cu tehnologia de virtualizare Intel VT/AMD SVM.

Instalarea KVM

Voi efectua toate mașinațiunile de a crea o mașină virtuală pe Ubuntu 16.04.1 LTS OS. Pentru a verifica dacă procesele dvs. acceptă virtualizarea hardware activată Bazat pe Intel VT/AMD SVM, executați:

Grep -E "(vmx|svm)" /proc/cpuinfo

Dacă terminalul nu este gol, atunci totul este în ordine și KVM poate fi instalat. Ubuntu acceptă oficial doar hypervisorul KVM (parte a nucleului Linux) și recomandă utilizarea bibliotecii libvirt ca instrument de gestionare, ceea ce vom face în continuare.

De asemenea, puteți verifica suportul pentru virtualizarea hardware în Ubuntu folosind comanda:

Dacă aveți succes, veți vedea ceva de genul acesta:

INFORMAȚII: /dev/kvm există Accelerația KVM poate fi utilizată

Instalați pachete pentru lucrul cu KVM:

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Dacă aveți acces la shell-ul grafic al sistemului, puteți instala managerul GUI libvirt:

Sudo apt-get install virt-manager

Utilizarea virt-manager este destul de simplă (nu mai dificilă decât VirtualBox), așa că în acest articol vom vorbi despre opțiunea de consolă pentru instalarea și configurarea unui server virtual.

Instalarea și configurarea unui server virtual

În versiunea de consolă de instalare, configurare și management de sistem, un instrument indispensabil este utilitarul virsh (un add-on la biblioteca libvirt). Ea are un numar mare de opțiuni și parametri, descriere detaliata se poate obtine astfel:

Omul virsh

sau apelați standardul „ajutor”:

Virsh ajutor

Întotdeauna respect următoarele reguli atunci când lucrez cu servere virtuale:

  1. eu pastrez imagini iso OS în directorul /var/lib/libvirt/boot
  2. Stochez imagini de mașină virtuală în directorul /var/lib/libvirt/images
  3. Asignez în mod explicit fiecărei noi mașini virtuale propria sa adresă IP statică prin serverul DHCP al hypervisorului.

Să începem să instalăm prima mașină virtuală (server pe 64 de biți Ubuntu 16.04 LTS):

Cd /var/lib/libvirt/boot sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

După descărcarea imaginii, începeți instalarea:

Sudo virt-install \ --virt-type=kvm \ --name ubuntu1604\ --ram 1024 \ --vcpus=1 \ --os-variant=ubuntu16.04 \ --hvm \ --cdrom=/var/ lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \ --network network=default,model=virtio \ --graphics vnc \ --disk path=/var/lib/libvirt/images/ubuntu1604. img,size=20,bus=virtio

Traducând toți acești parametri în „limbaj uman”, se dovedește că creăm o mașină virtuală cu Ubuntu 16.04 OS, 1024 MB RAM, 1 procesor, o placă de rețea standard (mașina virtuală va accesa Internetul ca și cum ar fi datorită NAT-ului). ), HDD de 20 GB.

Merită să acordați atenție parametrului --os-variant, îi spune hypervisorului la ce sistem de operare ar trebui să fie adaptate setările.
Listă Optiuni Disponibile Sistemul de operare poate fi obținut rulând comanda:

Osinfo-query os

Dacă un astfel de utilitar nu este pe sistemul dvs., atunci instalați:

Sudo apt-get install libosinfo-bin

După pornirea instalării, în consolă va apărea următorul mesaj:

Instalarea domeniului este încă în curs. Vă puteți reconecta la consolă pentru a finaliza procesul de instalare.

Aceasta este o situație normală, vom continua instalarea prin VNC.
Să ne uităm la ce port a fost creat pe mașina noastră virtuală (în următorul terminal, de exemplu):

Virsh dumpxml ubuntu1604... ...

Portul 5900, activat adresa locala 127.0.0.1. Pentru a vă conecta la VNC, trebuie să utilizați Port Forwarding prin ssh. Înainte de a face acest lucru, asigurați-vă că redirecționarea tcp este activată în demonul ssh. Pentru a face acest lucru, accesați setările sshd:

Cat /etc/ssh/sshd_config | grep AllowTcpForwarding

Dacă nu s-a găsit nimic sau vedeți:

AllowTcpForwarding nr

Apoi edităm configurația la

AllowTcpForwarding da

și reporniți sshd.

Configurarea redirecționării portului

Executăm comanda pe mașina locală:

Ssh -fN -l autentificare -L 127.0.0.1:5900:localhost:5900 server_ip

Aici am configurat redirecționarea portului ssh cu portul local 5900 la portul server 5900. Acum vă puteți conecta la VNC folosind orice client VNC. Prefer UltraVNC datorită simplității și comoditatii sale.

După o conexiune reușită, pe ecran va fi afișată fereastra standard de bun venit pentru pornirea instalării Ubuntu:

După finalizarea instalării și repornirea obișnuită, va apărea fereastra de autentificare. După conectare, determinăm adresa IP a mașinii virtuale nou create pentru a o face ulterior statică:

Ifconfig

Ne amintim și mergem la mașina gazdă. Scoatem adresa mac a cartelei de „rețea” a mașinii virtuale:

Virsh dumpxml ubuntu1604 | grep "adresa mac"

Să ne amintim adresa noastră mac:

Editare setari de retea hypervisor:

Sudo virsh net-edit implicit

Căutăm DHCP și adăugăm asta:

Ar trebui să arate cam așa:

Pentru ca setările să aibă efect, trebuie să reporniți serverul DHCP al hypervisorului:

Sudo virsh net-destroy default sudo virsh net-start implicit sudo service libvirt-bin restart

După aceasta, repornim mașina virtuală, acum va avea întotdeauna adresa IP atribuită - 192.168.122.131.

Există și alte modalități de a seta un IP static pentru o mașină virtuală, de exemplu, prin editarea directă a setărilor de rețea în interiorul sistemului invitat, dar aici este orice dorește inima ta. Tocmai am arătat opțiunea pe care prefer să o folosesc.

Pentru a vă conecta la terminalul mașinii virtuale, rulați:

Ssh 192.168.122.131

Mașina este gata de luptă.

Virsh: lista de comenzi

Pentru a vizualiza gazdele virtuale care rulează (toate cele disponibile pot fi obținute adăugând --all):

Sudo virsh list

Puteți reporni gazda:

Sudo virsh reporniți $VM_NAME

Opriți o mașină virtuală:

Sudo virsh stop $VM_NAME

Executați oprirea:

Sudo virsh distruge $VM_NAME

Sudo virsh start $VM_NAME

Dezactivați:

Închiderea Sudo virsh $VM_NAME

Adăugați la rulare automată:

Sudo virsh pornire automată $VM_NAME

De foarte multe ori este necesară clonarea unui sistem pentru a-l utiliza pe viitor ca cadru pentru alte sisteme de operare virtuale pentru aceasta, se folosește utilitarul virt-clone.

Virt-clone --ajutor

Clonează o mașină virtuală existentă și modifică datele sensibile la gazdă, de exemplu, adresa mac. Parolele, fișierele și alte informații specifice utilizatorului din clonă rămân aceleași. Dacă adresa IP de pe mașina virtuală clonată a fost înregistrată manual, atunci pot apărea probleme cu accesul SSH la clonă din cauza unui conflict (2 gazde cu același IP).

Pe lângă instalarea unei mașini virtuale prin VNC, este și posibil să utilizați X11Forwarding prin utilitarul virt-manager. Pe Windows, de exemplu, puteți folosi Xming și PuTTY pentru asta.

KVM (mașină virtuală bazată pe kernel sau Kernel-based Virtual) este un software de virtualizare gratuit, open-source cod sursa. Puteți crea mai multe mașini virtuale (VM), fiecare VM are propriul hardware virtual, cum ar fi disc, procesor, RAM, etc. A fost inclus în partea principală a kernel-ului Linux în versiunea de kernel 2.6.20.

Dacă sunteți în căutarea unei alternative VirtualBox, vă recomandăm cu căldură să utilizați KVM. De asemenea, folosim personal acest uimitor software de virtualizare.

Instalarea KVM Ubuntu 17.04

Pentru a instala KVM, trebuie să aveți următoarele cerințe preliminare.

  1. Activați virtualizarea în BIOS-ul sistemului.
  2. Verificați CPU-ul sistemului dacă acceptă virtualizarea. Rulați comanda de mai jos.

egrep -c '(vmx|svm)' /proc/cpuinfo

Când obțineți rezultatul de la comanda de mai sus fie 1 sau mai mult, înseamnă că procesorul acceptă virtualizarea, altfel 0 sau mai puțin înseamnă că nu acceptă.

3. Verificați arhitectura Ubuntu 16.04 LTS prin rularea unei comenzi, de ex

X86_64 este un nucleu pe 64 de biți.
I386, i486, i586 sau i686 sunt nuclee pe 32 de biți.

Sistemul de operare pe 32 de biți este limitat la maximum 2 GB de RAM pentru o anumită mașină virtuală.
Un nucleu pe 32 de biți va găzdui doar un nucleu invitat pe 32 de biți, în timp ce un nucleu pe 64 de biți poate găzdui atât O.S guest pe 32 de biți, cât și pe 64 de biți.

Urmați pașii pentru a instala KVM pe Ubuntu

În această secțiune, vom nota pașii pentru instalarea KVM. În postarea noastră anterioară am învățat. Poate că acest lucru va fi interesant și pentru tine.

1. Instalați KVM Ubuntu 17.04 și alte pachete dependente

Pe Ubuntu 17.04 LTS puteți folosi comanda apt sau apt-get ambele. Nu vor exista diferențe între pachetele instalate folosind comanda apt sau apt-get, așa că ești bun aici.

actualizare sudo apt

sudo apt install qemu - kvm libvirt - bridge bin - utils

2. Aflați despre noi utilizatori și grup pentru software-ul KVM

După instalarea pachetelor, vor apărea unele completări în numărul de utilizatori și grupuri.

(A) Sunt creați doi utilizatori.
- libvirt-qemu
- libvirt-dnsmasq

sharad@linuxworld :~ $ tail - 2 /etc/passwd

libvirt - qemu : x : 64055 : 129 : Libvirt Qemu ,:/ var / lib / libvirt : /bin/ false

libvirt - dnsmasq : x : 121 : 130 : Libvirt Dnsmasq ,:/ var / lib / libvirt / dnsmasq : /bin/ false

sharad@linuxworld :~ $

B) vor fi create două grupuri.

-kvm
-libvirtd

sharad@linuxworld :~ $ tail - 2 /etc/group

kvm : x : 129 :

libvirtd:x:130:sharad

sharad@linuxworld :~ $

Poate ați observat că așa-numita „charade” folosită este un membru al grupului „libvirtd”. Aceasta înseamnă că acest utilizator poate folosi KVM.

3. Verificați instalarea KVM

Este destul de simplu să vă verificați instalarea KVM. Rulați comanda -

virsh - cu qemu : ///listă de sistem

Prima dată arată o eroare.

eroare: nu s-a putut conecta la hypervisor

eroare: Nu s-a putut conecta la priza „/var/run/libvirt/libvirt-sock”:Acces refuzat

sharad@linuxworld :~ $

Pentru a rezolva această problemă, trebuie să vă deconectați și să vă conectați din nou pe desktop. Specifică faptul că utilizatorul curent trebuie să se conecteze din nou.

Odată autentificat, executați din nou comanda. De data aceasta ar trebui să obțineți rezultatul ca mai jos. Este gol deoarece mașina virtuală nu este creată.

sharad@linuxworld :~ $ virsh - cu qemu : ///listă de sistem

ID Nume Stat

—————————————————-

sharad@linuxworld :~ $

4. Instalați Virtual Machine Manager

Aici folosim Virtual Machine Manager, care este o aplicație desktop pentru administrare mașini virtuale KVM prin libvirt.

Rulați această comandă pentru a instala Virtual Machine Manager.

sudo apt install virt - manager

Puteți deschide Virtual Machine Manager introducându-l în Dash Home Faceți clic pe pictogramă, se va deschide aplicația.

Pentru a deschide Virtual Machine Manager prin linia de comandă, introduceți −

virt - manager

Anterior, când am instalat KVM pe desktop Ubuntu 14.04 LTS, am întâmpinat o problemă la crearea primei mașini virtuale, dar am rezolvat-o foarte ușor. Nu am găsit o astfel de problemă în Ubuntu 16.04 LTS Desktop.

Dacă aveți întrebări pe tema „Instalarea KVM Ubuntu 17.04” - scrieți-ne în formularul de comentarii. Vă vom ajuta să vă înțelegeți problema mult mai repede.

Dacă găsiți o eroare, evidențiați o bucată de text și faceți clic Ctrl+Enter.

În Ubuntu, este recomandat să utilizați hypervisorul KVM (managerul mașinii virtuale) și biblioteca libvirt ca instrumente de management pentru acesta. Libvirt include un set de API-uri software și aplicații de utilizator pentru gestionarea mașinilor virtuale (VM) virt-manager (interfață grafică, GUI) sau virsh ( Linie de comanda,CLI). Ca manageri alternativi, puteți utiliza convirt (GUI) sau convirt2 (interfață WEB).

În prezent, numai hypervisorul KVM este acceptat oficial pe Ubuntu. Acest hypervisor face parte din codul nucleului de operare sisteme Linux. Spre deosebire de Xen, KVM nu acceptă paravirtualizarea, adică pentru a o utiliza, procesorul tău trebuie să accepte tehnologii VT. Puteți verifica dacă procesorul dvs. acceptă această tehnologie rulând comanda în terminal:

Dacă primiți următorul mesaj ca rezultat:

INFORMAȚII: /dev/kvm există Accelerația KVM poate fi utilizată

Aceasta înseamnă că KVM va funcționa fără probleme.

Dacă ați primit următorul mesaj la ieșire:

CPU nu acceptă extensii KVM. Accelerarea KVM NU poate fi utilizată

atunci puteți folosi în continuare mașina virtuală, dar va fi mult mai lent.

    Instalați sisteme pe 64 de biți ca invitați

    Alocați mai mult de 2 GB de RAM sistemelor invitate

Instalare

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Aceasta este o instalare pe un server fără X, adică nu include o interfață grafică. Îl poți instala cu comanda

Sudo apt-get install virt-manager

După aceasta, elementul „Virtual Machine Manager” va apărea în meniu și, cu un grad ridicat de probabilitate, totul va funcționa. Dacă mai apar probleme, va trebui să citiți instrucțiunile din wiki-ul în limba engleză.

Crearea unui sistem invitat

Procedura de creare a unui sistem invitat folosind GUI este destul de simplă.

Dar modul text poate fi descris.

qcow2

Când creați un sistem folosind o interfață grafică ca hard disk se propune fie selectarea unui fișier imagine existent sau blocarea dispozitivului, fie crearea unui fișier nou cu date brute (RAW). Cu toate acestea, acesta este departe de singurul format de fișier disponibil. Dintre toate tipurile de discuri enumerate în man qemu-img, cel mai flexibil și modern este qcow2. Acceptă instantanee, criptare și compresie. Trebuie creat înainte de a crea un nou invitat.

Qemu-img create -o preallocation=metadata -f qcow2 qcow2.img 20G

Potrivit aceluiași om qemu-img, prealocarea metadatelor (-o preallocation=metadata) face discul inițial puțin mai mare, dar oferă performanță mai bunăîn acele momente când imaginea trebuie să crească. De fapt, în acest caz, această opțiune vă permite să evitați o eroare neplăcută. Imaginea creată inițial ocupă mai puțin de un megaoctet de spațiu și crește la dimensiunea specificată, după cum este necesar. Sistemul oaspete ar trebui să vadă imediat această dimensiune finală specificată, totuși, în timpul fazei de instalare, poate vedea dimensiunea reală a fișierului. Desigur, va refuza instalarea pe un hard disk de 200 KB. Bug-ul nu este specific Ubuntu, cel puțin apare în RHEL.

Pe lângă tipul de imagine, puteți alege ulterior metoda de conectare - IDE, SCSI sau Virtio Disk. Performanța subsistemului de disc va depinde de această alegere. Nu există un răspuns corect cert, pe care trebuie să îl alegeți în funcție de sarcina care va fi atribuită sistemului invitat. Dacă sistemul invitat este creat „pentru a privi”, atunci orice metodă va funcționa. În general, I/O este de obicei blocajul unei mașini virtuale, așa că atunci când se creează un sistem foarte încărcat, această problemă trebuie tratată cât mai responsabil posibil.