Re: Migrating volumes to RBD/Ceph

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On Sun, Feb 04, 2024 at 20:31:33 +1100, Julian Calaby wrote:
> Hi,
> I have a fancy new Ceph cluster and have configured a storage pool
> using it in libvirt. I have a bunch of disk images in a "filesystem
> directory" storage pool. I want to migrate those disk images into the
> RBD pool.
> What is the process for doing this?


> 2. virsh blockcopy

This is the proper way to do it for any running VM as it's the only
approach which preserves data consistency from VM writes, as well as
updates XMLs.

> No idea how to actually achieve what I want here as it doesn't seem
> capable of copying to a non-file destination.

'virsh blockcopy' does in fact support non-file destinations by passing
the XML description identical to the <disk> element via the --xml
argument. The XML for ceph/rbd should look like:

  <disk type='network'>
    <driver name="qemu" type="raw"/>
    <source protocol="rbd" name="image_name2">
      <host name="hostname" port="7000"/>
      <auth username='myuser'>
        <secret type='ceph' usage='mypassid'/>

To run the blockcopy operation and then subsequently switch to the new
image after it finishes additional arguments will be needed:

  virsh blockcopy
    --domain $VMNAME
    --xml /path/to/xml

I don't recall now whether you might need to pre-create the
properly-sized rbd volume in ceph or qemu can do that for you.

For a non-running VM I suggest you either start it, or start it with
paused CPUs (if you don't want to run the guest OS) for the duration of
the copy.

> 3. virsh vol-download and virsh vol-upload
> # mkfifo tmp
> # virsh vol-create --pool ceph volume.xml
> Vol volume created from volume.xml
> root@multimedia:~# virsh vol-list ceph
>  Name            Path
> ------------------------------------------
>  torrentbucket   VM_images/volume
> root@multimedia:~# virsh vol-download --pool default volume.qcow2 tmp &
> [1] 2483977
> root@multimedia:~# virsh vol-upload --pool ceph volume tmp
> error: cannot upload to volume volume
> error: this function is not supported by the connection driver:
> storage pool doesn't support volume upload

This won't work, as nobody yet volunteered to implement the data
operations for the native RBD/ceph libvirt pool type. You'd need to make
the rbd volumes available in the host OS as files to be able to use
storage driver APIs
Users mailing list -- users@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to users-leave@xxxxxxxxxxxxxxxxx

[Index of Archives]     [Virt Tools]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux