ORACLE CLOUD → STACKIT · GUIDE
OCI block volumes and custom images to STACKIT
A block volume becomes a STACKIT volume and a custom image becomes a STACKIT image, but neither moves by itself: the volume needs a performance class and a data-movement method you choose, and the image needs an export from Oracle Cloud and an upload to STACKIT. StackToIT assesses the Terraform for both, tells you which parts it can map and which it leaves to your architects, and puts the pieces in dependency order.
A block volume and a custom image, assessed
A demo estate written for this page and assessed on 4 November 2026 holds two volumes, a custom image, a backup policy and one server. Shown here: the 500 GB data volume. Values are copied from the run. assessment.json is written as a single line, so the pane shows selected fields of each unit, indented and nested as in the file, with the values unchanged.
resource "oci_core_volume" "data" {
compartment_id = var.compartment_id
availability_domain = var.availability_domain
display_name = "app-data"
size_in_gbs = 500
vpus_per_gb = 10
}{
"id": "oci_core_volume.data",
"wave": 1,
"result": {
"class": "RECONFIGURE",
"confidence": "LOW",
"target": {
"service": "STACKIT Block Storage"
},
"reason": "A block volume becomes a STACKIT volume. The performance setting does not carry over; choose a STACKIT performance class, and move the data at the host or from a backup."
}
}The performance setting does not carry over
vpus_per_gb has no STACKIT equivalent. The run says so and leaves you to choose a STACKIT performance class.
Five settings are yours
availability_domain, compartment_id, display_name, size_in_gbs and vpus_per_gb are listed as critical settings left to you. No STACKIT volume block is written; you set size and class yourself.
The image the run cannot map
The oci_core_image resource is not in the catalogue of this build. It is classified MANUAL_REVIEW, nothing of it is assessed or drafted, and the server that uses it is linked to it with a warning. assessment.json is written as a single line, so the pane shows selected fields of each unit, indented and nested as in the file, with the values unchanged.
resource "oci_core_image" "golden" {
compartment_id = var.compartment_id
display_name = "golden-app-image"
launch_mode = "PARAVIRTUALIZED"
image_source_details {
source_type = "objectStorageTuple"
namespace_name = "examplens"
bucket_name = "image-import"
object_name = "golden-app.qcow2"
source_image_type = "QCOW2"
}
}{
"id": "oci_core_image.golden",
"wave": 1,
"result": {
"class": "MANUAL_REVIEW",
"confidence": "LOW",
"reason": "oci_core_image is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type)."
}
}The move in order
The wave order comes from the run: image, volumes and backup policy first, then the server and the policy assignment, then the volume attachments.
1. Inventory what is attached
List every volume, its size, its performance setting, its backup policy and the instance it is attached to. The demo has a 500 GB volume at 10 VPUs per GB and a 100 GB volume at 0, attached to one server by two paravirtualized attachments.
2. Export the image, or find its source
Oracle can export a custom image to an Object Storage bucket as VMDK, VHD, VDI or QCOW2, or as an .oci file meant for other tenancies and regions. You need write access to the bucket, and the image is in the state Exporting until the file exists. If the file you originally imported is still in your hands, that file is the simpler starting point.
3. Convert and upload to STACKIT
STACKIT accepts raw, qcow2 and iso images up to 70 GB. For another format, convert with qemu-img convert -O raw. You create the queued image through the IaaS API, receive an image ID and a one-time upload URL that lapses after a few hours, upload the file with an HTTP PUT and check that the state is AVAILABLE.
4. Choose a performance class per volume
Pick from the STACKIT classes by IOPS and throughput, not by size: the limits of a class do not depend on volume size. Measure the real peak on the source before you choose.
5. Create volumes and move the data
The run says to move the data at the host or from a backup and records no mechanism: the size of the data, the downtime the business tolerates and the consistency the application needs decide it. The wave order puts the attachments last, so attach the data volumes once the server exists.
6. Recreate backups and verify
The OCI backup policy and its assignment are MANUAL_REVIEW. STACKIT documents snapshots, full backups and incremental backups for volumes; you define the schedule and retention again.
How the estate mapped
| OCI resource | STACKIT target | Class and wave |
|---|---|---|
| oci_core_image.golden | No target stated | MANUAL_REVIEW, wave 1 |
| oci_core_volume.data and .logs | STACKIT Block Storage | RECONFIGURE, wave 1 |
| oci_core_volume_backup_policy.daily | No target stated | MANUAL_REVIEW, wave 1 |
| oci_core_instance.app | STACKIT Compute Engine | RECONFIGURE, wave 2 |
| oci_core_volume_backup_policy_assignment.data | No target stated | MANUAL_REVIEW, wave 2 |
| oci_core_volume_attachment.data and .logs | No target stated | MANUAL_REVIEW, wave 3 |
All eight units have LOW confidence. The oci provider is not pinned by a lock file, which caps every unit at MEDIUM; the three catalogued units (both volumes and the server) drop further because they are linked to resources the catalogue does not know, and the five others are not in the catalogue at all. No STACKIT resource block is written for any of the eight.
Performance: where Oracle and STACKIT differ
Oracle scales performance with every gigabyte up to a cap per volume; STACKIT sets it per volume as a class, independent of size. The Oracle ceiling below is computed from Oracle's per-GB rates for the two demo volumes; the STACKIT figures are the EU01 classes on the service-plan page as of November 2026. That page lists no other region, so check the classes again if you land in EU02.
| Oracle tier (VPUs per GB) | Oracle rate and the demo volume | STACKIT class that covers it |
|---|---|---|
| Lower Cost (0) | 2 IOPS and 240 KB/s per GB, cap 3,000 IOPS and 480 MB/s. app-logs, 100 GB: about 200 IOPS and 24 MB/s | perf1: 500 IOPS, 50 MB/s (perf0, at 120 IOPS and 25 MB/s, sits below the IOPS ceiling) |
| Balanced (10) | 60 IOPS and 480 KB/s per GB, cap 25,000 IOPS and 480 MB/s. app-data, 500 GB: 25,000 IOPS (capped) and about 240 MB/s | perf14: 25,000 IOPS, 400 MB/s |
| Higher Performance (20) | 75 IOPS and 600 KB/s per GB, cap 50,000 IOPS and 680 MB/s | Up to perf21 (40,000 IOPS, 1,100 MB/s); above 40,000 IOPS only perf29 (60,000 IOPS, 1,500 MB/s) |
| Ultra High Performance (30 to 120) | Caps from 75,000 to 300,000 IOPS per volume | No class on the page goes beyond 60,000 IOPS per volume; plan such volumes as a design question |
The Oracle figure is a ceiling, not the load: a volume rarely runs at its cap. Measure the real peak IOPS and throughput on the source and choose the smallest class above it; the classes listed are perf0, 1, 2, 4, 6, 8, 10, 12 to 21 and 29.
Decisions the architect owns
Class per volume
The 500 GB data volume runs at Balanced, which Oracle caps at 25,000 IOPS for that size; perf14 matches that ceiling. If the measured peak is lower, a smaller class such as perf8 or perf10 may do.
Availability setup
STACKIT offers every performance class in a Single AZ and in a Metro AZ setup. Single AZ pins the volume to one zone; Metro AZ mirrors it across two.
Image route
Export from Oracle, or rebuild the image from your build pipeline. A rebuild also lets you review what the image contains.
Data-movement method
Host-level copy, restore from a backup, or a replication tool: the run records the mechanism as UNKNOWN and the state as DECISION_REQUIRED for both volumes.
Resize limits
STACKIT data volumes range from 1 GB to 16 TB; they can be enlarged only while detached and never reduced. OCI volumes range from 50 GB to 32 TB, so a volume above 16 TB has to be split.
Questions infrastructure teams ask
Can I import an Oracle Cloud image file directly into STACKIT?
STACKIT accepts raw, qcow2 and iso up to 70 GB. A QCOW2 export from Oracle can therefore be uploaded as it is, while VMDK, VHD and VDI need conversion, for example with qemu-img. Test that a server boots from the image before you rely on it.
What is the largest image STACKIT takes?
The IaaS API guide states 70 GB per image. Large data disks are not images: they move as volumes.
Does the volume performance setting carry over?
No. The assessment states that the setting does not carry over and asks you to choose a STACKIT performance class. The class is independent of the volume size.
Does StackToIT copy the data?
No. data-movement.md lists both volumes with the mechanism UNKNOWN and the state DECISION_REQUIRED, marks data class, RPO and downtime tolerance as not provided, and leaves the method to a person.
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.