qemu-toolkit-overview
- architecture and philosophy of qemu-toolkit
This is a toolkit for running qemu on OmniOS/Illumos. Features:
Here's a sample configuration file:
virtual_machine "vm_name" do
# Network configuration: vnic via igb1
nic 'eth0', macaddr: '2:8:20:52:a6:7e', via: 'igb1'
# Disks: via iSCSI iqn
iscsi_target 'iqn.2010-01.com.qemu-toolkit:vm_name', "10.0.30.1"
# 4 SMP CPUs.
cpus 4
end
On-disk layout is as follows:
foo base zfs dataset
foo/disk1 first disk, zvol block device
foo/disk2 second disk, zvol block device
Using this toolkit, you can deploy your virtual machines in one of two ways:
In this architectural style, you use both tools (storadm(1) and vmadm(1)) on the same machine. To create a virtual machine from scratch, you would use the following sequence of commands:
$ storadm create pool1/foo 10G
$ vmadm create foo
$ vmadm start foo --bootiso=installation-disk.iso
This would create a base dataset pool1/foo with one 10G block device as root
disk. It then creates a file foo.rb
below /etc/qemu-toolkit/
that defines
base attributes for the virtual machine. Finally, starting the machine using
the --bootiso
parameter would allow you to install a base system to the virtual
machine.
Here you use two machines, one as storage host and one as VM host. The virtual machines run on host A, but all storage is provided for by host B. Here's a typical sequence of commands to create a virtual machine from scratch in this scenario:
Machine B:
$ storadm create pool1/foo 10G
$ storadm export pool1/foo
Machine A
$ vmadm create foo
# Edit foo.rb at this point to include a valid iqn + IP pair for host B
$ vmadm start foo --bootiso=installation-disk.iso
This assumes that you've got iSCSI set up on both machines. (initiator on A, target on B) While this configuration is certainly more complex than the all-local one above, it is also more flexible to administer.
qemu-toolkit-overview(7), qemu-toolkit-install(7), qemu-toolkit-configuration(7), storadm(1), vmadm(1), README(7)