Hi Punith,

I sent this e-mail (below) in a different CloudStack dev@ thread, but it
seems they are only interested in RBD in that thread, so I will include
that e-mail text in this thread so that we keep track on the mailing list
of current issues in XenServer and ESXi with regards to leveraging backend
SAN snapshots:

*** Beginning of e-mail ***

The main requests were around the following features:

* The ability to leverage SolidFire snapshots.

* The ability to create CloudStack templates from SolidFire snapshots.

I had these on my roadmap, but bumped the priority up and began work on
them for the CS 4.6 release.

During design, I realized there were issues with the way XenServer is
architected that prevented me from directly using SolidFire snapshots.

I could definitely take a SolidFire snapshot of a SolidFire volume, but
this snapshot would not be usable from XenServer if the original volume was
still in use.

Here is the gist of the problem:

When XenServer leverages an iSCSI target such as a SolidFire volume, it
applies a clustered files system to it, which they call a storage
repository (SR). An SR has an *immutable* UUID associated with it.

The virtual volume (which a VM sees as a disk) is represented by a virtual
disk image (VDI) in the SR. A VDI also has an *immutable* UUID associated
with it.

If I take a snapshot (or a clone) of the SolidFire volume and then later
try to use that snapshot from XenServer, XenServer complains that the SR on
the snapshot has a UUID that conflicts with an existing UUID.

In other words, it is not possible to use the original SR and the snapshot
of this SR from XenServer at the same time, which is critical in a cloud
environment (to enable creating templates from snapshots).

The way I have proposed circumventing this issue is not ideal, but
technically works (this code is checked into the CS 4.6 branch):

When the time comes to take a CloudStack snapshot of a CloudStack volume
that is backed by SolidFire storage via the storage plug-in, the plug-in
will create a new SolidFire volume with characteristics (size and IOPS)
equal to those of the original volume.

We then have XenServer attach to this new SolidFire volume, create a *new*
SR on it, and then copy the VDI from the source SR to the destination SR
(the new SR).

This leads to us having a copy of the VDI (a "snapshot" of sorts), but it
requires CPU cycles on the compute cluster as well as network bandwidth to
write to the SAN (thus it is slower and more resource intensive than a
SolidFire snapshot).

I spoke with Tim Mackey (who works on XenServer at Citrix) concerning this
issue before and during the CloudStack Collaboration Conference in Budapest
in November. He agreed that this is a legitimate issue with the way
XenServer is designed and could not think of a way (other than what I was
doing) to get around it in current versions of XenServer.

One thought is to have a feature added to XenServer that enables you to
change the UUID of an SR and of a VDI.

If I could do that, then I could take a SolidFire snapshot of the SolidFire
volume and issue commands to XenServer to have it change the UUIDs of the
original SR and the original VDI. I could then recored the necessary UUID
info in the CS DB.

*** End of e-mail ***

Talk to you later,
Mike

On Sun, Feb 15, 2015 at 11:31 PM, Punith S <punit...@cloudbyte.com> wrote:

> thanks mike, i'll go through the classes and i'll try to test it on a
> master(4.6) setup for the better understanding.
>
> On Mon, Feb 16, 2015 at 11:57 AM, Mike Tutkowski <
> mike.tutkow...@solidfire.com> wrote:
>
>> I think it might be easier if you examine my plug-in along with two new
>> classes:
>>
>> StorageSystemSnapshotStrategy
>> StorageSystemDataMotionStrategy
>>
>> Those last two classes are intended for managed storage in general (i.e.
>> they are not SolidFire specific).
>>
>> That code currently only handles XenServer.
>>
>> I'm currently working on equivalent support in ESXi.
>>
>>
>> On Sunday, February 15, 2015, Punith S <punit...@cloudbyte.com> wrote:
>>
>>> thanks for the info mike.i'll go through your commits of 4.6.
>>>
>>> the updated plugin i pushed for 4.5 used to only take backend storage
>>> snapshot in cloudbyte. but when i'm trying to create a volume out of that
>>> snapshot it is going to motion service where it is trying to copy the vmfs
>>> or vmdk file but since there is no destination( storage volume cloned out
>>> of snapshot) it is failed to create a volume.
>>>
>>> mike can you please brief me about when we have to make use of canCopy()
>>> and copyAsync() interfaces of datastore interfaces.
>>>
>>> thanks
>>>
>>> On Mon, Feb 16, 2015 at 11:40 AM, Mike Tutkowski <
>>> mike.tutkow...@solidfire.com> wrote:
>>>
>>>> I would recommend you take a look at a bunch of my most recent 4.6
>>>> commits.
>>>>
>>>>
>>>> On Sunday, February 15, 2015, Mike Tutkowski <
>>>> mike.tutkow...@solidfire.com> wrote:
>>>>
>>>>> I am working on creating the necessary infrastructure to support
>>>>> managed snapshots on XenServer and ESXi in 4.6 (for block storage, that 
>>>>> is).
>>>>>
>>>>> For example, with XenServer, you cannot simply take a backend snapshot
>>>>> of the LUN that contains the SR and VDI.
>>>>>
>>>>> Technically you can, however, you would find that your snapshot cannot
>>>>> be attached to any of the XenServer hosts in the cluster if the original
>>>>> LUN you took a snapshot of is still attached in that cluster (due to
>>>>> duplicate immutable UUIDs on the SRs and VDIs).
>>>>>
>>>>> This is an issue I have been discussing with someone who works on
>>>>> XenServer.
>>>>>
>>>>> ESXi is a bit better here since it allows you to re-signature a
>>>>> datastore (so taking a backend snapshot should work nicely in 4.6 once I
>>>>> finish the code).
>>>>>
>>>>> If you are talking about NFS, it's probably okay if you just take a
>>>>> backend snapshot of the VMDK file in question.
>>>>>
>>>>> On Sunday, February 15, 2015, Punith S <punit...@cloudbyte.com> wrote:
>>>>>
>>>>>> Hi Stackers,
>>>>>>
>>>>>> I have been testing out the cloudstack 4.5 RC on vmware setup with
>>>>>> Cloudbyte as a storage backend for supporting managed storage, while 
>>>>>> taking
>>>>>> a snapshot of a data disk i'm only taking the snapshot from the storage
>>>>>> side only, but on cloning the snapshot of the volume is it enough to just
>>>>>> clone the particular volume on the storage side ? so that the vmdk also 
>>>>>> be
>>>>>> reproduced again!
>>>>>>
>>>>>> on the default primary storage i'm guessing, cloning will be just a
>>>>>> copy of a vmdk file on the same primary datastore!
>>>>>>
>>>>>> thanks
>>>>>> --
>>>>>> regards,
>>>>>>
>>>>>> punith s
>>>>>> cloudbyte.com
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Mike Tutkowski*
>>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>>> e: mike.tutkow...@solidfire.com
>>>>> o: 303.746.7302
>>>>> Advancing the way the world uses the cloud
>>>>> <http://solidfire.com/solution/overview/?video=play>*™*
>>>>>
>>>>>
>>>>
>>>> --
>>>> *Mike Tutkowski*
>>>> *Senior CloudStack Developer, SolidFire Inc.*
>>>> e: mike.tutkow...@solidfire.com
>>>> o: 303.746.7302
>>>> Advancing the way the world uses the cloud
>>>> <http://solidfire.com/solution/overview/?video=play>*™*
>>>>
>>>>
>>>
>>>
>>> --
>>> regards,
>>>
>>> punith s
>>> cloudbyte.com
>>>
>>
>>
>> --
>> *Mike Tutkowski*
>> *Senior CloudStack Developer, SolidFire Inc.*
>> e: mike.tutkow...@solidfire.com
>> o: 303.746.7302
>> Advancing the way the world uses the cloud
>> <http://solidfire.com/solution/overview/?video=play>*™*
>>
>>
>
>
> --
> regards,
>
> punith s
> cloudbyte.com
>



-- 
*Mike Tutkowski*
*Senior CloudStack Developer, SolidFire Inc.*
e: mike.tutkow...@solidfire.com
o: 303.746.7302
Advancing the way the world uses the cloud
<http://solidfire.com/solution/overview/?video=play>*™*

Reply via email to