Crmgo Blog

KVM na CentOS

KVM na CentOS

Инсталирамо KVM. Заправо, дошли смо до инсталације виртуализације KVM, QEMU емулятора и пратећих алата. Инсталирамо неопходне пакете: # yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install # systemctl enable libvirtd && systemctl start libvirtd Слике виртуелних машина ћемо чувати у…

KVM na CentOS

Instalacija KVM-a

Zapravo, pristupili smo instalaciji KVM virtualizacije, QEMU emulatora i pratećih alata.

Instaliramo potrebne pakete:

# yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install # systemctl enable libvirtd && systemctl start libvirtd

Slike virtualnih mašina čuvaćemo u novom direktorijumu /vms

# mkdir /vms

Dodajemo odgovarajući kontekst za naš direktorijum kako SELinux ne bi bio nezadovoljan:

# semanage fcontext --add -t virt_image_t '/vms(/.*)?'

Proveravamo:

# semanage fcontext -l | grep virt_image_t
/var/lib/imagefactory/images(/.*)?                 all files          system_u:object_r:virt_image_t:s0
/var/lib/libvirt/images(/.*)?                      all files          system_u:object_r:virt_image_t:s0
/vms(/.*)?                                         all files          system_u:object_r:virt_image_t:s0

Primenjujemo promene:

# restorecon -R -v /vms

i proveravamo da li su se primenile:

# ls -aZ /vms drwxr-xr-x. root root unconfined_u:object_r:virt_image_t:s0 . dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..

U redu, preuzimamo ISO sliku sa mreže za operativni sistem koji će biti instaliran na virtuelnoj mašini, na primer, isti CentOS 7 minimal za budući web server? Ili Tails? Ko zna :)

Kreiramo prvu virtuelnu mašinu

Nakon gore navedenih radnji, na hostu je kreiran mrežni interfejs virbr0 sa IP adresom 192.168.122.1 za virtuelne mašine:

# ip addr

Takođe je kreirana virtuelna mreža default:

# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

Mrežu možemo uređivati:

# virsh net-edit default

<network>
  <name>default</name>
  <uuid>745f121b-3c89-1281-a19a-aa62808c4241</uuid>
  <forward mode="nat">
  <bridge delay="0" name="virbr0" stp="on">
  <mac address="16:18:00:21:8c:15">
  <ip address="192.168.122.1" netmask="255.255.255.0">
    <dhcp>
      <range end="192.168.122.254" start="192.168.122.2">
    </range></dhcp>
  </ip>
</mac></bridge></forward></network>

Za sada nećemo ništa menjati i kreiraćemo virtuelnu mašinu povezanu na mrežu default:

# virt-install 
--network network=default
--name vm1 
--ram=2048 
--vcpus=1 
--disk path=/vms/vm1.img,size=30,format=qcow2 
--graphics vnc,password=vm1password 
--cdrom /vms-iso/CentOS-7-x86_64-Minimal-1503-01.iso 
--boot cdrom,hd,menu=on 

Opis opcija:

--graphics vnc,password=vm1password
Ovde navodimo lozinku i mogućnost povezivanja na terminal virtuelne mašine putem VNC-a. Lozinka se može pojaviti u logovima, pa ovde ne pišite ništa važno.

--network network=default - povezujemo našu virtuelnu mašinu na virtuelnu mrežu pod imenom default (sa kojom smo već upoznati).
Može biti --network bridge:br0, na primer, ako bismo kreirali bridge pod imenom br0 za varijantu broj 2.

Gornja komanda može biti uneta odmah, jednim redom, kako vam je pogodnije:

virt-install --network network=default --name vm1 --ram=2048 --vcpus=1 --disk path=/vms/vm1.img,size=30,format=qcow2 --graphics vnc,password=vm1password --cdrom /vms-iso/CentOS-7-x86_64-Minimal-1503-01.iso --boot cdrom,hd,menu=on

Nakon izvršavanja komande možete videti poruku:

WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package. WARNING No console to launch for the guest, defaulting to --wait -1

Nam nam nije potrebno, jer naš host virtuelnih mašina ipak nema prozorski menadžer. Bar kod mene tako.

Starting install...
Allocating 'vm1.img'
                        |  30 GB  00:00:00
Creating domain...
                        |  0 B  00:00:00
Domain installation still in progress. Waiting for installation to complete.

Strpljivo čekamo. Proces će potrajati određeno vreme.

Nakon završetka komande pogledaćemo listu virtuelnih mašina:

# virsh list
 Id    Name                           State
----------------------------------------------------
 2     vm1                            running

Virtuelne mašine se mogu pokretati (virsh start vm1), pauzirati (virsh suspend vm1), nastaviti rad (virsh resume vm1), isključiti (virsh shutdown vm1) i mnogo toga drugog sa njima raditi. Dakle, mašina vm1 je pokrenuta (može se proveriti komandom virsh domstate vm1). Kako se povezati na nju?

Povezivanje na virtuelnu mašinu putem VNC-a

Na prethodnom koraku ste kreirali virtuelnu mašinu, naveli joj CD-ROM sa operativnim sistemom, a šta dalje? Kako planirate da instalirate i podesite OS? Da, postoje opcije. Možete pripremiti infrastrukturu i učitavati gotove slike itd. Ali mi se učimo i nemamo ništa osim skora preuzetog fajla sa interneta, diskete iso. Zapravo, nije teško. Na prethodnom koraku naveli smo parametar "--graphics vnc,password=vm1password". To znači da možemo da se povežemo na terminal (čitaj - ekran) virtuelne mašine putem VNC-a, na primer, programom TightVNC, navedući IP adresu hosta virtuelnih mašina i port za povezivanje.

Našoj virtuelnoj mašini je dodeljen VNC port, povezivanjem na koji ćemo videti "ekran" virtuelne mašine. Da saznate koji je port dodeljen konkretnoj vm1, možete koristiti komandu:

# virsh vncdisplay vm1 127.0.0.1:0

To znači da je VNC port 5900+0=5900. Da je rezultat bio "127.0.0.1:1", VNC port bi bio 5901. I tako dalje.

Povezivanje na port 5900 treba da se izvrši na hostu virtuelnih mašina. Na njemu je otvoren taj port, a ne na virtuelnoj mašini vm1.

Podrazumevano, host virtuelnih mašina (kod nas je to CentOS 7 minimal) ne bi trebalo da dozvoli povezivanje na bilo koji port osim ssh (22/tcp). Ne preporučujem vam da otvarate pristup VNC portovima spolja. To nije bezbedno. Da biste dobili pristup ekranu virtuelne mašine sa Windows radne stanice, na kojoj ja sve podesim, napravio sam tuneliranje porta u Putty: 5900 -> 127.0.0.1:5900.

Prosleđivanje portova u Putty za VNC 5900

Nakon uspešnog SSH prijave, možete pokrenuti TightVNC i navesti port 127.0.0.1::5900 (obratite pažnju na dvostruko dvotačku).

Ako nakon restartovanja mašine bude potrebno ponovo povezati iso sliku, to možete uraditi komandom:

# virsh attach-disk vm1 /vms-iso/CentOS-7-x86_64-Minimal-1503-01.iso hdb --type cdrom --mode readonly

gde je hdb ime blokovskog uređaja CDROM-a. To ime možete saznati pregledanjem konfiguracije virtuelne mašine (virsh edit vm1).

Upravljanje virtuelnim mašinama sa hosta može se vršiti konzolnim alatom virsh. Sa nekim komandama ste se već upoznali. Ukucajte u konzoli:

# virsh help

i videćete koliko toga sve možete uraditi.

Uključivanje/isključivanje virtuelnih mašina

Ako kreirate virtuelnu mašinu i pokušate da je isključite, uprkos izveštaju o izvršenju, mašina se možda neće isključiti:

# virsh domstate vm1
running

# virsh shutdown vm1
Domain vm1 is being shutdown

# virsh domstate vm1
running

Stvar je u podršci ACPI-ja sa strane virtuelne mašine. Ne u svim slučajevima će virtuelna mašina obraditi signal za isključivanje ili restartovanje (virsh shutdown/restart vm1). U ovoj situaciji moguće su sledeće opcije:

Isključivanje napajanja:

# virsh destroy vm1
Domain vm1 destroyed

Dobro znate do čega to može dovesti. Iako na početnom koraku, dok OS nije instaliran, pojavljivanje grešaka

Pauziranje rada virtuelne mašine:

virsh suspend vm1

Nije uvek potrebno isključiti ili restartovati mašinu spolja. Za održavanje može biti dovoljno pauziranje. Nije uvek, ali jeste.

Uključivanje podrške ACPI-ja u virtuelnoj mašini.

Postoje različiti recepti, na primer ovako (izvršiti u virtuelnoj mašini, a ne na hostu):

yum install acpid chkconfig acpid on service acpid start

Automatsko pokretanje virtuelnih mašina

Da bi se virtuelna mašina vm1 automatski pokretala prilikom ponovnog pokretanja hosta:

# virsh autostart vm1 Domain vm1 marked as autostarted

Isključiti automatsko pokretanje za vm1:

# virsh autostart vm1 --disable Domain vm1 unmarked as autostarted

Kontrola mrežne aktivnosti KVM virtuelne mašine

Može biti korisno procenjivati mrežnu aktivnost virtuelne mašine - na primer, koliko je saobraćaja potrošila. Takođe, ovo može pomoći pri otklanjanju mrežnih problema ili pronalaženju curenja saobraćaja. Na primer:

# virsh domifstat vm1 vnet0
vnet0 rx_bytes 3063962
vnet0 rx_packets 3412
vnet0 rx_errs 0
vnet0 rx_drop 0
vnet0 tx_bytes 591996
vnet0 tx_packets 1731
vnet0 tx_errs 0
vnet0 tx_drop 0

Ovde je sve jasno, osim toga gde uzeti naziv adaptera vnet0. Možete u dump-u konfiguracije virtuelne mašine (virsh dumpxml vm1) pronaći sekciju network i u njoj parametar dev:

<interface type='network'>
    <mac address='52:54:00:98:6c:e6'/>
    <source network='default' bridge='virbr0'/>
    <target dev='vnet0'/>
    <model type='rtl8139'/>
    <alias name='net0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

Povezivanje i odspajanje cdrom uređaja

Povezivanje iso-slike u vm3 kao cdrom:

# virsh attach-disk vm3 /data/vms-iso/CentOS-7-x86_64-Minimal-1511.iso hda --type cdrom --mode readonly Disk attached successfully

Ovde treba biti pažljiv, jer se nakon puta do iso-fajla na hostu navodi ime cdrom uređaja virtuelne mašine vm3. Ako niste sigurni koje ime uređaja treba navesti (hda, hdb ili drugo), proverite konfiguraciju virtuelne mašine:

# virsh edit vm3

Odspojiti iso-sliku (ne uklanjati uređaj iz gostujućeg sistema, već samo „izvaditi cd-disk iz pogona“):

# virsh attach-disk vm5 "" hda --type cdrom --mode readonly

Napomena: tekst može biti uz pomoć AI uz ljudsku proveru. Odgovoran: Dmytro Lomaka, Kaltenkirchen.

Kategorije: KVM