March 20, 2012 | Written by: IBM Cloud Staff
Share this post:
By Antonio di Cocco
IBM SmartCloud Provisioning is an infrastructure-as-a-service cloud able to work with various types of hypervisors. You can easily install and configure new compute nodes to run your virtual images on KVM, VMware and Xen.
This is a very interesting sentence, and it seems to be very useful. The first time I read it, I thought: “Do I need to have three different images? Can I have the same image running on any hypervisor?” Answers are yes to both questions. Depending on how you run your image you might need to have different images for different hypervisors or just use a single image regardless of the underlying hypervisor.
Before going deeper on how IBM SmartCloud Provisioning deploys virtual images, I discuss various hypervisors. Each of them has its own peculiarity, allowing you to leverage various features, implemented in various ways. This leads us to deal with various hypervisor limitations. The following limitations are the most common:
- Only VMware can handle SCSI devices.
- Only KVM and Xen can handle virtio drivers.
- VMware uses a proprietary agent inside the guest OS (VMware tools), which does not work with Xen or KVM.
- VMware uses the VMDK file format, which is a proprietary format.
Any of these differences can prevent an image from working on any hypervisor. It is clear that if you do not pay attention to how you create your base images, you might need separate images for the different hypervisors. So, the next step is understanding how we should create a “magic image” that is able to run everywhere.
First point is to figure out a list of similarities between the various hypervisors:
- Format: Any hypervisor type supports the raw format.
- Device type: Any hypervisor type supports an IDE device.
- OS configuration: Hypervisors do not require specific configurations, but the manager might.
Working with IBM SmartCloud Provisioning, you will not have any issue from any of the previous points. In fact, before creating a base image you should simply follow a few rules to ensure portability.
The base image requires specific OS configuration regardless of the underlying hypervisor. You can find all needed information for how to build your image at the information center:
It is important to use raw format for the initial image. Here we have an interesting problem, which is how to create a VMware image in raw format. The answer is very simple: We are creating a fully portable image, so you can use KVM to build such a master image and then run it everywhere.
At this point, we have our raw image, fulfilling all requirements from the hypervisor manager. What is next step? You must register it into IBM SmartCloud Provisioning. To do that, you may use either the administrative UI or CLI. Regardless of the interface you choose, remember to use the following settings during registration:
- Use raw type
- Use IDE device
- Do not enable virtio
You finally have a fully portable image. IBM SmartCloud Provisioning will decide by itself which compute node is the most appropriate to run your “magic image.”
Although the described process is very easy, there might be some cases where you cannot follow it. This is just in case you already have your image in a proprietary format, and you need to use them. In this case, you have a Virtual Image Library to help you. It is a very useful IBM SmartCloud Provisioning component that is able to manage images federating different hypervisors. It has the capability to check an image into its own repository so that you can then check the image out to a different federated virtualization environment. And during this process it will convert the image format for you.
Using Virtual Image Library, you will be able, for example, to check in a VMware image and then check the same image out to IBM SmartCloud Provisioning, resulting in a raw format image. Next interesting question is if the image will run or not. The answer strongly depends on the compute node type and image configuration. For what I have discussed, you should care about the following considerations:
- OS configuration: As I said, IBM SmartCloud Provisioning requires images to have some OS configuration. To have a final working image, you must ensure that the initial VMware image has all the required configuration information before starting to import it into the Virtual Image Library. Otherwise it will not be able to start (for example if the image does not have DHCP configured, it will never get a valid IP).
- Device type: If you only have KVM compute node within your IBM SmartCloud Provisioning, an image using a SCSI device will not be able to run at all. To have it running, you must have at least one VMware compute node. If the initial image is using an IDE device, you will not have any trouble.
In addition to image format conversion, Virtual image Library is also able to modify a Windows device driver. In the process of moving an image from VMware to Virtual Image Library and then to IBM SmartCloud Provisioning, the application changes the Windows configuration, allowing it to run in any hypervisor.
Additional information about the prvious topics can be found at IBM information center pages: