Nova (OpenStack Compute) gives us agility and flexibility for computing infrastructures. Virtualization plays an important role in Nova to provide those agility and flexibility; however, there is a performance penalty caused by virtualization. For example, there is significant performance degradation for response time and context switch on virtualized servers compared to bare-metal servers. Some (non-x86 based) machine architectures of interest to technical computing users have either poor or non-existent support for virtualization. Also some users want to use bare-metal machine itself w/o virtualization. One alternative to using virtualization to provision hardware in a cloud environment is to do bare-metal provisioning: rebooting the machine to a fresh system image before handing over control to the user, and wiping the local hard drive when the user is done with the resources.
NTT docomo and USC/ISI are proposing "General Bare-Metal Provisioning Framework on OpenStack (http://wiki.openstack.org/GeneralBareMetalProvisioningFramework)" to solve the problems. In the framework, we extended legacy schedulers to be able to provision an instance to both virtual and bare-metal machines. We also introduced a new nova-compute node that can manage several bare-metal machines. We embedded fault-tolerance of the nova-compute, since the failure of the nova-compute affectes to several bare-metal machines. x86_64 and TILEPro64 machines have already supported and more cpu architectures can be supported by adding CPU specific drivers to the nova compute node (e.g. power management and OS installation).
Using this, we can install VM image to a bare-metal machine directly using exact same API used in Nova. Since there is no hypervisor that isolates users from underlying resources, we integrated several components to achieve the same isolation level as provided by Nova. We replaced the following Nova functions to manage bare-metal machines.
1. Turn the power on and off -> IPMI (PXE) or PDU (non-PXE)
2. VM image provisioning -> PXE or non-PXE Boot
3. Network isolation -> Quantum + OpenFlow
4. iSCSI isolation -> IP access limitation
5. Console Access -> Serial over LAN
We believe this function gives several benefits to users.
1. A user can provision an instance to a virtual machine and a bare-metal machine through the same API. Therefore, we can use all the ecosystem created on top of Nova for a bare-metal server provisioning. For example, we can extend/shrink Nova Compute nodes based on a resource utilization using Auto-Scaling for VM.
2. We can migrate an instance from a virtual machine to a bare-metal machine based on a server load.
3. We can manage/update Nova infrastructure using Nova.
4. Various heterogeneous architectures (e.g. ARM, GPU) can be incorporated into the cloud with the bare-metal provisioning technique. We have shown provisioning the systems with x86_64 and TILEPro64 processors as bare-metal machines.
During the presentation, we will explain the current architecture proposed for grizzly release and a way of supporting new CPU architectures. We will also demonstrate auto-scaling of Nova compute by using this function.