My Take on Creating Windows Server 2008 R2 Image for OpenStack

I started to follow this guide since it felt like the best one found from the Google.

At first I had problems with finding a KVM-supported virtual machine. My laptop supports Intel VT-x, so I knew it should be possible. At first I tried Virtualbox, which I already had installed on this laptop, but after some testing, I found out that VirtualBox doesn’t have support for nested virtual machines. The request for this has been open for 4 years! After this I tried my Ubuntu VM on ESXi environment, but it wasn’t enabled there either. Lastly, I solved the problem with VMware Player. Luckily the engineers at VMware had decided to built the support for nested virtualization in their products.

The next problem I faced was with the VNC connection to the Windows Server. For some reason it decided to show only a small area of the Windows Server, which can be seen from the picture below. The map network drive box is cut off at the side and the bottom. This caused some problems, since you couldn’t really see much of the screen. I managed to install the Red Hat VirtIO ethernet drivers, so the Internet would work on it. I also enabled remote desktop connection and disabled the firewall.

Uploading to Glance was easy and there weren’t any problems with it. The OpenStack environment is running on Folsom release.

At first I tested the image with tiny flavor: 512MB RAM, 1 VCPU, 0GB Root Disk, 0GB Ephemeral Disk. It booted up fine and once a floating IP was assigned to it, you could use RDP and connect to it. This flavor doesn’t give you much to do since it only holds the 15GB base image and half of that is used by the Windows Server itself.

After this I tested 2nd flavor: 2GB RAM, 1 VCPU, 10GB Root Disk, 20GB Ephemeral Disk. This flavor gave me an error instantly. It took me a little while to realize that the base image I created had 15GB disk. There is no way it can fit on the 10GB root disk on 2nd flavor. Kind of a newbie mistake, but we learn from our mistakes, right? If you give a bigger root disk than the base image, you need to expand the base image or create a new drive from the unused space.

Windows Server shows the ephemeral disk as offline at first, so you have to put it online first. Then you have to initialize it and then format and assign a drive letter for it. Then it’s ready to use.

The only problem I have is that the Volumes can’t be attached to the Windows instance. OpenStack suggests /dev/vdc/ as a mounting path, and since it’s a path that is used on Linux machines, it won’t work with Windows. Using some other name doesn’t work either, e.g. “F:”.

My only problem has been solved with a single command. After the command below, the Windows Server could see the empty, offline volume that was attached via CLI. Attaching a volume to Windows instance doesn’t work on Horizon, it errors out instantly.

nova volume-attach <server> <volume> <device>