System zarządzania dla FreeBSD bhyve maszyny wirtualne
Niektóre z głównych cech obejmują:
•Obsługa systemu Windows/UEFI
•Proste polecenia do tworzenia/uruchamiania/zatrzymywania instancji bhyve
•Prosty format pliku konfiguracyjnego
•Wirtualne przełączniki obsługujące vlans i automatyczne tworzenie urządzeń
•Wsparcie ZFS
•FreeBSD/MidnightBSD/NetBSD/OpenBSD/Linux wsparcie gości
•Automatyczne przydzielanie urządzeń konsolowych w celu uzyskania dostępu do konsoli gościa
•Integracja z rc.d startup/shutdown
•Obsługa restartów gości
•Zaprojektowany z myślą o wielu węzłach obliczeniowych + współdzielona pamięć (NFS/iSCSI/ite)
•Wiele magazynów danych
•Obsługa grafiki VNC i tmux (tylko 1.1+. Zobacz instrukcje wiki)
•Zależność wolna**
** Niektóre dodatkowe pakiety mogą być wymagane w pewnych okolicznościach -
•sysutils/grub2-bhyvejest wymagane do uruchomienia systemu Linux lub innych gości, którzy potrzebują bootloadera Grub.
•sysutils/bhyve-firmwaredo prowadzenia gości UEFI jest wymagane
•sysutils/tmuxjest potrzebny, aby użyć dostępu do konsoli tmux zamiast cu/nmdm
Dla większości użytkowników polecam użycie wersji w portach (1.1+). Główny rozwój dzieje się w gałęzi głównej na GitHub i może zawierać uszkodzone lub niekompletne funkcje.
Prosty przegląd poleceń potrzebnych do zainstalowania vm-bhyve i uruchomienia freebsd gościa. Zobacz poniższe sekcje, aby uzyskać więcej szczegółowych informacji.
1. pkg install vm-bhyve
2. zfs create pool/vm
3. sysrc vm_enable="YES"
4. sysrc vm_dir="zfs:pool/vm"
5. vm init
6. cp /usr/local/share/examples/vm-bhyve/* /mountpoint/for/pool/vm/.templates/
7. vm switch create public
8. vm switch add public em0
9. vm iso https://download.freebsd.org/ftp/releases/ISO-IMAGES/14.2/FreeBSD-14.2-RELEASE-amd64-bootonly.iso
10. vm create myguest
11. vm install [-f] myguest FreeBSD-14.2-RELEASE-amd64-bootonly.iso
12. vm console myguest
•Linia 1 Zainstaluj vm-bhvye
•Linia 2 Stwórz zestaw danych dla swoich maszyn wirtualnych. Jeśli nie używasz ZFS, po prostu utwórz normalny katalog.
•Linie 3-4 Włącz vm-bhyve w /etc/rc.conf i ustaw zestaw danych do użycia. Jeśli nie używasz ZFS, wystarczy ustawić $vm_dir="/my/vm/folder".
•Linia 5 Uruchom vm init polecenie utworzenia wymaganych katalogów w obszarze $vm_dir i ładowania modułów jądra.
•Linia 6 Zainstaluj przykładowe szablony, które są dostarczane z vm-bhyve.
•Linie 7-8 Utwórz wirtualny przełącznik o nazwie "public" i dołącz do niego interfejs sieciowy. Zastąp em0 z dowolnym interfejsem łączy twój komputer z siecią.
•Linia 9 Pobierz kopię FreeBSD ze strony ftp.
•Linie 10-12 Utwórz nowego gościa za pomocą default.conf szablon, uruchomić instalator i Następnie podłącz się do swojej konsoli. W tym momencie przejdź przez instalację jak zwykle. Poprzez określenie -f opcja przed poleceniem instalacji, gość będzie działać bezpośrednio na Twoim terminalu, więc console polecenie nie jest wymagane. (Niedźwiedź na uwadze, że nie wrócisz do terminala, dopóki gość nie zostanie całkowicie zamknięty)
Pobierz najnowszą wersję z GitHub lub zainstaluj sysutils/vm-bhyve
Aby zainstalować, wystarczy uruchomić następujące polecenie w katalogu źródłowym vm-bhyve
# make install
Jeśli chcesz prowadzić gości innych niż FreeBSD, będziesz potrzebować pakietu grub2-bhyve;
# pkg install grub2-bhyve
Przede wszystkim będziesz potrzebować katalogu do przechowywania wszystkich maszyn wirtualnych i konfiguracji vm-bhyve. Jeśli nie używasz ZFS, po prostu utwórz normalny katalog:
# mkdir /somefolder/vm
Jeśli używasz ZFS, utwórz zestaw danych do przechowywania danych vm-bhyve
# zfs create pool/vm
Teraz zaktualizuj /etc/rc.conf, aby włączyć vm-bhyve, i powiedz mu, gdzie znajduje się Twój katalog
vm_enable="YES"
vm_dir="/somefolder/vm"
Lub z ZFS:
vm_enable="YES"
vm_dir="zfs:pool/vm"
Ten katalog będzie określany jako $vm_dir w pozostałej części tego readme.
Teraz uruchom następujące polecenie, aby utworzyć katalogi używane do przechowywania konfiguracji vm-bhvye i załadować wszelkie niezbędne moduły jądra. To musi być uruchomione raz po każdym reboocie hosta, który jest zwykle obsługiwane przez skrypt rc.d
# vm init
Podczas tworzenia maszyny wirtualnej używasz szablonu, który określa, ile pamięci dać gościowi, ile rdzeni cpu, oraz konfiguracja sieci/dysku. Wszystkie szablony są przechowywane wewnątrz $vm_dir/.templates. Aby zainstalować przykładowe szablony, uruchom następujące polecenie:
# cp /usr/local/share/examples/vm-bhyve/* /my/vm/path/.templates/
Jeśli zajrzysz do wnętrza plików szablonu za pomocą edytora tekstu, zobaczysz, że są one bardzo proste. Ty może tworzyć tyle szablonów, ile chcesz. Na przykład możesz mieć web-server.conf, zawierający ustawienie dla serwerów internetowych lub freebsd-large.conf dla dużych gości FreeBSD i tak dalej. To jest zawartość domyślny szablon:
guest="freebsd"
loader="bhyveload"
cpu=1
memory=256M
disk0_type="virtio-blk"
disk0_name="disk0.img"
network0_type="virtio-net"
network0_switch="public"
Zauważysz, że każdy szablon jest ustawiony tak, aby utworzyć jeden interfejs sieciowy. Możesz łatwo dodać więcej sieci interfejsy poprzez powielanie dwóch opcji konfiguracji sieci i zwiększanie liczby. Ogólnie ty nie będzie chciał zmienić typu z "virtio-net", ale zauważysz, że pierwszy interfejs jest ustawiony na połączenie do przełącznika o nazwie "publiczny". Zobacz następną sekcję, aby uzyskać szczegółowe informacje na temat konfiguracji przełączników wirtualnych.
Polecam przeczytać stronę man lub sample-templates/config.sampledla pełnej listy obsługiwanego szablonu opcje i opis ich celu. Prawie wszystkie funkcje bhyve są obsługiwane i duża różnorodność można osiągnąć konfiguracje sieci/magazyny.
Po uruchomieniu gościa każdy interfejs sieciowy jest automatycznie podłączony do wirtualnego przełącznika w pliku konfiguracyjnym. Domyślnie wszystkie przykładowe szablony łączą się z przełącznikiem o nazwie "public", chociaż możesz użyć dowolnej nazwy. W poniższej sekcji przedstawiono sposób utworzenia przełącznika o nazwie "public" i skonfigurowania różnych ustawienia:
# vm switch create public
Jeśli chcesz tylko połączyć gości z fizyczną siecią, dodaj odpowiedni prawdziwy interfejs do przełącznika. Oczywiście musisz zastąpić em0 tutaj z poprawną nazwą interfejsu w systemie:
# vm switch add public em0
Jeśli chcesz, aby ruch gości był na określonej sieci VLAN podczas opuszczania hosta, określ numer vlan. Żeby się obrócić off vlans, wystarczy ustawić numer vlan na 0:
# vm switch vlan public 10
# vm switch vlan public 0
Możesz wyświetlić bieżącą konfigurację przełącznika za pomocą polecenia listy:
# vm switch list
Użyj jednego z następujących poleceń, aby utworzyć nową maszynę wirtualną:
# vm create testvm
# vm create -t templatename -s 50G testvm
Pierwszy przykład używa szablonu default.conf i utworzy obraz dysku 20GB. Drugi przykład określa szablon templatename.conf i informuje vm-bhyve, aby utworzyć dysk 50GB.
Będziesz potrzebował ISO, aby zainstalować gościa, więc pobierz jeden za pomocą polecenia iso:
# vm iso https://download.freebsd.org/ftp/releases/ISO-IMAGES/14.2/FreeBSD-14.2-RELEASE-amd64-disc1.iso
Aby uruchomić instalację gościa, uruchom następujące polecenie. vm-bhyve uruchomi maszynę w tle, więc użyj polecenia konsoli, aby połączyć się z nim i zakończyć instalację.
# vm install testvm FreeBSD-14.2-RELEASE-amd64-disc1.iso
# vm console testvm
Możesz również określić opcję pierwszego planu, aby uruchomić gościa bezpośrednio na terminalu:
# vm install -f testvm FreeBSD-14.2-RELEASE-amd64-disc1.iso
Po zakończeniu instalacji możesz ponownie uruchomić gościa z wnętrza konsoli, a on uruchomi się nowy system operacyjny (zakładając, że instalacja zakończyła się sukcesem). Dalsze restarty będą działać zgodnie z oczekiwaniami i gość może zostać zamknięty w normalny sposób. Gdy konsola używa polecenia cu, wpisz ~+Ctrl-D do wyjścia Wracając do swojego gospodarza.
Następujące polecenia uruchamiają i zatrzymują maszyny wirtualne:
# vm start testvm
# vm stop testvm
Podstawową konfigurację każdego komputera i stanu można przeglądać za pomocą polecenia listy:
# vm list
NAME GUEST LOADER CPU MEMORY AUTOSTART STATE
alpine linux default 1 512M No Stopped
c7 linux default 1 512M Yes [2] Stopped
centos linux default 1 512M No Stopped
debian linux default 1 512M No Stopped
fbsd freebsd default 1 256M No Stopped
netbsd generic grub 1 256M No Stopped
openbsd generic grub 1 256M No Stopped
pf freebsd default 1 256M Yes [1] Stopped
ubuntu linux default 1 512M No Stopped
wintest windows default 2 2G No Running (2796)
Wszystkie uruchomione maszyny można zatrzymać za pomocą polecenia stopall
# vm stopall
Na rozruchu hosta, vm-bhyve użyje polecenia "vm startall", aby uruchomić wszystkie maszyny. Możesz kontrola, którzy goście uruchamiają się automatycznie przy użyciu następujących zmiennych w /etc/rc.conf:
vm_list="vm1 vm2"
vm_delay="5"
Pierwszy definiuje listę maszyn do uruchomienia na rozruchu, a także kolejność ich uruchamiania. Drugi to liczba sekund do oczekiwania między rozpoczęciem każdego z nich. Zalecane ustawienie to 5 sekund, chociaż dłuższe opóźnienie jest przydatne, jeśli masz intensywnych gości dyskowych i nie chcesz, aby wszystkie uruchamiały w tym samym czasie.
Istnieje również polecenie, które otwiera plik konfiguracyjny gościa w domyślnym edytorze tekstu, co pozwala do łatwego wprowadzania zmian w konfiguracji. Należy pamiętać, że zmiany zaczynają obowiązywać dopiero po pełne wyłączenie i ponowne uruchomienie gościa
# vm configure testvm
Zobacz stronę man, aby uzyskać pełny opis wszystkich dostępnych poleceń.
# man vm
Możesz użyć obrazów w chmurze do tworzenia maszyn wirtualnych. The vm imgpolecenie pobierze obraz do magazynu danych i W razie potrzeby niekompresuj go (.xz, .tar.gz i pliki .gz są obsługiwane). Obraz powinien być w formacie RAW lub QCOW2. Aby skorzystać z tej funkcji, musisz zainstalować pakiet qemu-tools:
# pkg install qemu-tools
Aby uruchomić FreeBSD przy użyciu oficjalnego obrazu w chmurze:
# vm img https://download.freebsd.org/ftp/releases/VM-IMAGES/14.2-RELEASE/amd64/Latest/FreeBSD-14.2-RELEASE-amd64.raw.xz
# vm create -t freebsd-zvol -i FreeBSD-14.2-RELEASE-amd64.raw freebsd-cloud
# vm start freebsd-cloud
Aby wyświetlić listę pobranych obrazów:
# vm img
DATASTORE FILENAME
default CentOS-7-x86_64-GenericCloud-20180930_02.raw
default debian-9-openstack-amd64.qcow2
default Fedora-AtomicHost-28-1.1.x86_64.raw
default FreeBSD-14.2-RELEASE-amd64.raw
default xenial-server-cloudimg-amd64-uefi1.img
vm-bhyve ma podstawową obsługę dla zapewnienia konfiguracji chmury-init dla gościa. Możesz go włączyć z -Copcja do vm createdowództwo. Możesz również przekazać publiczny klucz SSH, który ma zostać wstrzyknięty do gościa z opcją -k <file>. Plik klucza publicznego może zawierać wiele publicznych kluczy SSH, jeden na linię, w authorized_keysFormat.
Przykład:
# vm create -t linux -i xenial-server-cloudimg-amd64-uefi1.img -C -k ~/.ssh/id_rsa.pub cloud-init-ubuntu
# vm start cloud-init-ubuntu
Starting cloud-init-ubuntu
* found guest in /zroot/vm/cloud-init-ubuntu
* booting...
# ssh ubuntu@192.168.0.91
The authenticity of host '192.168.0.91 (192.168.0.91)' can't be established.
ECDSA key fingerprint is SHA256:6s9uReyhsIXRv0dVRcBCKMHtY0kDYRV7zbM7ot6u604.
No matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.91' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-141-generic x86_64)
Scenariusz: Jeśli masz vm na jednym zpoolu i chciałbyś dodać do niego nowy wirtualny dysk, który znajduje się na innym zpoolu.
Ręcznie utwórz rzadki-zvol (w tym przypadku rozmiar 50G).
# zfs create -sV 50G -o volmode=dev "zpool2/vm/yourvm/disk1"
Dodaj go do pliku konfiguracyjnego vm. Należy pamiętać, że dla gości systemu Windows typ będzie musiał być ahci-hd, ponieważ nie ma kierowców virtio-blk.
# vm configure yourvm
disk1_name="/dev/zvol/zpool2/vm/yourvm/disk1"
disk1_type="virtio-blk"
disk1_dev="custom"
Uruchom ponownie swoją mm.
Zobacz sekcję Windows w Wiki
Jeśli używasz domyślnej powłoki csh / tcsh wbudowanej w FreeBSD, uruchomienie następującego polecenia powinno umożliwić autouzupełnianie do pracy dla wszystkich aktualnie obsługiwanych funkcji. Jest to szczególnie przydatne do oglądania i wypełnianie nazw plików gościa i ISO. Należy pamiętać, że występują trzy wystąpienia "/path/to/vm", które Należy zmienić katalog zawierający maszyny wirtualne.
Aby funkcje autouzupełniania były dostępne na stałe, dodaj następujące elementy do swojego $HOME/.cshrcplik. Więc albo wylogowanie/logowanie, lub uruchomienie source ~/.cshrcaby spowodować .cshrcplik do przeładowania.
complete vm \
'p@1@(list create install start stop console configure reset poweroff destroy clone snapshot rollback add switch iso)@' \
'n@create@n@' \
'n@list@n@' \
'n@iso@n@' \
'n@switch@(list create add remove destroy vlan nat)@' \
'N@switch@`sysrc -inqf /path/to/vm/.config/switch switch_list`@' \
'N@install@`ls -1 /path/to/vm/.iso`@' \
'N@nat@(off on)@' \
'p@2@`ls -1 /path/to/vm | grep -v "^\." | grep -v "^images"`@'