- 1 Wstęp
- 2 Porównanie KVM z innymi technologiami wirtualizacyjnymi
- 3 Budowanie środowiska KVM na Ubuntu [Installation & Initial Setup]
- 4 Tworzenie i zarządzanie maszynami wirtualnymi
- 5 Konfiguracja i Rozszerzanie Sieci
- 6 Zarządzanie Magazynem i Operacje na Dyskach
- 7 Instalacja i obsługa gościa OS
- 8 Praktyczne przypadki użycia i wskazówki dotyczące automatyzacji
- 9 Rozwiązywanie problemów i typowe rozwiązania błędów
- 10 Optymalizacja Bezpieczeństwa i Wydajności
- 11 Podsumowanie i Dodatkowe Zasoby do Nauki
- 12 Szybki przewodnik po poleceniach i typowych ustawieniach (ściąga)
- 13 FAQ (Często zadawane pytania)
- 13.1 Q1: Jakie są różnice między KVM, VirtualBox i VMware?
- 13.2 Q2: Jak zrobić kopię zapasową i przywrócić maszyny wirtualne?
- 13.3 Q3: Jak mogę używać urządzeń USB wewnątrz maszyny wirtualnej?
- 13.4 Q4: Jak automatycznie uruchomić maszynę wirtualną przy starcie hosta?
- 13.5 Q5: Co zrobić, gdy wydajność maszyny wirtualnej jest niska?
- 13.6 Q6: Mam problemy z ustawieniami sieci. Co powinienem sprawdzić?
- 13.7 Q7: Czy można budować klastry lub rozwiązania HA z KVM?
Wstęp
Ubuntu jest jedną z najbardziej rozpowszechnionych dystrybucji Linuksa na całym świecie. Jest popularna w różnych scenariuszach, od użytkowników indywidualnych po środowiska enterprise, i często wybierana do wdrożeń serwerowych oraz konfiguracji deweloperskich. Jeśli chcesz wdrożyć zaawansowaną wirtualizację na Ubuntu, jednym z najpotężniejszych rozwiązań jest KVM (Kernel-based Virtual Machine).
KVM to technologia hiperwizora wbudowana bezpośrednio w jądro Linuksa. Wykorzystując rozszerzenia wirtualizacji sprzętowej (takie jak Intel VT lub AMD-V), KVM zapewnia wysoką wydajność i stabilność. Będąc open-source, KVM umożliwia budowanie pełnoprawnej infrastruktury wirtualizacyjnej przy minimalnych kosztach.
Technologia wirtualizacji może na początku wydawać się onieśmielająca. Jednak z Ubuntu i KVM nawet początkujący mogą łatwo tworzyć i zarządzać maszynami wirtualnymi. Oczywiście KVM jest również zalecany dla użytkowników średniozaawansowanych, którzy chcą optymalizować zasoby fizycznych serwerów, a także dla inżynierów chcących wirtualizować systemy produkcyjne.
Ten artykuł zawiera kompleksowy przewodnik po budowaniu środowiska wirtualizacyjnego opartego na KVM na Ubuntu, w tym kroki instalacji, podstawowe użycie, praktyczne wskazówki oraz rozwiązania problemów. Jeśli rozważasz adopcję KVM lub chcesz w pełni wykorzystać funkcje wirtualizacji Ubuntu, przeczytaj do końca.
Porównanie KVM z innymi technologiami wirtualizacyjnymi
Istnieje wiele technologii wirtualizacyjnych, ale na Ubuntu powszechnie używane są KVM, VirtualBox i VMware. Ten rozdział wyjaśnia cechy i różnice każdej z nich, a także zalety i wady wyboru KVM.
Główne typy technologii wirtualizacyjnych
- KVM (Kernel-based Virtual Machine) KVM to funkcja wirtualizacji wbudowana w jądro Linuksa i wymaga Linuksa jako systemu hosta. Wykorzystując rozszerzenia wirtualizacji sprzętowej (Intel VT lub AMD-V), KVM oferuje wysokiej wydajności maszyny wirtualne odpowiednie dla środowisk produkcyjnych. Obsługuje elastyczne zarządzanie za pomocą narzędzi wiersza poleceń i menedżerów GUI, takich jak virt-manager.
- VirtualBox VirtualBox to oprogramowanie wirtualizacyjne skierowane na desktop, dostarczane przez Oracle. Działa na Windows, Mac i Linux, i charakteryzuje się łatwym w zrozumieniu interfejsem, co czyni go popularnym wyborem do użytku osobistego i edukacyjnego. Jednak w porównaniu do KVM jest mniej odpowiedni dla środowisk komercyjnych lub o wysokim obciążeniu.
- VMware (Workstation/ESXi, itp.) VMware to szeroko stosowane komercyjne rozwiązanie wirtualizacyjne, znane z bogatego zestawu funkcji i kompleksowego wsparcia. Jednak wymagana jest płatna licencja. Chociaż często wybierane jest do dużych wdrożeń enterprise, koszt może być czynnikiem.
Zalety KVM
- Wysoka wydajność i stabilność KVM działa jako część jądra Linuksa, zapewniając efektywne zarządzanie zasobami i precyzyjną kontrolę nad alokacją CPU i pamięci dla każdej VM. Jest wysoce stabilny do uruchamiania rzeczywistych systemów biznesowych.
- Open Source i brak opłat licencyjnych KVM jest całkowicie open-source i darmowy w użyciu, co czyni go idealnym do budowania platform wirtualizacyjnych o niskim koszcie.
- Bogate narzędzia zarządzania i wsparcie dla automatyzacji Dostępne są różne opcje zarządzania, w tym narzędzia wiersza poleceń (virsh, virt-install) i narzędzia GUI (virt-manager). KVM jest również dobrze dostosowany do automatyzacji i skryptów, co czyni go idealnym dla DevOps i zarządzania infrastrukturą.
Wady KVM
- Wymaganie hosta tylko dla Linuksa Ponieważ KVM wymaga jądra Linuksa, nie może być używany jako host w środowiskach Windows lub Mac.
- Potrzebna wiedza o Linuksie do początkowej konfiguracji i rozwiązywania problemów Chociaż dostępne są narzędzia GUI, niektóre ustawienia sieciowe i zaawansowane dostrajanie mogą wymagać operacji wiersza poleceń lub wiedzy specyficznej dla Linuksa.
Kiedy wybrać KVM?
- Gdy chcesz efektywnie wykorzystać zasoby fizycznego serwera
- Gdy potrzebujesz wirtualizacji dla systemów produkcyjnych lub aplikacji serwerowych
- Gdy chcesz zbudować solidną infrastrukturę wirtualizacji niskim kosztem
- Gdy chcesz zautomatyzować operacje serwera Linux lub zarządzanie infrastrukturą
KVM to doskonała technologia wirtualizacji nie tylko dla doświadczonych użytkowników i inżynierów Linux, ale także dla tych, którzy chcą w przyszłości spróbować uruchomić pełnowymiarowe serwery.
Budowanie środowiska KVM na Ubuntu [Installation & Initial Setup]
Aby używać KVM na Ubuntu, musisz spełnić pewne wymagania wstępne, wykonać przygotowania, a następnie przeprowadzić instalację. Ten rozdział prowadzi Cię przez niezbędne kroki, aby rozpocząć pracę z KVM, z wskazówkami pomagającymi początkującym w płynnym skonfigurowaniu środowiska.
Wymagania wstępne i wstępne sprawdzenia
Aby używać KVM, procesor Twojego komputera lub serwera musi obsługiwać rozszerzenia wirtualizacji (Intel VT lub AMD-V).
Najpierw sprawdź, czy sprzętowa wirtualizacja jest włączona, za pomocą następującego polecenia:
egrep -c '(vmx|svm)' /proc/cpuinfo
Jeśli wynik jest równy 1 lub większy, obsługa wirtualizacji jest dostępna.
Ponadto musisz uruchamiać 64-bitową wersję Ubuntu.
Instalowanie KVM i wymaganych pakietów
Zainstaluj rdzeń KVM i powiązane narzędzia (takie jak libvirt i virt-manager) za pomocą następujących poleceń:
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
qemu-kvm: Główny pakiet wirtualizacji KVMlibvirt-daemon-system,libvirt-clients: Usługi zarządzania maszynami wirtualnymibridge-utils: Narzędzia do konfiguracji mostka sieciowegovirt-manager: Narzędzie GUI do zarządzania maszynami wirtualnymi
Konfigurowanie grup użytkowników i uprawnień
Po instalacji dodaj bieżącego użytkownika do grup kvm i libvirt. Pozwala to zarządzać maszynami wirtualnymi bez uprawnień root.
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)
Wyloguj się i zaloguj ponownie lub zrestartuj system, aby zastosować zmiany.
Weryfikacja statusu usługi KVM
Sprawdź, czy KVM jest poprawnie zainstalowany i usługa działa:
sudo systemctl status libvirtd
Jeśli pokazuje „active (running)”, wszystko działa poprawnie.
Możesz również zweryfikować KVM za pomocą tego polecenia:
virsh list --all
Jeśli widzisz (obecnie pustą) listę maszyn wirtualnych, środowisko KVM jest poprawnie skonfigurowane.
Tworzenie i zarządzanie maszynami wirtualnymi
Gdy Twoje środowisko KVM jest gotowe, możesz zacząć tworzyć i obsługiwać maszyny wirtualne. Z KVM możesz używać zarówno narzędzi graficznych (virt-manager), jak i narzędzi wiersza poleceń (virt-install, virsh), w zależności od potrzeb. Tutaj przedstawiamy oba podejścia.
Tworzenie maszyny wirtualnej za pomocą virt-manager (GUI)
virt-manager to narzędzie graficzne, które pozwala łatwo tworzyć i zarządzać maszynami wirtualnymi. Jeśli używasz środowiska pulpitu Linux, virt-manager jest bardzo wygodne.
- Uruchom
virt-managerz menu aplikacji lub wiersza poleceń. - Kliknij przycisk „New” w lewym górnym rogu.
- Wybierz lokalizację nośnika instalacyjnego (takiego jak obraz ISO) i wybierz typ systemu gościa (np. Ubuntu, Windows).
- Ustaw liczbę procesorów, rozmiar pamięci, rozmiar dysku itp. dla maszyny wirtualnej.
- Przejrzyj ustawienia i kliknij „Finish”, aby utworzyć maszynę wirtualną. Pojawi się ekran instalacyjny.
Za pomocą virt-manager możesz również uruchamiać, zatrzymywać i restartować maszyny wirtualne, tworzyć snapshoty oraz dodawać sieci lub dyski za pośrednictwem intuicyjnego interfejsu.
Tworzenie maszyny wirtualnej za pomocą virt-install (CLI)
Dla środowisk serwerowych lub zdalnych często łatwiej jest tworzyć maszyny wirtualne z wiersza poleceń.
Oto podstawowy przykład używający virt-install:
sudo virt-install
--name ubuntu-vm
--memory 2048
--vcpus 2
--disk size=20
--cdrom /path/to/ubuntu.iso
--os-type linux
--os-variant ubuntu20.04
--network network=default
--graphics vnc
--name: Nazwa maszyny wirtualnej--memory: Przydział pamięci (w MB)--vcpus: Liczba rdzeni CPU--disk size=20: Rozmiar dysku (w GB)--cdrom: Ścieżka do obrazu ISO do instalacji--os-type,--os-variant: Typ i wersja systemu operacyjnego--network: Sieć do podłączenia--graphics: Tryb graficzny (np. VNC)
Po uruchomieniu tego polecenia maszyna wirtualna uruchomi się, a ekran instalacyjny zostanie wyświetlony za pośrednictwem VNC lub innej określonej metody.
Uruchamianie, Zatrzymywanie, Usuwanie i Tworzenie Migawek Maszyn Wirtualnych
Zarządzanie maszynami wirtualnymi za pomocą KVM jest proste. Oto kilka powszechnie używanych poleceń:
- Uruchom maszynę wirtualną:
virsh start <vm-name>
- Wyłącz maszynę wirtualną:
virsh shutdown <vm-name>
- Wymuś zatrzymanie maszyny wirtualnej:
virsh destroy <vm-name>
- Usuń maszynę wirtualną (uwaga: usuwa również jej dysk):
virsh undefine <vm-name>
- Utwórz migawkę:
virsh snapshot-create-as <vm-name> <snapshot-name>
Możesz również wykonywać te operacje z interfejsu graficznego virt-manager.
Konfiguracja i Rozszerzanie Sieci
Ustawienia sieci są kluczowe podczas uruchamiania maszyn wirtualnych za pomocą KVM. Chociaż domyślne ustawienia działają w wielu przypadkach, środowiska biznesowe lub produkcyjne często wymagają dostosowania. Ten rozdział wyjaśnia podstawy sieci KVM oraz powszechnie używane zaawansowane ustawienia.
Różnice Między Domyślnym NAT (virbr0) a Sieciami Bridge
Po zainstalowaniu KVM automatycznie tworzy wirtualny most sieciowy o nazwie „virbr0”. Jest to sieć NAT (Network Address Translation), która ma następujące cechy:
- Cechy virbr0 (tryb NAT):
- Maszyny wirtualne mogą uzyskać dostęp do zewnętrznego internetu
- Jednak bezpośredni dostęp do maszyn wirtualnych z hosta lub innych sieci wymaga przekierowania portów
- Najlepsze dla domowych laboratoriów, rozwoju lub testowania
Z drugiej strony sieć „bridge” pozwala maszynom wirtualnym dołączyć do tego samego segmentu sieci co fizyczny host.
- Cechy sieci bridge:
- Maszyny wirtualne dołączają do tego samego segmentu sieci co host
- Fizyczne komputery lub inne serwery mogą bezpośrednio uzyskać dostęp do maszyn wirtualnych
- Idealne dla wewnętrznych serwerów lub usług produkcyjnych
Tworzenie i Konfigurowanie Niestandardowego Mostu (dla Dostępu LAN)
Jeśli chcesz, aby maszyny wirtualne były bezpośrednio dostępne z innych komputerów lub serwerów, utwórz sieć bridge. Poniżej znajduje się typowa procedura (zakładając, że interfejs sieciowy hosta to eth0):
- Zainstaluj bridge-utils (pomiń, jeśli już zainstalowane)
sudo apt install bridge-utils
- Edytuj plik konfiguracji sieci W Ubuntu 18.04 i nowszych używany jest Netplan. Edytuj
/etc/netplan/01-netcfg.yaml, na przykład:network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no bridges: br0: interfaces: [eth0] dhcp4: yes
- Zastosuj ustawienia
sudo netplan apply
- Dodaj nowy most (br0) do sieci KVM Przełącz adapter sieciowy swojej maszyny wirtualnej na br0 za pomocą virt-manager lub virsh.
Przypisywanie Statycznych IP & Ustawianie Przekierowania Portów
- Przypisywanie statycznych IP Zazwyczaj ustaw statyczne IP w systemie operacyjnym maszyny wirtualnej lub użyj serwera DHCP do przypisania stałego IP według adresu MAC.
- Przekierowanie portów (podczas używania NAT) Za pomocą virsh lub XML libvirt możesz przekierowywać porty (np. SSH lub serwer WWW) z hosta do maszyny wirtualnej. Przykład przekierowania SSH na port 22:
virsh nat-forward --network default --add-port tcp:2222:22
Dla bardziej złożonych konfiguracji możesz również edytować pliki konfiguracyjne libvirt lub użyć firewalld.
Zarządzanie Magazynem i Operacje na Dyskach
Prawidłowe projektowanie magazynu i zarządzanie dyskami są również niezbędne podczas obsługi maszyn wirtualnych za pomocą KVM. Ten rozdział wyjaśnia różne typy wirtualnych dysków, sposób ich tworzenia, zarządzanie pulami magazynowymi, rozszerzanie dysków oraz używanie migawek.
Typy i Zastosowania Wirtualnych Dysków (qcow2, raw)
KVM głównie obsługuje dwa typy formatów wirtualnych dysków:
- Format qcow2
- Standardowy format wirtualnego dysku dla KVM
- Obsługuje snapshoty, kompresję i efektywne wykorzystanie miejsca na dysku
- Najlepszy dla elastycznych środowisk operacyjnych lub testowych
- Format raw
- Prosty format bez kompresji lub konwersji
- Idealny, gdy potrzebujesz maksymalnej wydajności I/O dysku
W większości przypadków zaleca się qcow2, ale możesz wybrać na podstawie swoich specyficznych potrzeb.
Tworzenie i zarządzanie pulami pamięci masowej
KVM używa koncepcji „puli pamięci masowej” do zarządzania przestrzenią dyskową używaną przez maszyny wirtualne.
- Domyślna pula pamięci masowej Domyślnie
/var/lib/libvirt/images/jest używana jako pula pamięci masowej, a nowe wirtualne dyski są tworzone w tym katalogu. - Tworzenie nowej puli pamięci masowej (Przykład)
Utwórz katalog:
sudo mkdir /data/kvm-images sudo chown libvirt-qemu:kvm /data/kvm-images2. Dodaj nową pulę za pomocą virt-manager lub polecenia virsh. Z virsh:virsh pool-define-as --name mypool --type dir --target /data/kvm-images virsh pool-autostart mypool virsh pool-start mypool
Rozszerzanie wirtualnych dysków i używanie snapshotów
- Rozszerzanie wirtualnego dysku Jeśli potrzebujesz zwiększyć rozmiar dysku, użyj polecenia
qemu-img(działa dla obu qcow2 i raw):sudo qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
Po tym, rozszerz partycję i system plików wewnątrz gościa OS według potrzeb.
- Używanie snapshotów Z dyskami qcow2 możesz tworzyć snapshoty, aby zapisać bieżący stan swojej VM w dowolnym momencie.
virsh snapshot-create-as <vm-name> <snapshot-name>
Snapshoty są bardzo przydatne do tworzenia kopii zapasowych przed aktualizacjami, cofania testów lub odzyskiwania z błędów konfiguracji.
Instalacja i obsługa gościa OS
Ta sekcja wyjaśnia, jak instalować i uruchamiać systemy operacyjne na maszynach wirtualnych KVM. Omówimy instalację typowych gościa OS, obsługę obrazów ISO oraz wskazówki dotyczące poprawy wydajności podczas działania.
Instalowanie popularnych gościa OS
KVM pozwala na uruchamianie różnych OS, takich jak Ubuntu, CentOS i Windows. Poniżej znajdują się przykładowe kroki instalacji dla Ubuntu i Windows:
- Dla Ubuntu
- Pobierz najnowszy ISO Ubuntu z oficjalnej strony internetowej.
- W virt-manager wybierz „Utwórz nową maszynę wirtualną”, zaznacz „Lokalne nośniki instalacyjne” i określ plik ISO.
- Ustaw CPU, pamięć i rozmiar dysku VM, a następnie uruchom instalację.
- Postępuj zgodnie z instrukcjami na ekranie, aby ukończyć standardową instalację Ubuntu.
- Dla Windows
- Pobierz ISO ewaluacyjne Windows z oficjalnej strony Microsoft.
- Utwórz nową VM w virt-manager lub za pomocą virt-install i wybierz ISO jako nośnik instalacyjny.
- Dla lepszej wydajności dysku i sieci zamontuj ISO sterowników virtio jako dodatkowy napęd CD i zainstaluj sterowniki podczas konfiguracji.
Uzyskiwanie i montowanie obrazów ISO
- Pobierz obrazy ISO z oficjalnych źródeł dla OS, który chcesz zainstalować.
- Określ ścieżkę do pliku ISO podczas tworzenia nowej maszyny wirtualnej; zostanie on zamontowany jako wirtualny napęd CD/DVD.
- Jeśli potrzeba, możesz zamontować wiele ISO naraz (np. OS i sterowniki).
Wskazówki dotyczące obsługi i wydajności gościa OS
- Optymalizuj alokację zasobów Przydziel odpowiednie ilości CPU i pamięci dla każdej VM. Nadmierna alokacja zasobów może negatywnie wpłynąć na host OS i inne VM.
- Zainstaluj sterowniki virtio Dla Windows lub starszych Linux gościa instalacja sterowników virtio może znacząco poprawić wydajność dysku i sieci.
- Wyłącz nieużywane usługi Wyłącz niepotrzebne usługi i programy w tle w gościu OS, aby zmaksymalizować dostępne zasoby.
- Użyj narzędzi KVM Guest Zainstaluj QEMU Guest Agent, aby poprawić dokładność zarządzania VM i wspierać funkcje takie jak czyste wyłączenie.
Praktyczne przypadki użycia i wskazówki dotyczące automatyzacji
KVM to nie tylko narzędzie do tworzenia i uruchamiania maszyn wirtualnych — można je wykorzystać w różnych scenariuszach biznesowych i deweloperskich. Połączenie go ze skryptami lub narzędziami automatyzacji może również znacznie usprawnić zarządzanie. Ten rozdział dzieli się praktycznymi przypadkami użycia KVM i pomysłami na automatyzację.
Przypadki użycia na serwerach
- Izolowane środowiska deweloperskie i testowe Przydziel oddzielną maszynę wirtualną dla każdego projektu, co pozwala swobodnie przełączać wersje systemów operacyjnych i stosy oprogramowania bez wpływu na środowisko produkcyjne. Jest to duża zaleta podczas testowania nowych wersji OS lub aktualizacji oprogramowania.
- Budowanie wewnętrznych usług Wyodrębnij krytyczne usługi (serwery plików, serwery WWW, bazy danych itp.) do indywidualnych maszyn wirtualnych, aby awarie wpływały tylko na ograniczony zakres. Kopie zapasowe i snapshoty są łatwe do wykonania na poziomie pojedynczej VM.
Przykłady automatyzacji za pomocą CLI lub Ansible
- Automatyczne tworzenie VM za pomocą CLI Użyj skryptów do automatycznego wykonywania poleceń
virt-installlubvirshw celu tworzenia i zarządzania wieloma VM. Przykład za pomocą skryptu powłoki:for i in {1..5} do virt-install --name test-vm-$i --memory 1024 --vcpus 1 --disk size=10 --cdrom /path/to/ubuntu.iso --os-type linux --os-variant ubuntu20.04 --graphics none --network network=default --noautoconsole done
- Automatyzacja za pomocą Ansible Za pomocą narzędzia do automatyzacji infrastruktury Ansible możesz opisać tworzenie VM, początkową konfigurację i wdrażanie aplikacji w playbookach — automatyzując cały proces. Jest to szczególnie skuteczne podczas zarządzania dużą liczbą serwerów lub gdy spójność jest kluczowa.
Wskazówki dotyczące operacji podobnych do chmury
- Szablony VM Zapisz powszechnie używane początkowe stany VM jako szablony, co pozwala na szybkie wdrażanie nowych serwerów.
- Integracja API i zarządzanie oparte na WWW libvirt zapewnia API do integracji z niestandardowymi narzędziami lub innymi systemami zarządzania. W dużych środowiskach używaj narzędzi zarządzania opartych na WWW (takich jak Cockpit) do wizualnego zarządzania VM.
Rozwiązywanie problemów i typowe rozwiązania błędów
Podczas uruchamiania KVM możesz napotkać problemy, takie jak nieudane uruchomienie VM lub problemy z łącznością sieciową. Ten rozdział omawia typowe problemy, sposoby ich rozwiązywania oraz jak sprawdzać logi i korzystać z zasobów wsparcia.
Typowe problemy z KVM
- VM nie uruchamia się lub nie tworzy
- Wirtualizacja sprzętowa (Intel VT, AMD-V) jest wyłączona
- Niewystarczająca ilość pamięci lub miejsca na dysku przydzielona
- Nieprawidłowy basen pamięci masowej lub ścieżka ISO
- Problemy z łącznością sieciową
- Karta sieciowa VM nie jest poprawnie skonfigurowana
- Błędy w ustawieniach mostka lub NAT, lub nieudane przypisania DHCP
- Ograniczenia firewalla lub zabezpieczeń
- Słaba wydajność
- Nadmierne lub niewystarczające przydzielenie zasobów
- Brak sterowników virtio (zwłaszcza dla gości Windows)
- Zatory I/O dysku
Jak sprawdzać logi i podstawowy przepływ rozwiązywania problemów
Gdy wystąpią problemy, sprawdzanie logów jest kluczowe.
- Sprawdź logi systemowe
sudo journalctl -xe
Poszukaj komunikatów o błędach związanych z KVM lub libvirt.
- Sprawdź logi libvirt Przejrzyj pliki logów w
/var/log/libvirt/(np. libvirtd.log). - Sprawdź logi specyficzne dla VM W virt-manager lub virsh, przejrzyj zakładkę „Szczegóły” lub „Logi” dla każdej VM.
- Sprawdź status sieci
ip a brctl show virsh net-list --all
Sprawdź bieżące połączenia sieciowe i konfigurację mostka.
Podstawowe kroki rozwiązywania problemów
- Zidentyfikuj, kiedy problem się zaczął i wyjaśnij objawy
- Sprawdź powyższe logi i pliki konfiguracyjne
- Jeśli potrzeba, edytuj pliki konfiguracyjne, uruchom ponownie usługi lub odtwórz VM
Korzystanie z oficjalnej dokumentacji i zasobów społeczności
Jeśli utkniesz, te zasoby mogą być nieocenione:
- Oficjalna Dokumentacja Ubuntu Official KVM Guide libvirt Official Documentation
- Fora Społeczności i Strony z Pytaniami i Odpowiedziami
- Ubuntu Forums
- Ask Ubuntu
- Stack Overflow
- Wyszukiwanie Komunikatów Błędów Spróbuj wyszukać komunikaty błędów zarówno po angielsku, jak i w swoim języku ojczystym — często znajdziesz mnóstwo rozwiązań.
Optymalizacja Bezpieczeństwa i Wydajności
Aby bezpiecznie i efektywnie prowadzić środowisko KVM, niezbędne są środki bezpieczeństwa i optymalizacja wydajności. Ten rozdział omawia kluczowe punkty dotyczące ochrony infrastruktury wirtualizacji oraz praktyczne wskazówki maksymalizujące efektywność zasobów.
Wzmacnianie Bezpieczeństwa w Środowiskach Zwirtualizowanych
- Wyłącz Niepotrzebne Usługi i Używaj Minimalnych Konfiguracji Wyłącz nieużywane usługi wewnątrz swoich VM, aby zmniejszyć powierzchnię ataku. Podobnie, zatrzymaj niepotrzebne usługi na systemie hosta.
- Zapora Sieciowa i Kontrole Dostępu Poprawnie skonfiguruj zapory sieciowe (takie jak ufw lub firewalld) zarówno na hoście, jak i na systemach gościa, aby zablokować nieautoryzowany zewnętrzny dostęp. Dla SSH rozważ zmianę numeru portu, użycie uwierzytelniania opartego na kluczach oraz wdrożenie fail2ban dla dodatkowej ochrony.
- Izolacja VM (Segmentacja Sieci) Oddziel krytyczne serwery na różne sieci wirtualne lub segmenty fizyczne, aby zminimalizować wpływ w przypadku naruszenia.
- Regularne Aktualizacje Utrzymuj zarówno system hosta, jak i gościa na bieżąco z najnowszymi poprawkami bezpieczeństwa i aktualizacjami oprogramowania.
Optymalizacja Przydzielania Zasobów (CPU/Pamięć/Dysk I/O)
- Podstawowe Zarządzanie Zasobami Przydzielaj CPU i pamięć odpowiednio do każdej VM i zostaw zapas na hoście dla ogólnej stabilności systemu. Nadmierne przydzielanie może spowodować degradację wydajności zarówno hosta, jak i innych VM.
- Optymalizacja Dysk I/O Wydajność dysku często staje się wąskim gardłem. Przydziel szybki magazyn SSD ważnym VM dla najlepszych rezultatów. Ponadto, używanie zbyt wielu snapshotów z dyskami qcow2 może zmniejszyć wydajność, więc odpowiednio zrównoważ użycie.
- Wykorzystaj Sterowniki virtio Zainstaluj sterowniki virtio w systemach gościa, aby znacznie poprawić wydajność dysku i sieci.
Automatyzacja Kopii Zapasowych i Snapshotów
- Planuj Regularne Snapshots Wykonuj regularne snapshots produkcyjnych VM, aby szybko odzyskać dane w przypadku awarii.
- Kopia Zapasowa Obrazów Dysków i Plików Konfiguracyjnych Regularnie twórz kopie zapasowe obrazów dysków wirtualnych (pliki qcow2/raw) i plików konfiguracyjnych XML libvirt na innym urządzeniu magazynującym lub zewnętrznym serwerze.
- Integracja z Narzędziami Automatyzacji Używaj zadań cron lub narzędzi automatyzacji, takich jak Ansible, do planowania kopii zapasowych i tworzenia snapshotów automatycznie.
Podsumowanie i Dodatkowe Zasoby do Nauki
Ten artykuł omówił budowanie i prowadzenie środowiska wirtualizacji KVM na Ubuntu — od instalacji po zaawansowane użycie, rozwiązywanie problemów, bezpieczeństwo i strojenie wydajności. Przejrzyjmy kluczowe punkty i wprowadźmy zasoby, które pomogą Ci kontynuować naukę.
Podsumowanie Kluczowych Punktów
- Przegląd KVM i Korzyści KVM to otwarte, wysokowydajne rozwiązanie wirtualizacyjne szeroko stosowane z serwerami Ubuntu.
- Krok po Kroku od Instalacji po Operacje Przejrzeliśmy sprawdzanie wsparcia wirtualizacji, instalację pakietów, ustawianie uprawnień użytkownika, tworzenie VM oraz wykonywanie podstawowych operacji.
- Praktyczne Wskazówki Dotyczące Sieci, Magazynu i Operacji Dowiedziałeś się, jak skonfigurować sieci NAT lub bridge, zarządzać pulami magazynowymi, rozszerzać dyski i wykorzystywać snapshots.
- Rozwiązywanie Problemów i Bezpieczeństwo Omówiliśmy obsługę powszechnych błędów, sprawdzanie logów oraz punkty dla bezpiecznego i efektywnego działania.
Kolejne Kroki i Zalecane Zasoby do Nauki
- Oficjalna dokumentacja
- Oficjalny przewodnik KVM Ubuntu
- Oficna dokumentacja libvirt
- Ask Ubuntu
- Stack Overflow (angielski)
Po opanowaniu podstaw, KVM może być używany do wszystkiego, od projektów osobistych po infrastrukturę korporacyjną. Użyj tego przewodnika jako podstawy i kontynuuj eksplorację w zależności od swoich celów i środowiska.
Szybki przewodnik po poleceniach i typowych ustawieniach (ściąga)
Posiadanie szybkiego odniesienia do przydatnych poleceń i przykładów konfiguracji dla KVM i libvirt jest bardzo pomocne w codziennym zarządzaniu maszynami wirtualnymi. Ta sekcja zawiera najczęstsze polecenia oraz zwięzłe przykłady ustawień dla sieci i dysków.
Główne polecenia KVM/virsh/virt-manager
- Wyświetl wszystkie maszyny wirtualne
virsh list --all
- Uruchom maszynę wirtualną
virsh start <vm-name>
- Zamknij maszynę wirtualną
virsh shutdown <vm-name>
- Wymuś zatrzymanie maszyny wirtualnej
virsh destroy <vm-name>
- Utwórz nową maszynę wirtualną (virt-install)
virt-install --name <name> --memory <MB> --vcpus <cores> --disk size=<GB> --cdrom <ISO path> --os-type linux --os-variant ubuntu20.04
- Usuń maszynę wirtualną (tylko ustawienia)
virsh undefine <vm-name>
Przykłady konfiguracji sieci i mostka
- Wyświetl bieżące sieci
virsh net-list --all
- Utwórz nową sieć (przykład) Umieść plik XML w katalogu
/etc/libvirt/qemu/networks/, a następnie aktywuj go poleceniemvirsh net-define <filename>orazvirsh net-start <network-name>
Prłady zarządzania pamięcią i operacji na dyskach
- Wyświetl pule pamięci masowej
virsh pool-list --all
- Rozszerz dysk wirtualny
sudo qemu-img resize /path/to/disk.qcow2 +10G
- Utwórz migawkę
virsh snapshot-create-as <vm-name> <snapshot-name>
Inne przydatne wskazówki
- Ustaw maszynę wirtualną, aby uruchamiała się automatycznie przy starcie hosta
virsh autostart <vm-name>
- Uzyskaj szczegółowe informacje o maszynie wirtualnej
virsh dominfo <vm-name>
- Uruchom virtGUI)
virt-manager
FAQ (Często zadawane pytania)
Oto odpowiedzi na najczęstsze pytania czytelników dotyczące KVM i środowisk wirtualizacji Ubuntu. Używaj ich przy rozwiązywaniu problemów i codziennej pracy.
Q1: Jakie są różnice między KVM, VirtualBox i VMware?
A1: KVM jest platformą wirtualizacji wysokiej wydajności zintegrowaną z jądrem Linux i najlepiej nadaje się do serwerów i środowisk produkcyjnych. VirtualBox jest przeznaczony do użytku na komputerach stacjonarnych, natomiast VMware oferuje bogactwo funkcji i wsparcie dla dużych, komercyjnych środowisk. KVM jest zalecany, gdy potrzebna jest wysoka wydajność przy niskich kosztach.
Q2: Jak zrobić kopię zapasową i przywrócić maszyny wirtualne?
A2: Możesz łatwo wykonać kopię zapasową, kopiując obrazy dysków wirtualnych (pliki qcow2 lub raw). Zaleca się również zapisywanie migawków virsh oraz plików konfiguracyjnych XML maszyny wirtualnej, co ułatwia przywracanie.
Q3: Jak mogę używać urządzeń USB wewnątrz maszyny wirtualnej?
A3: Użyj funkcji „Add Hardware” w virt-manager lub skonfiguruj przekazywanie USB za pomocą virsh. Pozwala to na korzystanie z dysków USB, zewnętrznych HDD, drukarek itp. w maszynach wirtualnych.
Q4: Jak automatycznie uruchomić maszynę wirtualną przy starcie hosta?
A4: Uruchom virsh autostart <vm-name>, aby skonfigurować automatyczne uruchamianie tej maszyny przy starcie systemu hosta.
Q5: Co zrobić, gdy wydajność maszyny wirtualnej jest niska?
A5: Sprawdź i dostosuj przydział CPU/pamięci, zoptymalizuj I/O dysku (użyj szybszego magazynu lub przełącz z qcow2 na raw) oraz zainstaluj sterowniki virtio w systemie gościa.
Q6: Mam problemy z ustawieniami sieci. Co powinienem sprawdzić?
A6: Użyj virsh lub brctl, aby sprawdzić status sieci. Przejrzyj i w razie potrzeby odtwórz wirtualne sieci lub edytuj ustawienia mostka przy pomocy Netplan lub NetworkManager.
Q7: Czy można budować klastry lub rozwiązania HA z KVM?
A7: Tak. Możesz połączyć KVM z narzędziami takimi jak Pacemaker, Corosync i współdzielone przechowywanie (NFS, iSCSI itp.), aby umożliwić klastry wysokiej dostępności (HA) i migrację na żywo maszyn wirtualnych. Wymagana jest zaawansowana wiedza.



