[Sheepdog] Deleting snapshots
MORITA Kazutaka
morita.kazutaka at lab.ntt.co.jp
Thu Oct 7 05:13:40 CEST 2010
At Sun, 3 Oct 2010 23:09:34 +0200,
Floris Bos wrote:
>
> Hi,
>
> On Sunday, October 03, 2010 05:55:02 pm you wrote:
> > Yes. Sheepdog makes the current vdi read-only (snapshot vdi), and
> > creates a new vdi as a writable one (main vdi).
>
> > > Is there any option I can use to tell sheepdog not to promote the new
> > > snapshot as main VDI?
> >
> > Currently, no. However, I think it would be better to reserve 0 as a
> > snap_id of the latest vdi (main vdi). In this case, taking snapshots
> > doesn't change a snapshot id of the latest vdi. The id is fixed to
> > zero always. Is this the behavior you want?
>
> That might work.
>
>
> Basically what I need is a new read-only snapshot for use by my client, and no
> changes to the current VDI.
> After all, the current vdi may be in use by qemu, and qemu is totally unaware
> of the snapshot I'm taking with my external program.
>
> So the original VDI ID must stay writable, as there is no way to signal qemu
> that it should start using another id.
>
On second thought, we cannot avoid updating a vdi id when its snapshot
is created. It is because a sheepdog client does copy-on-write based
on its vdi id.
So we need to use a savevm command from the qemu monitor to take a
snapshot of the running VM. Currently, if you want to create a
snapshot from the external program, you need to get a lock of the vdi
to avoid corrupting running VMs, and if running VMs exist, you need to
give up taking a snapshot...
In future, I think we should implement a mechanism to notify the
running client that an external program creates a snapshot.
For example, if write accesses to snapshot objects return something
like SD_RES_READONLY_OBJ, we can tell the client that it should update
the vdi id.
Thanks,
Kazutaka
More information about the sheepdog
mailing list