VMWARE LINUX VMS → STACKIT · GUIDE
Migrating Linux virtual machines from VMware to STACKIT
A Linux VM reaches STACKIT in one of two ways: convert its boot disk to qcow2 or raw, import it as an image and start a server from it, or rebuild the machine from a STACKIT public image with the same provisioning. Further disks become volumes whose data you copy. StackToIT reads the RVTools export of eight Linux hosts, drafts servers, volumes and interfaces, and marks what only you can settle: image, machine type, boot mode, guests past support.
The migration in order
Inventory the Linux estate
Filter vInfo on the guest OS. The column OS according to the configuration file drives the end-of-support check, the VMware Tools column is the one to compare it with.
Choose image or rebuild per distribution
Compare each guest with the STACKIT public image list. A listed distribution can be rebuilt from its public image. One that is not listed, or past support, needs an upgrade first or a custom image. The table below does this for the demo estate.
Consolidate snapshots and shut down cleanly
Only the current state of a VM is migrated. The run notes this for every machine. Consolidate snapshots first and stop the guest in a controlled way before you copy the disk.
Convert the boot disk
STACKIT accepts raw, qcow2 and iso. A tool such as qemu-img converts a VMDK, for example qemu-img convert -O qcow2 source.vmdk boot.qcow2. The engine does not run it.
Import the image
Create the image through the IaaS API, upload the file to the upload address that comes back, and wait until the image state is AVAILABLE. Set boot mode on the image: BIOS or EFI is the architect's call, and the run lists it as an open setting.
Fill the variables and apply to a test project
The draft asks for the image id and the machine type of each server and for the performance class of the volumes. Apply it to a test project first.
Copy the data of the extra disks
Each further disk is an empty volume until you copy its data. StackToIT never moves data; choose the method per volume.
Adjust the guest, test, cut over
Replace the VMware guest components, check the network names and mounts, then test and switch. The ledger below lists the checks.
Eight Linux hosts, three routes
| Guest in the export | On the STACKIT public image list? | Route to plan |
|---|---|---|
| web-ubu22 · Ubuntu 22.04 | Yes, Ubuntu 22.04 is listed | Rebuild from the public image or convert the disk |
| web-ubu20 · Ubuntu 20.04 | Yes, Ubuntu 20.04 is listed (without an ARM64 variant). STACKIT says it provides only the latest and still maintained versions | Not flagged: the configuration-file column reads only Ubuntu Linux (64-bit), so the run had no release to check. Check the vendor lifecycle, then rebuild, upgrade or convert |
| app-rhel9 · RHEL 9 | Yes, RHEL 8 to 10 | Rebuild or convert. STACKIT licenses its RHEL public images through its Red Hat Enterprise Linux service; for a converted disk the licence is yours |
| app-rhel7 · RHEL 7 | No | Not flagged by the run. Check the vendor lifecycle, then upgrade or import a custom image |
| old-cent7 · CentOS 7 | No, only CentOS Stream 9 and 10 | Flagged as past support. Upgrade first, or a custom image at your own risk |
| db-deb12 · Debian 12 | Yes, Debian 11 to 13 | Rebuild or convert. Four disks, so plan the volume copies |
| sap-sles15 · SUSE Linux Enterprise 15 | No, the page lists openSUSE 16.0 only | Custom image. Licensing of customer images is yours |
| tools-ol8 · Oracle Linux 8 | No | Custom image, or rebuild on a listed distribution. It is powered off, so ask whether it is needed |
Public image list as of November 2026, from the STACKIT operating system images page for Linux (read on 4 November 2026). STACKIT states that the images are not customized by STACKIT, that it licenses none of the Linux images except Red Hat Enterprise Linux, and that licensing of images you bring is yours.
End of support is checked, but only for some guests
A small RVTools export of eight Linux hosts written for this page and assessed by StackToIT on 4 November 2026. Left: the vInfo rows of old-cent7 and app-rhel7. Right: the findings recorded for them in assessment.json (finding identifiers left out).
VM,Powerstate,Template,CPUs,Memory,NICs,Disks,Provisioned MiB,In use MiB,Primary IP Address,Datacenter,Cluster,Host,Folder,Annotation,OS according to the configuration file,OS according to the VMware Tools,Firmware,Path,VM UUID
app-rhel7,poweredOn,False,4,8192,1,1,51200,25600,10.70.20.22,DC-Sued,CL-Linux,esx42,linux,,Red Hat Enterprise Linux 7 (64-bit),Red Hat Enterprise Linux Server 7.9,bios,[ds-linux-01] app-rhel7/app-rhel7.vmx,7003-dddd-0004
old-cent7,poweredOn,False,2,4096,1,1,40960,20480,10.70.20.23,DC-Sued,CL-Linux,esx43,linux,,CentOS 7 (64-bit),CentOS Linux 7 (Core),bios,[ds-linux-01] old-cent7/old-cent7.vmx,7003-dddd-0005[
{
"id": "vm.old-cent7",
"findings": [
{
"severity": "warning",
"message": "The guest operating system is past its vendor's end of support. STACKIT public images will not cover it; migrate it as a custom image at your own risk or upgrade it first."
},
{
"severity": "info",
"message": "Not verifiable statically (snapshots not visible): The VM has snapshots; consolidate them before export — only the current state is migrated."
},
{
"severity": "info",
"message": "Legacy E1000 network adapter; the guest's network configuration must be checked after conversion."
}
]
},
{
"id": "vm.app-rhel7",
"findings": [
{
"severity": "info",
"message": "Not verifiable statically (snapshots not visible): The VM has snapshots; consolidate them before export — only the current state is migrated."
}
]
}
]CentOS 7 gets a warning
The run says the guest is past its vendor's end of support and points to a custom image at your own risk or an upgrade first.
RHEL 7 gets none
In this run only the snapshot note appears for app-rhel7. The check did not flag RHEL 7, although its configuration-file column names the release, so the absence of a warning is not a statement that a guest is supported. Look every release up in the vendor lifecycle.
E1000 adapter
old-cent7 also uses an E1000 adapter. The run asks you to check the guest network configuration after conversion.
A database host with four disks
From the same run. Left: the four disks of db-deb12, one of them 2 TiB. Right: the server and the three volumes the engine drafted (the volume attachment blocks between them are left out).
VM,Disk,Capacity MiB,Raw,Disk Mode,Sharing mode,Thin,Controller,Shared Bus,VM UUID
db-deb12,Hard disk 1,51200,False,persistent,sharingNone,False,SCSI controller 0,noSharing,7003-dddd-0006
db-deb12,Hard disk 2,1048576,False,persistent,sharingNone,False,SCSI controller 1,noSharing,7003-dddd-0006
db-deb12,Hard disk 3,2097152,False,persistent,sharingNone,False,SCSI controller 2,noSharing,7003-dddd-0006
db-deb12,Hard disk 4,262144,False,persistent,sharingNone,False,SCSI controller 3,noSharing,7003-dddd-0006resource "stackit_server" "vm_db_deb12" {
project_id = var.project_id
name = "db-deb12"
machine_type = var.vm_db_deb12_machine_type
availability_zone = var.availability_zone
boot_volume = {
source_type = "image"
source_id = var.vm_db_deb12_image_id
size = 50
}
network_interfaces = [stackit_network_interface.vm_db_deb12_nic1.network_interface_id]
}
resource "stackit_volume" "vm_db_deb12_disk2" {
project_id = var.project_id
name = "db-deb12-disk2"
availability_zone = var.availability_zone
size = 1024
performance_class = var.vmware_volume_performance_class
}
resource "stackit_volume" "vm_db_deb12_disk3" {
project_id = var.project_id
name = "db-deb12-disk3"
availability_zone = var.availability_zone
size = 2048
performance_class = var.vmware_volume_performance_class
}
resource "stackit_volume" "vm_db_deb12_disk4" {
project_id = var.project_id
name = "db-deb12-disk4"
availability_zone = var.availability_zone
size = 256
performance_class = var.vmware_volume_performance_class
}Only the boot disk becomes an image
The 50 GiB first disk is the boot volume. The 1, 2 and 0.25 TiB disks are volumes: no image import for them, but a data copy.
Volume sizes follow the source
1048576 MiB becomes 1024 GiB, 2097152 MiB becomes 2048 GiB. Confirm each size against what the data really needs.
The image limit
The STACKIT custom image how-to states a maximum image size of 70 GB. The page does not say whether that means file size or virtual size, so test it with your largest boot disk. sap-sles15 has an 80 GiB boot disk.
The image and the machine type are inputs
From the same run. Left: the vInfo row of sap-sles15. Right: the two variables the draft declares for its server.
VM,Powerstate,Template,CPUs,Memory,NICs,Disks,Provisioned MiB,In use MiB,Primary IP Address,Datacenter,Cluster,Host,Folder,Annotation,OS according to the configuration file,OS according to the VMware Tools,Firmware,Path,VM UUID
sap-sles15,poweredOn,False,8,65536,1,2,491520,245760,10.70.30.41,DC-Sued,CL-Linux,esx42,linux,,SUSE Linux Enterprise 15 (64-bit),SUSE Linux Enterprise Server 15 SP5,bios,[ds-linux-01] sap-sles15/sap-sles15.vmx,7003-dddd-0007variable "vm_sap_sles15_image_id" {
type = string
description = "STACKIT image converted from the boot disk of VM sap-sles15 (qcow2 or raw)."
}
variable "vm_sap_sles15_machine_type" {
type = string
description = "STACKIT machine type replacing VM sap-sles15 (source 8 vCPU / 64 GiB). See https://docs.stackit.cloud/products/compute-engine/server/basics/machine-types/"
}Size is stated, type is chosen
The description keeps the source size, 8 vCPU and 64 GiB. STACKIT machine types come in families with fixed CPU to memory ratios, such as 1:4 for general purpose and 1:8 for memory-optimized.
Where this machine does not fit neatly
db-deb12 has 8 vCPU and 48 GiB, which is neither 1:4 nor 1:8. Choose by what the database needs, not by the nearest label.
Boot mode is not in the draft
vInfo says efi or bios per machine. The run lists boot firmware as an open setting and says BIOS or EFI is a property of the uploaded image that the architect creates.
Guest checks before cutover (general practice)
VMware guest components
The run says VMware Tools, vmxnet3 and PVSCSI drivers are replaced by what the STACKIT image needs. Remove or disable the VMware tooling once the machine runs on STACKIT.
Storage and network drivers in the boot image
Before conversion check that the initial ramdisk can mount the root disk on virtual hardware that is not VMware. A missing driver there is a common reason a converted Linux guest does not boot.
Mounts by UUID
Replace device names such as /dev/sdb in fstab with UUIDs or labels. Attached volumes need not appear in the order of the old controllers.
Network interface names
Adapter names tied to the old hardware, for example in netplan, NetworkManager profiles or persistent rules, may no longer match. The interface keeps its IPv4 address from the export.
Access and first boot
STACKIT public images disable SSH password login by default and expect a stored key. For an imported disk, confirm which accounts and keys the guest already holds.
Licences and agents
Subscriptions, monitoring agents and backup agents tied to the old host need re-registration. Licensing of images you bring is your responsibility.
Decisions that stay with the architect
Rebuild or convert
Per machine. A rebuild gives a clean image on a listed distribution. A conversion keeps the exact system, including its history.
Machine type
Chosen from the STACKIT machine type page against measured load, not against the source size alone.
Boot mode
BIOS or EFI per image, matching the source firmware.
Powered-off machines
The draft writes no power state, and the run lists power-state as an open setting. Decide whether to migrate a powered-off VM at all.
Availability zone
The draft defaults to eu01-1. A person confirms the zone for each workload.
Volume performance class
One variable for the whole estate, so storage is decided in one place.
Questions about Linux VMs
Which disk formats does STACKIT accept?
The custom image how-to lists raw, qcow2 and iso. For any other format, convert first, for example with qemu-img. StackToIT plans this step but does not run it.
Does StackToIT convert disks or copy data?
No. It reads the export and writes a draft and a plan. Its data movement note says StackToIT never moves data, and data on the disks of a server is not looked at.
Can I migrate many Linux VMs with a replication tool?
Possibly. The run suggests replication with Coriolis for many VMs, and STACKIT does publish an installer that deploys and maintains a Cloudbase Coriolis appliance on STACKIT. Neither the run nor that installer’s README says which source platforms Coriolis supports towards STACKIT, so confirm that before you plan around it.
Does the run flag every unsupported Linux release?
No. In this estate it flagged CentOS 7 and left RHEL 7 unflagged. Treat the warning as a help, not as the list of what needs an upgrade.
What keeps its IP address?
Each interface in the draft carries the IPv4 address from the export, so a machine keeps its address when it joins a network with the old range. Without an address in the export, no fixed address is set.
Sources
Your next move: STACKIT.
Tell us about your estate. We show you what StackToIT delivers for it: target architecture, Terraform artifacts and a structured migration plan.