wiki:kvm
Różnice
Różnice między wybraną wersją a wersją aktualną.
Poprzednia rewizja po obu stronachPoprzednia wersjaNowa wersja | Poprzednia wersja | ||
wiki:kvm [2022/04/05 10:36] – lukasz | wiki: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, | + | Instalacja potrzebnego (oraz trochę nadmiarowego, |
# 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 // | Otwarcie portu 5901 w sieci lokalnej, z dodaną siecią w // | ||
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 " | # nmcli con modify bridge-virt-br0 ipv4.method manual ipv4.address " | ||
# 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 ' | # virt-install --name wirtualka.ping.local --description ' | ||
+ | ---- | ||
+ | |||
+ | === Migracja VK-ki na inny host === | ||
+ | |||
+ | Zakładam, że obydwa serwery są podobnie skonfigurowane, | ||
+ | |||
+ | cd / | ||
+ | scp vmka.qcow nowy_host:/ | ||
+ | virsh dumpxml vmka | ||
+ | |||
+ | Należy skopiować kod xml do schowka. Na nowym serwerze: | ||
+ | |||
+ | vim / | ||
+ | |||
+ | i wkleić tam kod xml. Potem: | ||
+ | |||
+ | virsh define / | ||
+ | rm / | ||
+ | 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 / | ||
+ | qemu-img create -f qcow2 vmka-data.qcow2 110G -o preallocation=metadata | ||
+ | virsh attach-disk vmka --source / | ||
+ | |||
+ | 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=' | ||
+ | |||
+ | na | ||
+ | |||
+ | <driver name=' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 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=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | |||
+ | na | ||
+ | |||
+ | <os> | ||
+ | <type arch=' | ||
+ | <boot dev=' | ||
+ | </os> | ||
+ | |||
+ | Trzeba również umieścić " | ||
+ | |||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | |||
+ | na (przykładowo, | ||
+ | |||
+ | <disk type=' | ||
+ | <driver name=' | ||
+ | <target dev=' | ||
+ | <source file='/ | ||
+ | < | ||
+ | <address type=' | ||
+ | </ | ||
+ | |||
+ | 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ą " | ||
+ | |||
+ | 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)