IBM Cloud recently released support for VPC virtual server instance (VSI) boot volumes larger than 250GB when using the second-generation sdp storage profile. However, this release did not include any increase in size restrictions for VSI images. This is primarily due to limitations of the general-purpose storage profile which shares the same image namespace.
If you need to create a VSI from an image whose allocated space is larger than 250GB, here is how to accomplish that:
Operating system and licensing
First, determine whether the operating system and licensing for your image is listed among the stock images in the IBM Cloud catalog. If it is, then you can skip this step. If it is not (for example, you need Windows BYOL or you need to label it as a Generic OS), then you must first create a custom image smaller than 250GB.
For this purpose it is sufficient to create a small qcow2 volume with blank data. You can follow the documentation to upload this to Cloud Object Storage (COS) and create an image. Be sure to specify your required OS and licensing.
Create original boot volume

Next we need to create a boot volume of the desired size. For this purpose we will create a throwaway VSI but keep its boot volume. We will call this the “original boot volume”:
- Select the appropriate OS image (if you created a custom image in the previous step, select this). Note that your VSI will fail to boot if you are using a blank qcow2 image, but that is okay.
- Make sure that your boot volume uses the
sdpstorage profile. - Select your required boot volume size (e.g., 1000 GB) and performance.
- Ensure that you set Auto-Delete to Disabled for this boot volume. This will preserve the original boot volume after you delete the VSI.

Delete the VSI once it has started.
Copy image to original boot volume

Now create a new worker VSI that you will use to write your image to the original boot volume. Ensure that the boot volume for this worker VSI is large enough to account for any scratch space you need. For example, if you plan to download a qcow2 file which you will then write to the original boot volume, you should provision enough space to hold the qcow2 file.

After the worker VSI has started, view its details. On the Storage tab, click Actions | Attach. Select the original boot volume and attach it to the worker VSI. Note that after attachment it has has Auto-Delete disabled.
Now probe the devices on the worker VSI to discover where the original boot volume was attached. If your worker is a Linux system, it might typically be attached as /dev/vdb or /dev/vdd, among several other small block devices that are attached for cloud-init purposes. You might discover the original boot volume by querying its size:
for x in /dev/vd*; do echo "$x - $(blockdev --getsize64 $x)"; done

Next, populate this block device with your image content. For example, you might use COS as a means to download your qcow2 file to the worker VSI, and then use qemu-img to convert from qcow2 to raw format:
qemu-img convert -f qcow2 -O raw appliance.qcow2 /dev/vdb
At this point I like to ensure that all buffers are flushed to disk:
blockdev --flushbufs /dev/vdb

Now detach the original boot volume from the worker VSI, then delete the worker VSI.
Deploy your image
At this point you have two options:
Singleton

If you only need to deploy one instance of this image (e.g., it is a migrated virtual machine rather than a repeatable template), then you can create a new VSI and choose the original boot volume as your image. Note well that you need to configure this on the image configuration rather than the boot volume configuration. In the image selection dialog there is a tab containing your “Existing volume” list, where you should find the unattached original boot volume.
Repeatable

If you need to deploy this image repeatedly, you should first create a snapshot of the original boot volume. This snapshot will function just like a repeatable boot image.
Find the original boot volume in the IBM Cloud block storage volumes list and choose Actions | Create snapshot. You can safely delete the original storage volume once the snapshot is complete. Then you can select the snapshot as part of the image configuration for any new VSI.
Miscellany
All of the usual considerations apply for boot images, such as the availability of cloud-init and the need for virtio drivers, as well as boot mode considerations (IBM Cloud currently infers BIOS vs. UEFI based on whether the volume is formatted using MBR or GPT). For some treatment of these considerations you can read the IBM Cloud documentation on custom images or my article on virtual machine migration.






