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.

Example inputmain.tf
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
}
StackToIT assessmentassessment.json
{
  "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.

Example inputmain.tf
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"
  }
}
StackToIT assessmentassessment.json
{
  "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. 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. 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. 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. 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. 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. 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 resourceSTACKIT targetClass and wave
oci_core_image.goldenNo target statedMANUAL_REVIEW, wave 1
oci_core_volume.data and .logsSTACKIT Block StorageRECONFIGURE, wave 1
oci_core_volume_backup_policy.dailyNo target statedMANUAL_REVIEW, wave 1
oci_core_instance.appSTACKIT Compute EngineRECONFIGURE, wave 2
oci_core_volume_backup_policy_assignment.dataNo target statedMANUAL_REVIEW, wave 2
oci_core_volume_attachment.data and .logsNo target statedMANUAL_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 volumeSTACKIT 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/sperf1: 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/sperf14: 25,000 IOPS, 400 MB/s
Higher Performance (20)75 IOPS and 600 KB/s per GB, cap 50,000 IOPS and 680 MB/sUp 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 volumeNo 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.