Meeting notes:
Date: Sep 17, 2013
Attendees:
NetApp: Chris, David
Citrix: Alex, Animesh, Edison, Srinivas
1. TakeSnapshot method on storage plugin.
Chris: TakeSnapshot method is implemented, but backup snapshot is failed on
the hypervisor side, as the default backup snapshot procedure will send a
copycommand to Xenserver resource, which can't recognize the snapshot created
by NetApp storage plugin.
Edison: take snapshot, then backup snapshot to secondary storage immediately
is the default behavior in CloudStack. There is a way to customize it, by
extends SnapshotStrategy interface. For example, we can write a
SnapshotStrategy, which doesn't back up unless anther backup snapshot API is
called. Or we can add a global configuration parameter to disable backup.
Chris: backup snapshot is fine, but we need a way to customize the backup
logic. Should we need to let hypervisor knows the snapshot created by NetApp,
Xenserver has an API to introduce a volume/snapshot, but VMware seems doesn't
have that kind of API.
Edison: There is ways to customize the copy logic, by extending copyAsync in
storage plugin. Everytime, mgt server sends a copycommand, it will go through
both source storage provider and destination storage provider, If any of them
knows how to handle the copycommand, then mgt server will handle it to storage
provider, otherwise, mgt server will handle it to DataMotionService. So there
are two ways to customize copycommand:
a. implement copyAsync in storage plugin,
b. add a new DataMotionService.
Method a, is easier than method b.
In copyAsync implementation, we can send the copyCommand to SSVM to handle
the actual snapshot copy, instead of sending to hypervisor host.
Chris: Need the detail about how to implement copyAsync in storage plugin:
[Action]: Edison needs to provide detailed information on how to
implementation of copyAsync
2. RevertSnapshot
Chris: RevertSnapshot is never been called in CloudStack.
Edison: CloudStack always assumes the snapshot is created, then will be
backed up to image store immediately, so no need to revert snapshot.
Chris: need to add revert snapshot functionality on the UI, and API to
implement revert Snapshot functionality, as the snapshot created on NetApp can
be reverted back.
[Action]: Edison needs to implement RevertSnapshot, and call storage
plugin's RevertSnapshot accordingly.
3. NetApp volume snapshot.
David: Due to the limitation of NetApp hardware(the number of snapshots can
be stored on one NetApp volume is limited, less than 255?), we need to
implement volume snapshot, instead of per VM volume snapshot.
David: Need to change storage plugin API to take snapshots for all the VMs
created on the primary storage, instead of per one volume, such as
takeSnapshot(List<VM> vms), then NetApp can take only one snapshot on the whole
NetApp volume.
Animesh: Does NetApp's hardware has the information for VM's each volumes,
as there is only one snapshot taking on primary storage?
David: Yes, there is information per volume, we can store them in snapshot's
path column in CloudStack DB.
Alex: How about queue taking snapshot methods call in storage plugin? For
example, queue the taking snapshot for several minutes, then issue only one
take-snapshot command to NetApp hardware.
David: It's doable, but maybe it's better to be done at the CloudStack mgt
server level.
Alex: Better to send out a proposal on the mailing list, let's see what
other storage vendor's feedback. If we agree on it's better to implement it at
mgt server level, then can definitely can implement that.
Alex: Due to tight 4.3 schedule, maybe implement it at the storage driver
level is more practical.
[Action] NetApp will send out a proposal to mailing list.
4. Can't add multiple image storage providers in one CloudStack setup.
Chris: There is on way to let customer to migrate existing NFS secondary
storage to NetApp's image store, due to the above limitation.
Edison: The reason for only one image storage provider is that: whenever
CloudStack mgt server needs to access image store, mgt server has not hint to
pick up an image store, if there are multiple image stores. As both image
stores are in the same scope. And for operations, like template sync between
image stores, template copy between zones, will be much complicated if there
are multiple image stores.
Edison: the proposal is putting the existing image store into maintenance
mode, then migrate existing templates/snapshots stored on the image store to
new image store.
[Action] Edison needs to implement image store maintenance mode. NetApp may
need to provide way to migrate image store.
5. How to store configuration for storage plugin:
Animesh: Alex, is it OK to create DB table in storage plugin?
Alex: Better to use *_details table
Chris: For configurations like NetApp server info, or any other
configuration parameter, it's not suitable in *_details
Alex: Then can store them in configuration table
Chris: configuration table is global, is it OK to store this kind of plugin
specific information in global configuration?
Alex: In 4.3, people are talking about ConfigurationDepot on the mailing
list, which is suitable for your case.
[Action]: Chris will take a look at ConfigDepot.
6. How to quiescing VMs:
David: What we did in other VMware products is creating a VM snapshot first,
new linked clone will be created, all the data write will go to the new linked
clone. NetApp can take snapshot on the parent linked clone, then backup it to
secondary storage, then revert the snapshot, and delete the new linked clone.
In this way, we can leverage VM snapshot to quiecse VM, then actually backup
snapshot through NetApp.
Alex: it's great! We maybe finally have a way to backup VMware snapshot
efficiently. We need to investigate it, not only for VMware but also for
Xenserver.
[Action] Both need to investigate the possible way to quiesce VM, then come
up with new APIs to quiesce/unquiese VM.