CloudStack uses system vms extensively to offload the control plane ("management server") from being in the data path. There are 3 kinds of system vms:
Some of the virtues of these system vms are:
However the system vms are intertwined into the 'bootstrap' phase of the cloud and often times result in failure to start the cloud.
Another issue is that certain choices are made inside these system vms (for e.g., mount options for the secondary storage) that may not be ideal or optimal for the cloud environment.
A third issue is that the dependence on system vms hampers the introduction of support for new hypervisors.
Finally the requirement to bring up system vms prior to first user vm booting leads to longer development-debug cycles.
To avoid these issues while preserving the benefits of the system vms, it is proposed:
The secondary storage vm runs a java daemon that starts up on boot of the SSVM. This java daemon connects back to the management server. The daemon was originally designed to run alternately as a standalone process (just like the KVM agent), but over time the execution environment has been assumed to be the system vm. QuickCloud will bring back that ability
The concerns and the approach are the same as Secondary Storage
DHCP and DNS services are traditionally provided by the dnsmasq service running inside the system vm.
\[At present QuickCloud does not use any DHCP services\] 1. Get the DevCloud2 VM up and running. 2. Mount the secondary storage export from the DevCloud2 on to your laptop: |
export SS_MOUNT= mount-point-for-sec-storage e.g., ~/secondary-storage mkdir $SS_MOUNT mount -t nfs 192.168.56.10:/opt/storage/secondary $SS_MOUNT mount -t nfs -o resvport 192.168.56.10:/opt/storage/secondary $SS_MOUNT #Mac OS X |
3. Checkout the 'quickcloud' branch and build it and run it
git checkout quickcloud mvn -P developer,systemvm clean install -Dquickcloud mvn -P developer -pl developer,tools/devcloud -Ddeploydb mvn -pl :cloud-client-ui jetty:run |
In a different terminal, execute the quickcloud zone creation script via marvin
mvn -P developer -pl tools/devcloud -Dquickcloud |
4. Open two more terminals. In the first terminal
cd services/secondary-storage |
In the second terminal
cd services/console-proxy/server |
5. In the secondary-storage terminal
mvn exec:java |
In the console-proxy terminal,
echo "paths.pid=." > conf/environment.properties echo "developer=true" >> conf/agent.properties mvn exec:java -Pquickcloud |
6. Open the GUI and deploy a VM. Although the VM won't get an IP, you should be able to view the console and log in and set an ip.