[CentOS] Backup KVM Guest VM in OVA or VMDK format

Thu Sep 22 15:54:59 UTC 2022
Kaushal Shriyan <kaushalshriyan at gmail.com>

On Tue, Sep 20, 2022 at 3:38 PM Ondřej Budai <obudai at redhat.com> wrote:

> Hi Kaushal,
>
> st 14. 9. 2022 v 16:07 odesílatel Kaushal Shriyan <
> kaushalshriyan at gmail.com>
> napsal:
>
> > On Fri, Sep 2, 2022 at 5:41 PM Fabian Arrotin <arrfab at centos.org> wrote:
> >
> > > On 01/09/2022 18:14, Kaushal Shriyan wrote:
> > > > Hi,
> > > >
> > > > Is there a way to backup KVM Guest VM running CentOS Linux release
> > > 7.9.2009
> > > > (Core) OS in kvmguestosimage.ova or kvmguestosimage.vmdk format as I
> am
> > > > trying to restore it in AWS by referring to
> > > > https://aws.amazon.com/ec2/vm-import/ article as per the below
> > supported
> > > > file format.
> > > >
> > > > [1] Open Virtualization Archive (OVA)
> > > > [2] Virtual Machine Disk (VMDK)
> > > > [3] Virtual Hard Disk (VHD/VHDX)
> > > > [4] raw
> > > >
> > > > Also any method to take full and incremental backup of KVM Guest VM.
> > > >
> > > > Any help will be highly appreciated. I look forward to hearing from
> > you.
> > > > Thanks in Advance.
> > > >
> > > > Best Regards,
> > > >
> > > > Kaushal
> > >
> > > Stop the vm
> > > qemu-img convert -f raw origin.qcow2 dest.raw
> > >
> > > You can then import but while we use this to create official centos
> > > image, don't forget to ensure that you node is ready to be imported, so
> > > cloud-init, etc, etc
> > >
> > > It's usually easier/better/faster to have automation in place to
> > > configure an application and so replay it on a new node, and then
> > > replicate data
> > >
> > > I guess only option why you'd want to not do this is that it's a
> running
> > > machine that was configured "by hands" by someone who left the company
> > > (and so without automation in place)
> > >
> > > --
> > > Fabian Arrotin
> > > The CentOS Project | https://www.centos.org
> > > gpg key: 17F3B7A1 | twitter: @arrfab
> > > _______________________________________________
> > > CentOS mailing list
> > > CentOS at centos.org
> > > https://lists.centos.org/mailman/listinfo/centos
> >
> >
> > Thanks Fabian for the detailed email. I followed the below steps by
> > referring to
> >
> >
> https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html
> > .
> >
> > # qemu-img -h | grep Supported
> > Supported formats: blkdebug blklogwrites blkverify compress
> > copy-before-write copy-on-read file ftp ftps gluster host_cdrom
> host_device
> > http https iscsi iser luks nbd null-aio null-co nvme preallocate qcow2
> > quorum raw rbd ssh throttle vhdx vmdk vpc
> >
> > # qemu-img --version
> > qemu-img version 6.2.0 (qemu-kvm-6.2.0-12.module_el8.7.0+1140+ff0772f9)
> > Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers
> > #
> >
> > *Step No. 1*
> > #qemu-img convert -O vmdk openapibox.img openapibox.vmdk -p
> >
>
> I'm not 100% sure but I think that AWS only accepts the stream-optimized
> subformat, the command is:
>
> $ qemu-img convert -O vmdk -o subformat=streamOptimized openapibox.img
> openapibox.vmdk
>
>
> >
> > *Step No. 2*
> > #aws ec2 import-image --disk-containers
> > Format=vmdk,UserBucket="{S3Bucket=daclabservers,S3Key=openapidbox.vmdk}"
> > {
> >     "ImportTaskId": "import-ami-0232f452194f6efe0",
> >     "Progress": "1",
> >     "SnapshotDetails": [
> >         {
> >             "DiskImageSize": 0.0,
> >             "Format": "VMDK",
> >             "UserBucket": {
> >                 "S3Bucket": "daclabservers",
> >                 "S3Key": "openapibox.vmdk"
> >             }
> >         }
> >     ],
> >     "Status": "active",
> >     "StatusMessage": "pending"
> > }
> >
>
> Our project (https://www.osbuild.org/) uses the raw format for disks,
> uploads it to S3, calls import-snapshot to import it as an EBS snapshot and
> finally calls register-image to create a new AMI. Basically:
>
> $ qemu-img convert -O raw openapibox.img openapibox.raw
> # upload into S3
> $ aws ec2 import-snapshot ...
> # wait for the snapshot to be imported
> $ aws ec2 register-image ...
>
> Docs:
> - https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html
> -
> https://docs.aws.amazon.com/cli/latest/reference/ec2/import-snapshot.html
> -
>
> https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-import-snapshot.html
>
> If you want to see this in practice, we have some Go code. As awscli is
> just a thin wrapper over the API, it should be pretty easy to translate our
> code into awscli calls:
>
> https://github.com/osbuild/osbuild-composer/blob/bfd90cf191eece5c1331dcb43a85bcca02d8d7d4/internal/cloud/awscloud/awscloud.go#L211
>
> Hope that helps,
>
> Ondřej
>

Thanks Ondřej and appreciate it. I will try it out and keep you posted.
Thanks in advance.

Best Regards,

Kaushal