Troubleshooting Images, Custom Image Import, and Region Transfer
This guide covers issues with saving images of your nodes, importing custom images from on-premises or other clouds (including AWS), exporting images to Object Storage, and copying images between regions. Most import/export failures fall into a small set of recurring causes: missing OpenNebula context package, unsupported image format, wrong key permissions on Object Storage, or limitations specific to encrypted nodes and Windows nodes.
Common Image Action Issues
| Issue | What to do |
|---|---|
| Move to Another Project is rejected | Confirm the image is not in Deleting or Error state, no Auto-scaling group uses the image, and the image has no tags attached. |
| Delete Saved Image is rejected | The image is associated with a Scale Group with count > 0. Terminate the scale group, then retry the delete. |
| Create Scale Group is missing for an image | Scale Group creation is not supported for all saved image types. |
| New node from saved image — no smaller plans visible | You can only create the same or a higher configuration from a saved image. Pick a larger plan. |
| New node from saved image — no plan available | The saved image is currently being synchronized. Please wait a few minutes and try again. |
| Image stuck in Saving or Importing | Image operations are size-dependent. Wait — an email is sent on completion. Contact support if it does not progress for hours. |
Saving an Image of a Node
Save Image State Requirements
The portal enables Save Image based on the node family, state, lock status, DR role, and whether another operation is already in progress. Older C2/M2-style plans and other non-live-save paths require the node to be Powered Off before the action runs. Current live-save families use a snapshot-backed path and may allow Save Image while the node is Running.
For the most consistent image, especially for Windows nodes or disk-heavy workloads, shut down services cleanly and power off the node before saving.
Procedure when the portal requires Powered Off state:
- Power off the node.
- Open the Node Actions dropdown and click Save Image.
- Enter a name using only letters, digits, underscore, or hyphen.
- Confirm the action and wait for the saved image to reach Ready state.
All Management Actions are Disabled During Save
While an image is being saved, all management operations on that node are disabled. This is expected. Wait for the save to complete before retrying any management action.
Save Image is Not Available on Encrypted Nodes (For Encrypted Output)
Currently, the Save Encrypted Image functionality does not support encrypted nodes. Whether the source node is encrypted or unencrypted, the saved image is always unencrypted. To run encrypted nodes from an unencrypted image, enable encryption at node-creation time. See Encryption Troubleshooting.
Common Import Issues
| Issue | What to do |
|---|---|
| Import fails or the imported VM is unreachable | Confirm the OpenNebula context package is installed and enabled but inactive before the image was taken. Confirm cloud-init is disabled on the source. |
| Import fails with "size exceeded" | The disk must be ≤ 2048 GB (2 TB). Reduce the source disk size and retry. |
| Imported image is much larger than the source file | This is expected. The image is stored in an E2E-specific format and the on-disk size can be up to 5× the source. Contact cloud-platform@e2enetworks.com if you need exact sizing guidance. |
| Import via Public URL is failing | A Public Access Key must be attached to the bucket. Verify the URL is publicly resolvable. |
| Import via Private EOS bucket is failing | A Private Access Key with read access must be attached to the bucket. Verify Access Key, Secret Key, Bucket Name, and Object Path. |
| Wrong OS shown in custom image | Select the correct OS in the Types of OS dropdown at import time — the field is not auto-detected. |
Custom Image Import
Prerequisite: OpenNebula Context Package
E2E uses the OpenNebula context package for VM initialization — this is what configures network, sets credentials, applies the hostname, and provisions SSH keys when the imported node first boots. Without it, the imported VM will boot but will not be reachable.
Install the context package before taking the image:
Debian / Ubuntu:
wget https://github.com/OpenNebula/addon-context-linux/releases/download/v6.6.0/one-context_6.6.0-1.deb
sudo apt update
sudo apt --fix-broken install -y
sudo dpkg -i one-context_6.6.0-1.deb
sudo systemctl enable one-context
CentOS / Fedora / RHEL 7.x:
wget https://github.com/OpenNebula/addon-context-linux/releases/download/v6.6.0/one-context-6.6.0-1.el7.noarch.rpm
sudo yum install -y epel-release
sudo yum install -y one-context-6.6.0-1.el7.noarch.rpm
sudo systemctl enable one-context
Rocky Linux / AlmaLinux / CentOS 8+:
wget https://github.com/OpenNebula/addon-context-linux/releases/download/v6.6.0/one-context-6.6.0-1.el8.noarch.rpm
sudo dnf install -y one-context-6.6.0-1.el8.noarch.rpm
sudo systemctl enable one-context
Fedora:
wget https://github.com/OpenNebula/addon-context-linux/releases/download/v6.6.0/one-context-6.6.0-1.fc38.noarch.rpm
sudo dnf install -y one-context-6.6.0-1.fc38.noarch.rpm
sudo systemctl enable one-context
OpenSUSE 42 / 15:
wget https://github.com/OpenNebula/addon-context-linux/releases/download/v6.6.0/one-context-6.6.0-1.suse.noarch.rpm
sudo zypper --no-gpg-check install -y one-context-6.6.0-1.suse.noarch.rpm
sudo systemctl enable one-context
Alpine Linux:
wget https://github.com/OpenNebula/addon-context-linux/releases/download/v6.6.0/one-context-6.6.0-r1.apk
apk add --allow-untrusted one-context-6.6.0-r1.apk
FreeBSD 11 / 12:
wget https://github.com/OpenNebula/addon-context-linux/releases/download/v6.6.0/one-context-6.6.0_1.txz
pkg install -y curl bash sudo base64 ruby open-vm-tools-nox11
pkg install -y one-context-6.6.0_1.txz
Windows — download the MSI to C:\:
https://github.com/OpenNebula/addon-context-windows/releases/download/v5.8.0/one-context-5.8.0.msi
Or in PowerShell:
(New-Object Net.WebClient).DownloadFile("https://github.com/OpenNebula/addon-context-windows/releases/download/v5.8.0/one-context-5.8.0.msi", "C:\one-context-5.8.0.msi")
Double-click the MSI to install.
If cloud-init is installed on the source VM, disable the cloud-init service on boot before taking the image. cloud-init conflicts with the OpenNebula context package and will cause initialization to fail.
For Debian / Ubuntu, the one-context package automatically removes cloud-init during installation.
The one-context service should be in inactive state after installation. It is invoked by E2E during the post-import boot.
Supported Image Formats
E2E supports qcow2, qed, raw, vdi, and vhd formats for import. You can compress the file using gzip or tar to reduce upload size and import time.
Disk Requirements
- The image must contain a single disk partition.
- The primary partition can use any filesystem, as long as it boots cleanly from the MBR bootloader.
- The disk must not exceed 2048 GB (2 TB).
Supported Source Operating Systems (Tested)
- CentOS / RHEL >= 7
- Debian >= 8
- Ubuntu >= 14.04
- Rocky Linux / AlmaLinux >= 8
Other operating systems can be imported, but may need extra configuration not covered in the standard guide.
Importing from a Public URL
- Go to MyAccount → Nodes → Saved Images.
- Click Import Custom Image.
- Fill in:
- Public URL — the E2E Object Storage URL of the image.
- Custom Image Name — pre-filled, editable.
- Type of OS — choose the source OS.
- Click Import.
A Public Access Key must be attached to the source bucket for the URL to be reachable.
Importing from a Private EOS Bucket
- Saved Images → Import Custom Image → Private EOS Bucket tab.
- Fill in:
- Custom Image Name
- Bucket Name
- Object Path
- OS
- Access Key
- Secret Key
- Click Import.
The Access Key must have read permission on the bucket.
Import is asynchronous. You will be notified by email when the image reaches Ready state. Import time is proportional to image size.
For all import queries, contact cloud-platform@e2enetworks.com.
Pricing for Imported Images
There is no charge for the import itself. Storage is billed at ₹4.00 per GB per month for the space consumed by the image. To avoid storage costs while keeping a node running, you can delete the source image after the node is launched from it.
Exporting an Image to Object Storage
You can export a saved image to an E2E Object Storage bucket for backup, archival, or cross-region transfer.
The Export Image feature is region-dependent — some regions may support it while others may not. Before relying on export in a particular region, check the Actions menu on a Ready image in that region, or confirm with E2E support.
Procedure:
- Go to Compute → Images.
- Select an image in Ready state.
- Click Actions → Export to Object Storage.
- Provide:
- Region — the bucket region.
- Bucket Name
- Access Key
- Secret Key
- Click Confirm.
The image enters the Exporting state. On completion you receive a confirmation email.
Export Constraints
| Constraint | Details |
|---|---|
| Access key permissions | The Access Key must have Bucket Admin or Bucket Writer permission. Read-only keys will fail. |
| Actions during export | All actions on the image are disabled while it is exporting. |
| Encrypted nodes | Export Image is not available for images created from encrypted nodes. |
| Available regions | The Export Image feature is region-dependent — some regions support it and some may not. Check the Actions menu on a Ready image in your target region to confirm current availability. |
| Versioning | If bucket versioning is enabled, you will see versions appear during the export. After completion, a single version is shown. |
Supported Source → Destination Regions
| Source Region | Destination Region |
|---|---|
| Delhi | Delhi |
| Delhi | Chennai |
Transferring an Image Across Regions
To move an image between regions:
- From the source node, click Actions → Save Image, enter a name, and confirm.
- Wait for the saved image to reach Ready.
- On the saved image, click Actions → Create a Copy.
- Select the destination region and the new image name. Click Create.
- The copy will run in the background. Once it completes, the image is available in the destination region's Saved Images list, ready to launch nodes from.
Migrating an AWS EC2 Instance to E2E
If you are bringing an existing AWS EC2 workload across. The high-level checklist:
- Install the OpenNebula context package on the EC2 instance (use the package set for your distribution).
- Create an AMI of the EC2 instance from AWS Console → EC2 → Actions → Image → Create Image.
- Configure AWS CLI with credentials that can export images.
- Create an S3 bucket in AWS for the exported image.
- Create an IAM role named
vmimportwith the standard trust and inline policy for the bucket. - Export the AMI as RAW:
aws ec2 export-image --image-id AMI-ID --disk-image-format RAW --s3-export-location S3Bucket=BUCKET,S3Prefix=exports/. - Download the RAW file locally.
- Create an E2E Object Storage bucket and attach an Access Key with Bucket Admin permission.
- Upload the RAW image using the MinIO Client (
mc) to the E2E bucket. - Import the uploaded object into E2E via Compute → Images → Import Custom Images → Public URL.
- Launch a node from the imported image and verify your application.
Common AWS Migration Issues
| Issue | What to do |
|---|---|
| Imported AWS image boots but has no network | The OpenNebula context package was not installed before the AMI was created. Reinstall it inside a running E2E node and save a new image, or repeat the migration with context installed first. |
aws ec2 export-image fails with permission denied | The vmimport IAM role is missing or the inline policy does not include the bucket. Re-create the role/policy. |
mc upload to E2E fails | Confirm the Access Key has Bucket Admin permission and the bucket has upload and download permissions enabled in Public Access Config. |
| The image is Creating but never reaches Ready | The source object URL is unreachable (private bucket or expired link). Re-share with public access and re-import. |
Related Resources
- Create Saved Image
- Import Custom Image
- Export Custom Image
- Migrate AWS Image to E2E
- Transfer Image Across Region
- Encryption Troubleshooting