VPS Qemu: Skirtumas tarp puslapio versijų

Iš Žinynas.
Jump to navigation Jump to search
S
(Jokio skirtumo)

10:05, 19 balandžio 2019 versija

Šiame straipsnyje aprašoma kaip įdiegti bei valdyti Qemu paremta Linux hipervisoriaus virtualizacija Debian GNU/Linux distribucijoje. Informacija taikytina ir kitoms panašioms distribucijoms bei sistemoms.

Diegimas

apt-get install qemu-kvm libvirt-bin virtinst

Tinklo konfigūravimas

Plačiau apie tinklus

Bridge tipo fizinis tinklas (Išoriniai ip)

apt install resolvconf

Standartinis /etc/network/interfaces maždaug atrodo taip:

allow-hotplug eth0
iface eth0 inet dhcp

Užkomentuodami pastarąsias eilutes, pridedame teksto:

iface eth0 manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0

Išsaugome failą, tuomet atsidarome /etc/sysctl.conf ir įrašome šias eilutes (išjungiame nenaudojamą ipv6 bridžinimą):

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Išsaugome ir paleidžiame:

/sbin/sysctl -p /etc/sysctl.conf

Tuomet reikia pridėti šias eilutes į /etc/rc.local (būtų gerai rankomis dar prieš exit eilutę, jeigu pastaroji yra):

echo "iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu" >> /etc/rc.local

Galų gale kuriant VPS galima bus panaudoti parametrą, pvz.: --bridge=br0,model=rtl8139,mac=54:52:01:94:92:96 Arba, tinklo konfigūracijos XML apačioje.

 
  <interface type='bridge'>
      <mac address='52:54:00:00:99:c5'/>
      <source bridge='br0'/>
    </interface>

Dabar mums reikia kreiptis į ISP arba Hostingo provaiderį, kad kiekvienam papildomam ip adresui priskirtų po atskirą MAC adresą, kai gausime sąrašą galime konfigūruoti virtualių mašinų ip adresus, pvz.:

iface eth0 inet static
 address PAP_IL_DOM_AS_IP
 netmask 255.255.255.0
 gateway GATEWAY_KAIP_IR_HYPERVISORIUJE
 dns-nameservers 1.1.1.1 8.8.8.8

Perkrauname ir žiūrime koks bus rezultatas, visada galima pasitelkti tcpdump ir stebėti vnet0 kaip eina paketai.


NAT'intas bridžintas virtualus tinklas

Sukuriam failą vps_tinklas.xml kurio viduje turim turėti:

<network>
       <name>tinklas</name>
       <bridge name="virbr10" />
       <forward mode="nat"/>
       <ip address="10.0.0.1" netmask="255.255.255.0">
         <dhcp>
           <range start="10.0.0.2" end="10.0.0.254" />
         </dhcp>
       </ip>
</network>

Sukuriam šį tinklą per virsh

# net-create --file /pathas/iki/failo/vps_tinklas.xml
# net-start tinklas
# net-autostart tinklas

Priskiriame tinklą kokiam nors vps'ui, atsidarę jo konfigą:

 <interface type='network'>
 <mac address='52:54:00:b9:cc:31'/>
 <source network='tinklas'/>
 <model type='rtl8139'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
 </interface>

Tinklas pagal nutylėjimą

# virsh net-start default
# virsh net-autostart default

Paleidimas

/etc/init.d/libvirtd start

Virtualių VPS mašinų valdymas

Įeiname į virsh VPS valdymo komandinę konsolę parašę "virsh". Arba šias komandas vykdome iš shell'o darašius priekyje virsh, pvz.: virsh destroy vps_pavadinimas.

Sukūrimas

create_vps skriptas su komentarais, kuriuos būtinai perskaitykite ir pagal tai keiskite jo konfigūraciją.

#!/bin/sh
truncate --size=50192M /srv/vps/windows.img # Virtualus 50GB diskas (truncate reiškia, kad jis bus sukurtas ne pilnos 50GB talpos, o pagal VPS užimtą vietą)
virt-install --force -r 1596 -n Win10 \ # nurodome 1596MB Ram ir pavadinimą Win10
 --os-type=windows \ # Nurodome OS tipą
 -f /srv/vps/windows.img \ # Nurodome HDD atvaizdą
 --network network:tinklas \  # Nurodome tinko tipą (APIE TINKLO KONFIGŪRACIJĄ APRAŠYTA VIRŠUJE)
 --cdrom /srv/vps/win10.iso \ # Nurodome ISO failą iš kurio diegsime operacijų sistemą
 --graphics vnc,password=slaptazodis,listen=0.0.0.0,port=5913 # Nurodome VNC serverio portą bei slaptažodį
echo "VPS Sukurtas"

Galimos problemos su win7/8/10 diegimu senesnėse libvirt versijose todėl reiktų keletos pakeitimų skripte:

virt-install --force -r 1596 --vcpus=2 -n Win7 \
--os-type=windows --noapic --noreboot \
-f /srv/vps/windows.img \
--network network:tinklas \
--cdrom /srv/vps/windows7.iso \
--graphics vnc,password=slaptazodis,listen=0.0.0.0,port=5913

Valdymas

# virsh list
# virsh start vps_pavadinimas
# vncdisplay vps_pavadinimas # parodo kaip sukonfigūruotas VNC serveris
# nodeinfo # informacija apie VPS
# list # parodo visus veikiančius VPS
# setmem <vps_pavadinimas> 16G --config # suteikti daugiau darbinės atminties (tik išjungtam hostui)

CPU priskyrimai

Konfiguracijos koregavimas

Jeigu norint pakeisti viena ar kita parametra, pvz.: prideti cpu branduoliu arba prideti ram, pakeisti aparatine iranga, reikia atsidaryti guest'o konfiga su komanda:

# virsh edit <vps_pavadinimas>

Didinam cpu resursus (statiniai cpu)

<vcpu placement=’static’>8</vcpu>

Keiciam cpu loginius resursus bei cpu modeli ir t.t.

<cpu>
<model>power8</model> 
<topology sockets=’1’ cores=’2’ threads=’4’/>
</cpu>

Po viso sito, virsh shutdown <vps_pavadinimas>, virsh start <vps_pavadinimas>

Krovimas is CDROM

virsh edit <virtualas>

Pridedam sias eilutes tarp <os> </os>

   <boot dev='cdrom'/>
   <boot dev='hd'/>
   <bootmenu enable='yes'/>

Virtualaus disko prapletimas

Prieš ką nors darydami pirmiausia išjungiame virtualią mašiną Pažiūrime info:

virt-filesystems --long -h --all -a olddisk

Praplečiame diską papildomais 5GB

truncate -r olddisk newdisk
truncate -s +5G newdisk

Particijų dydžių keitimas tiesiogiai virtualiame hdd (PASTABA! particija yra sename disko imidže)

virt-resize --expand /dev/sda2 olddisk newdisk

Įjungiame mašiną

Virtualaus disko konvertavimas i cow2 format

qemu-img convert -f raw -O qcow2 /path/to/your/hdd/vm01.img /path/to/your/hdd/vm01.qcow2

Po to nepamirstame pakeisti disko tipo:

virsh edit <vm>

Virtualių diskų managinimas

apt-get install libguestfs-tools
guestfish -a vps.img
 Welcome to guestfish, the guest filesystem shell for
 editing virtual machine filesystems and disk images.

 Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell

><fs> run
 100% [###########################################################################################################################################################################################################] 00:00
><fs> 
><fs> list-filesystems
/dev/sda1: ext4
/dev/sda2: ext4
><fs> fsck ext4 /dev/sda1

Virtualių diskų pridėjimas

Sukuriame diską:

truncate --size=30192M /srv/vps/30additional.img

Sukuriame konfiga /srv/vps/NewStorage.xml

  <disk type='file' device='disk'>
   <driver name='qemu' type='raw' cache='none'/>
   <source file='/srv/vps/30additional.img'/>
   <target dev='hdd' bus='virtio'/>
 </disk>

Prijungiame:

virsh attach-device Win10 NewStorage.xml

Jeigu norime prijungti diską ne vienam kartui tuomet pridedame parametrą "--persistent"

virsh attach-device --persistent Win10 NewStorage.xml

Jeigu tai windows Guest OS būtina papildomai įdiegti draiverius: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso viostor ir vioscsi Tuomet per disk manager initializuojame naują diską su pasirinkta failų sistema ir galime naudoti.

Pašalinimas

Komandos skirtos išjungti ir pašalinti virtualų hostą:

# destroy vps_pavadinimas
# undefine vps_pavadinimas

Atvaizdu akturimas

Apie netyčia arba tyčia ištrintų image atvaizdų atkūrimą, skaitykite photorec puslapyje.

Migracija

Nukopijuojame hdd .img ar .qcow2 disko atvaizdus i naujaji serveri. Tuomet padarome vm'u konfiguraciju dump'us

virsh dumpxml <VPS> > manovps.xml
virsh net-dumpxml <tinklas> > netxml.xml

Kitoje masinoje rasome

virsh define manovps.xml
virsh net-define netxml.xml
virsh net-start <netname>
virsh net-autostart <netname>

Live Migracija

Nukopijuojame vm hdd image:

scp {volume-file} {user}@{host}:{path}

Atliekame live migracija:

virsh migrate --live --copy-storage-all {vm-name} qemu+ssh://{host}/system

Ex.:

administrator@jungle:~$ scp test-vm/tmpZFu5C7.qcow2 forest.cnx.rice.edu:/homes/administrator/test-vm/tmpZFu5C7.qcow2
administrator@jungle:~$ virsh migrate --live --copy-storage-all test-vm qemu+ssh://forest.cnx.rice.edu/system