Skip to content

Change default RootDiskController from ide to scsi for VMWare guests #12041

@daviftorres

Description

@daviftorres

problem

Environment

  • CloudStack: 4.20.2
  • VMware: 7.0.3

Issue

When a VMware zone is deployed, the default CloudStack template does not define the disk controller.

Image

As a result, new instances get rootDiskController=ide and dataDiskController=osdefault.

Image

However, inside the guest OS, the disk actually appears as SCSI, since VMware defaults to SCSI.

Image

Problem

If you try to "Override root disk size" or "Override root disk offering" during instance creation, it fails.

This happens because CloudStack “guesses” the controller type as IDE, as it’s not defined in the template.

Image Image Image

After creation, resizing of a volume also fails with the same error.

Image

Solution

Add a custom setting to define the controller explicitly rootDiskController=scsi.

Image

After this, new instances will be created successfully, with the correct controller automatically applied.

Image

If the instances were already created, you don’t need to recreate them, changing the controller setting to scsi will resolve the issue.

Notes

Inside the guest, disks still appear as SCSI, confirming that VMware uses SCSI by default.

Image

Additionally

The default template (which uses LVM and ext3) does not automatically expand to match the resized volume.

Image Image

To simplify administration I would recommend a new template to be the default pulled one:

  • Debian (like the System VMs) instead of CentOS.
  • Avoid LVM because it adds complexity for basic tasks (like expanding the root filesystem).
  • Swap files can replace swap partitions with similar performance.
    • Swap partitions at the end of the disk make resizing filesystem a real pain.

For generic templates, consider omitting swap entirely and users can add it later if needed.

versions

The versions of ACS, hypervisors, storage, network etc..

The steps to reproduce the bug

...

What to do about it?

As far as I know this template was created 15 years ago ;-)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions