The product and development team that delivers new features on IBM Cloud Virtual Private Cloud recently introduced a feature to create a virtual server instance (VSI) using an existing volume (i.e., a boot volume that is detached from a previously deployed VSI). This feature allows you to delete a VSI, but keep the boot volume with all its installed software and configuration for future reuse. I became interested in this feature as a possible solution to a problem I encountered in one of my deployed solutions.
In a development environment, I deployed three (3) VSIs, installed and configured an application. The initial configuration made use of a VSI profile without instance storage. As I was testing the solution, it became apparent that I should have used a profile with instance storage to benefit from the low-latency and higher disk I/O for some I/O intensive processing of the application. Although the option does exist today to resize a VSI to a different profile, it is not currently possible to resize to a profile that includes instance storage.
An instance with a profile that does not include instance storage cannot be resized to a profile that does include instance storage (IBM Cloud docs).
Maybe, now, there is a way.
The recently introduced feature to create a VSI from an existing volume may just be what I need to be able to move these VSIs without reinstalling my application. I need a small test scenario to confirm I can execute the move without experiencing any data lost and that the installed software will continue to work as expected. I started by making some small changes to a Terraform template I previously used in the “Automate the Configuration of Instance Storage on a Linux-Based VSI” blog post. The changes were to create the VSI using a profile that does not contain the instance storage. The modifications to the repository can be found here. I followed these steps to check against my goal:
If you have feedback, suggestions, or questions on this post, please reach out to me on LinkedIn. You can also open GitHub issues on the related code samples for clarifications.