Dear all,

Sorry for the late response.Here is a simple update for this feature,
commited in the branch 'vm-snapshot', feedbacks are welcomed.

[Progress]
https://cwiki.apache.org/confluence/display/CLOUDSTACK/VM+Snapshots
finish major parts for xenserver/vmware
run some simple tests on vmware/xenserver free ediiton/xenserver enterprise
edition

[ToDo]
continue to enhance existing codes especially for exception handling.
add capacity/limit/usage related codes
unittest/full testing
KVM support (TBD, needs patch libvirt java binding)

Regards
Mice

2012/8/10 Matthew Patton <mpat...@inforelay.com>

> On Wed, 08 Aug 2012 21:51:50 -0400, Edison Su <edison...@citrix.com>
> wrote:
>
>  From: Mice Xia 
> [mailto:mice_xia@**tcloudcomputing.com<mice_...@tcloudcomputing.com>
>>> ]
>>>
>> ...
>
>  For following scenarios I need some suggestions:
>>> a) 'vm snapshot, detach volume and attach it to another VM, rollback
>>> snapshot',
>>>
>>
> This is not a problem. A volume and it's (several) snapshots are described
> in the HYPERVISOR's native metadata file closely associated with the
> volume. If the hypervisor doesn't actually manage that relationship and
> associated housekeeping tasks, CloudStack has no business trying to
> implement it. The option is simply not available to the user.
>
> Cloud automation is NOT about inventing new things, it's about automating
> what is currently possible within the capabilities of the particular
> hypervisor and storage mixture at hand. Where cloud software goes wrong is
> thinking it's the master of everything. It's NOT, and never will be. All
> configuration and runtime state must be pulled from the actual devices
> (hypervisors, storage arrays, network gear, etc.) because things will
> change underneath it. It is unforgivably naive to assume there won't be
> outside influence. Of course we'd all like to pretend that the cloud knows
> all and that it is always authoritative, but if you write the software
> under that assumption, the users will be mighty ticked off when it's not
> the case and things break left and right.
>
>
>  b) 'vm snapshot, detach and destroy volume, rollback snapshot',
>>>
>>
> That's not a valid operation. A snapshot is ALWAYS associated with it's
> parent 'disk'. If you delete the parent, all snapshots are deleted with it.
>
>
>  Three candidate solutions that I can figure out now,
>>> 1) disallow detach volumes if specified VM has VM snapshots.
>>>
>>
> uh, no.
>
>
>  2) allow to snapshot/rollback, for a), this will result in two volumes,
>>> one attached to anther VM, one attached to VM that rollback from
>>> snapshot; for
>>>
>>
> This is a matter for the hypervisor or storage array. AFAIK even ESX
> doesn't let you do this even if the parent disk is marked RO since it puts
> an exclusive lock on the volume. Storage arrays pull this off by
> thin-cloning the source so the VM thinks it has it's own disk even when it
> didn't start out that way.
>
> Again, Cloudstack isn't about doing storage trickery. It's about making
> the proper calls to the hypervisor or (maybe?) the storage array to do such
> fancy cloning. So if you want to provision a VM and attach a particular
> volume/snapshot sequence that isn't already locked for use, then no
> problem; treat it like you own it outright and launch. Any successive
> creation/destruction of snapshots is the purview of that one active VM and
> doesn't require any fancy footwork. If on the other hand the source
> volume+snapshot is already open for use, then you have to ask the storage
> provider for a thick or thin clone and you lose the ability to go back in
> time without trashing the private copy and re-attaching/re-cloning to the
> original.
>
> The use case for cloud is 99.95% "dumb". Let's not complicate the
> situation unnecessarily. If qcow/rbd/lvm can't do it with their standard
> command set, then it's not available. If you're using 3par/emc/netapp as
> the storage and they do have the proper calls, then you can permit such
> things. Actually, let me rephrase that. Any fancy cloning or snapshotting
> calls MUST be sent to the hypervisor only!! It is up to the hypervisor to
> issue qcow/rbd/lvm/netapp/emc commands to get it done. Why? Hypervisor
> vendors actually test this stuff and have the resources and incentive to
> make sure it works. Cloud software again has no business trying to take
> over the hypervisor's role. If KVM/Xen are deficient in some aspect, then
> fix the hypervisor; do not try to use cloud software to band-aid the matter.
>
> This early in the CloudStack lifecycle, complicated or exotic operations
> should probably require deliberate manual involvement anyhow.
>
>
>  For VM based snapshot, we should not allow user to dynamically
>> change(attach or detach) VM's disks if there are VM-based snapshot taken on
>> this VM.
>>
>
> again, no. It is not up to the cloud to manage/track volume/snapshot
> state. It instead queries the hypervisor for that information.
>
>
> It seems to me (admittedly a very new member here) that there is enormous
> feature creep being introduced. Cloud automation is really fairly
> straightforward.
>
> for any hypervisor
>   where is it (IP, logical/physical location)
>   what flavor (KVM, Xen, ESX) and version - tells us which command set to
> use
>   what network gear is attached and what ports need to be modified for to
> add/drop vlan membership at the switch level
>   what is it's utilization
>
> for any storage provider
>   how to interface with it
>   what storage containers are defined
>   to which hypervisors should they be attached, and attachment parameters
>
> for any VM
>   to which account does it belong
>   which disks does it need and on what storage container to place them
>   where to find the master disk templates (if any)
>   what network bridge/portgroups it needs to have interfaces on
>   what MAC to assign the various interfaces (or have Hypervisor
> auto-assign)
>   what VLANs to assign to interface or interface aliases
>   what IP address to assign to the interfaces
>   are there any locality or performance factors to influence selection of
> deployment destination
>
> Basically all the cloud does is dynamically create what amounts to a
> VMware .vmx file or a libvirt instantiation script and run it against the
> chosen hypervisor host. And if needed prep the hypervisor with network
> underpinnings and attach appropriate storage in order to run the guest.
> Yes, I realize I simplified a bit but there isn't a whole lot more to it.
>

Reply via email to