Virtuelle Laufwerke
Virtuelle Maschinen können mit virtuellen Laufwerken (Block-Storage-Devices) konfiguriert werden. Diese können wiederum als virtuelle Festplatten (nvme, ahci-hd oder virtio-blk) oder als virtuelle CD-ROM-Laufwerk (ahci-cd) verwendet werden.
Der folgende Aufruf startet die virtuelle Maschine samplevm
mit einem emulierten NVMe-Laufwerk und einem virtuellen AHCI-CD-ROM-Laufwerk:
doas bhyve \
-c sockets=1,cores=2,threads=1 \
-m 2G \
-l bootrom,/vms/samplevm/BHYVE_BHF_UEFI.fd,/vms/samplevm/EFI_VARS.fd,fwcfg=qemu \
-s 0,hostbridge \
-s 2,fbuf,rfb=0.0.0.0:5900,w=1024,h=768 \
-s 3,xhci,tablet \
-s 10,nvme,/vms/samplevm/disk0.img \
-s 15,ahci-cd,/vms/samplevm/os-installer.iso,ro \
-s 31,lpc \
-H -P -A \
samplevm
Die resultierende VM-Konfiguration sieht wie folgt aus:
Beide Laufwerke nutzen als Datenspeicher reguläre Dateien als Disk-Image bzw. ISO-CDROM auf dem TwinCAT/BSD-Host. Beide Dateien müssen vor dem Aufruf von bhyve existieren. Alternativ können auch Block-Geräte wie ZFS-Volumes als Datenspeicher übergeben werden (siehe: ZFS-Volumes als Datenspeicher für virtuelle Festplatten).
Um Gastbetriebssystemen die konfigurierten Laufwerke über ACPI bekannt zu machen, muss zusätzlich der Parameter -A
übergeben werden.
In dem Beispiel oben, wird die Disk-Image-Datei /vms/samplevm/disk0.img
als Datenspeicher für die virtuelle Festplatte genutzt (siehe: Disk-Image Dateien als Datenspeicher für virtuelle Festplatten).
Auf die Datei /vms/samplevm/os-installer.iso
wird nur lesend zugegriffen. Entspricht das Speicherabbild von os-installater.iso
einem bootfähigem ISO-Abbild kann so z.B. die Installation eines Betriebssystems innerhalb der virtuellen Maschine gestartet werden (siehe: Debian Linux als Gastbetriebssystem installieren).
Beide Dateien sind in diesem Beispiel im Verzeichnis /vms/samplevm gespeichert, das zum zuvor erstellten ZFS-Dataset zroot/samplevm gehört. Das ZFS-Dataset dient somit als Speicherort für die persistenten Daten der virtuellen Maschine. Somit können ZFS-Snapshots zum Sichern und Wiederherstellen der Daten genutzt werden.