vm-bhyve

System zarządzania dla FreeBSD bhyve maszyny wirtualne

Niektóre z głównych cech obejmują:

** Niektóre dodatkowe pakiety mogą być wymagane w pewnych okolicznościach -

Zobacz wiki GitHub, aby uzyskać więcej informacji i przykładów.

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.

Szybki Start

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

Zainstaluj

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

Początkowa konfiguracja

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

Szablony maszyn wirtualnych

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.

Wirtualne przełączniki

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

Tworzenie maszyn wirtualnych

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

Korzystanie z obrazów w chmurze

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

Korzystanie z cloud-init

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)

Dodawanie dysków niestandardowych

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.

Obsługa systemu Windows

Zobacz sekcję Windows w Wiki

Autouzupełnianie

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"`@'