Narzędzia użytkownika

Narzędzia witryny


wiki:kvm

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
wiki:kvm [2022/04/05 10:36] lukaszwiki:kvm [2024/02/10 10:02] (aktualna) lukasz
Linia 1: Linia 1:
 ====== Virsh / KVM / qemu ====== ====== Virsh / KVM / qemu ======
  
-Założenie:+==== Fizyczny interfejs sieciowy dla wirtualki ====
  
   * potrzebna jest //jedna// maszyna wirtualna o nazwie tulipan na hoście z Fedorą 34,   * potrzebna jest //jedna// maszyna wirtualna o nazwie tulipan na hoście z Fedorą 34,
Linia 8: Linia 8:
   * należy wydzielić osobny interfejs sieciowy dla wirtualki.   * należy wydzielić osobny interfejs sieciowy dla wirtualki.
  
-Instalacja potrzebnego (oraz trochę nadmiarowego, na wszelki wypadek) oprogramowania związanego z kvm oraz qemu:+Instalacja potrzebnego (oraz trochę nadmiarowego, na wszelki wypadek) oprogramowania związanego z kvm oraz qemu dla Fedory
  
   # dnf install libvirt-bash-completion libvirt-libs libvirt-client python3-libvirt libvirt-daemon libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-core libvirt-daemon-driver-network libvirt-daemon-driver-storage-disk libvirt-daemon-driver-storage-scsi libvirt-daemon-driver-interface libvirt-daemon-config-network libvirt-daemon-driver-storage-iscsi-direct libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-nodedev libvirt-daemon-driver-storage-mpath libvirt-daemon-driver-storage-logical libvirt-daemon-driver-storage-iscsi libvirt-daemon-driver-secret libvirt-daemon-driver-nwfilter libvirt-daemon-driver-storage-sheepdog libvirt-daemon-driver-storage-zfs libvirt-daemon-driver-storage-rbd libvirt-daemon-driver-storage libvirt-daemon-kvm qemu-img libvirt-daemon-driver-qemu ipxe-roms-qemu qemu-common qemu-ui-opengl qemu-ui-egl-headless qemu-ui-sdl qemu-audio-alsa qemu-audio-oss qemu-audio-pa qemu-audio-sdl qemu-block-curl qemu-block-dmg qemu-block-gluster qemu-block-iscsi qemu-block-nfs qemu-block-ssh qemu-char-baum qemu-device-display-virtio-gpu qemu-device-display-virtio-gpu-pci qemu-device-display-virtio-vga qemu-device-usb-redirect qemu-device-usb-smartcard qemu-ui-curses qemu-ui-gtk qemu-ui-spice-core qemu-char-spice qemu-ui-spice-app qemu-audio-spice qemu-device-display-qxl qemu-system-x86-core qemu-block-rbd qemu-system-x86 qemu-kvm virt-install   # dnf install libvirt-bash-completion libvirt-libs libvirt-client python3-libvirt libvirt-daemon libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-core libvirt-daemon-driver-network libvirt-daemon-driver-storage-disk libvirt-daemon-driver-storage-scsi libvirt-daemon-driver-interface libvirt-daemon-config-network libvirt-daemon-driver-storage-iscsi-direct libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-nodedev libvirt-daemon-driver-storage-mpath libvirt-daemon-driver-storage-logical libvirt-daemon-driver-storage-iscsi libvirt-daemon-driver-secret libvirt-daemon-driver-nwfilter libvirt-daemon-driver-storage-sheepdog libvirt-daemon-driver-storage-zfs libvirt-daemon-driver-storage-rbd libvirt-daemon-driver-storage libvirt-daemon-kvm qemu-img libvirt-daemon-driver-qemu ipxe-roms-qemu qemu-common qemu-ui-opengl qemu-ui-egl-headless qemu-ui-sdl qemu-audio-alsa qemu-audio-oss qemu-audio-pa qemu-audio-sdl qemu-block-curl qemu-block-dmg qemu-block-gluster qemu-block-iscsi qemu-block-nfs qemu-block-ssh qemu-char-baum qemu-device-display-virtio-gpu qemu-device-display-virtio-gpu-pci qemu-device-display-virtio-vga qemu-device-usb-redirect qemu-device-usb-smartcard qemu-ui-curses qemu-ui-gtk qemu-ui-spice-core qemu-char-spice qemu-ui-spice-app qemu-audio-spice qemu-device-display-qxl qemu-system-x86-core qemu-block-rbd qemu-system-x86 qemu-kvm virt-install
 +  
 +W CentOS 9 wystarczą pakiety:
 +
 +  # dnf install qemu-kvm libvirt virt-install
 +
 +oraz ich zależności.
  
 Otwarcie portu 5901 w sieci lokalnej, z dodaną siecią w //sources//: Otwarcie portu 5901 w sieci lokalnej, z dodaną siecią w //sources//:
Linia 57: Linia 63:
 ---- ----
  
-=== br0 dla wirtualek ===+==== br0 dla wirtualek ====
  
 Ustawienie interfejsu br0, współdzielonego przez fizyczną maszynę oraz wirtualki. Ustawienie interfejsu br0, współdzielonego przez fizyczną maszynę oraz wirtualki.
Linia 65: Linia 71:
   # nmcli con modify bridge-virt-br0 ipv4.method manual ipv4.address "192.168.200.20/24" ipv4.gateway "192.168.200.1"  ipv4.dns "192.168.200.5" ipv4.dns-search ping.local   # nmcli con modify bridge-virt-br0 ipv4.method manual ipv4.address "192.168.200.20/24" ipv4.gateway "192.168.200.1"  ipv4.dns "192.168.200.5" ipv4.dns-search ping.local
   # nmcli connection modify bridge-virt-br0 autoconnect yes   # nmcli connection modify bridge-virt-br0 autoconnect yes
 +  # nmcli connection add type bridge-slave ifname eno1 master virt-br0
 +  # nmcli connection modify bridge-slave-eno1 autoconnect yes
 +  
  
 A teraz konfiguracja virsha: A teraz konfiguracja virsha:
Linia 83: Linia 92:
   # virt-install --name wirtualka.ping.local --description 'wirtualka.ping.local 192.168.200.50' --ram 8192 --vcpus 4 --connect qemu:///system --disk size=20 --network network=br0 --graphics vnc,listen=0.0.0.0,port=5901 --cdrom /var/lib/libvirt/images/CentOS-Stream-8-x86_64-latest-dvd1.iso --noautoconsole   # virt-install --name wirtualka.ping.local --description 'wirtualka.ping.local 192.168.200.50' --ram 8192 --vcpus 4 --connect qemu:///system --disk size=20 --network network=br0 --graphics vnc,listen=0.0.0.0,port=5901 --cdrom /var/lib/libvirt/images/CentOS-Stream-8-x86_64-latest-dvd1.iso --noautoconsole
  
 +----
 +
 +=== Migracja VK-ki na inny host ===
 +
 +Zakładam, że obydwa serwery są podobnie skonfigurowane, to znaczy mają pliki qcow w tym samym katalogu oraz mają takie same interfejsy sieciowe dla wirtualek. Na źródle:
 +
 +  cd /var/lib/libvirt/images
 +  scp vmka.qcow nowy_host:/var/lib/libvirt/images/
 +  virsh dumpxml vmka
 +
 +Należy skopiować kod xml do schowka. Na nowym serwerze:
 +
 +  vim /tmp/vmka.xml
 +
 +i wkleić tam kod xml. Potem:
 +
 +  virsh define /tmp/vmka.xml
 +  rm /tmp/vmka.xml
 +  virsh start --domain vmka
 +  
 +Można potem jeszcze poprawić vmkę poprzez:
 +
 +  virsh edit vmka
 +
 +i poprawić jej port vnc na nieużywany przez inne maszyny.
 +
 +----
 +
 +==== Kompresja obrazu dysku ====
 +
 +Pliki qcow2 z czasem stają się większe. Wynika to ze zwykłego na zapisywania plików przez wirtualkę oraz tworzenia i usuwania snapshotów. Należy zatrzymać wirtualkę i skompresować obraz.
 +
 +  qemu-img convert -O qcow2 -c maria.qcow2 maria2.qcow2
 +  rm maria.qcow2
 +  mv maria2.qcow2 maria.qcow2
 +
 +
 +----
 +
 +==== Dodanie dysku do maszyny wirtualnej ====
 +
 +  cd /var/lib/libvirt/images
 +  qemu-img create -f qcow2 vmka-data.qcow2 110G -o preallocation=metadata
 +  virsh attach-disk vmka --source /var/lib/libvirt/images/vmka-data.qcow2 --target vdb --cache none --persistent
 +
 +W pliku konfiguracyjnym maszyny wirtualnej nowy dysk doda się wpis o nowych dysku z formatem //raw//, co uniemożliwia wykonanie kopii migawkowej. Należy zmienić linijkę opisującą nowy dysk z 
 +
 +  <driver name='qemu' type='raw' cache='none'/>
 +
 +na 
 +
 +  <driver name='qemu' type='qcow2' cache='none'/>
 +
 +---- 
 +
 +==== net-autortart ====
 +
 +W przypadku błędu:
 +
 +  # virsh net-autostart br0
 +  error: failed to mark network br0 as autostarted
 +  error: Requested operation is not valid: cannot set autostart for transient network
 +
 +należy 
 +
 +  # virsh net-edit br0
 +
 +dodać pustą linię na końcu oraz zapisać, a potem
 +
 +  # virsh net-autostart br0
 +  Network br0 marked as autostarted
 +
 +
 +==== Uruchomienie wirtualki z płyty ====
 +
 +Scenariusz: maszyna wirtualna testowycentos9 się nie uruchamia, ponieważ system plików na partycji root jest uszkodzony. Należy wyłączyć wirtualkę i naprawić system plików za pomocą xfs_repair.
 +
 +  virsh destroy --domain testowycentos9
 +  virsh edit --domain testowycentos9
 +
 +Trzeba poprawić sekcję os:
 +
 +  <os>
 +    <type arch='x86_64' machine='pc-q35-rhel8.6.0'>hvm</type>
 +    <boot dev='hd'/>
 +  </os>
 +
 +na 
 +
 +  <os>
 +    <type arch='x86_64' machine='pc-q35-rhel8.6.0'>hvm</type>
 +    <boot dev='cdrom'/>
 +  </os>
 +
 +Trzeba również umieścić "płytkę" w napędzie cd. Poprawić:
 +
 +  <disk type='file' device='cdrom'>
 +    <driver name='qemu' type='raw'/>
 +    <target dev='sda' bus='sata'/>
 +    <readonly/>
 +    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
 +  </disk>
 +
 +na (przykładowo, ponieważ ścieżka do pliku iso może być inna):
 +
 +  <disk type='file' device='cdrom'>
 +    <driver name='qemu' type='raw'/>
 +    <target dev='sda' bus='sata'/>
 +    <source file='/var/lib/libvirt/images/CentOS-Stream-9-latest-x86_64-dvd1.iso'/>
 +    <readonly/>
 +    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
 +  </disk>
 +
 +Zapisać plik oraz uruchomić wirtualkę.
 +
 +  virsh start --domain testowycentos9
 +
 +Teraz wystarczy się połączyć z konsolą przez vnc, wybrać tryb ratunkowy w instalatorze CentOS-a, a w nim tryb numer 3, żeby po prostu uruchomić basha. Potem trzeba wykryć i aktywować LVM oraz użyć xfs_repair na uszkodzonym woluminie. Można potem spróbować wyłączyć system za pomocą "shutdown -h now", ale nie zawsze się to udaje. Jeżeli wirtualka będzie nadal działać, można ją wyłączyć za pomocą nadzorcy:
 +
 +  virsh destroy --domain testowycentos9
 +
 +Trzeba teraz wyedytować konfigurację wirtualki i poprawić //cdrom// na //hd// w sekcji os. Po jej ponownym starcie:
 +
 +  virsh start --domain testowycentos9
 +
 +uruchomi się poprawnie.
  
wiki/kvm.1649147802.txt.gz · ostatnio zmienione: 2022/08/18 11:44 (edycja zewnętrzna)

Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki