qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] QEMU Live Snapshots / Commiting


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] QEMU Live Snapshots / Commiting
Date: Fri, 30 Sep 2011 15:54:51 +0100

On Fri, Sep 30, 2011 at 2:46 PM, Robert P <address@hidden> wrote:
>
>
> On Fri, Sep 30, 2011 at 2:04 PM, Stefan Hajnoczi <address@hidden> wrote:
>>
>> On Fri, Sep 30, 2011 at 11:32 AM, Robert P <address@hidden> wrote:
>>
>> Please use Reply-All to keep qemu-devel CCed so that others can
>> contribute.
>>
>> >
>> > On Fri, Sep 30, 2011 at 10:16 AM, Stefan Hajnoczi <address@hidden>
>> > wrote:
>> >>
>> >> On Thu, Sep 29, 2011 at 09:07:19PM +0200, Robert P wrote:
>> >> > Hello,
>> >> >
>> >> > I still have a problem with the "Live Snapshot" feature of QEMU ....
>> >> > and
>> >> > before migrating to XEN, VMware or something similare, a quick post
>> >> > here:
>> >> >
>> >> > OS: Ubuntu Natty 64bit
>> >> >
>> >> > First, i'm starting my KVM Machine with an image like this:
>> >> > qemu-img create -f qcow2 -o backing_file=<NameOfBaseImage>
>> >> > <Snapshotname>
>> >> >
>> >> > If i stop the KVM Machine later, and i commit <Snapshotname> into
>> >> > <NameOfBaseImage>, all the new changes are in the <NameOfBaseImage>.
>> >> > That would be ok.
>> >> >
>> >> > ---
>> >> >
>> >> > The Problem:
>> >> >
>> >> > Actually i'm trying to create "live snapshots" periodically  while
>> >> > the
>> >> > machine is running, like this (host2Qemu is just a special function
>> >> > of
>> >> > mine
>> >> > (it works), to send a string to qemu-monitor).
>> >> >
>> >> >                 host2Qemu "cont"
>> >> >                 host2Qemu "guest-agent-fsfreeze"
>> >> >                 host2Qemu "stop"
>> >> >
>> >> >                 host2Qemu "info block"
>> >> >                 host2Qemu "snapshot_blkdev ide0-hd0 <Snapshot1
>> >> > (example)>
>> >> > qcow2"
>> >> >
>> >> >                 host2Qemu "cont"
>> >> >                 host2Qemu "guest-agent-fsthaw"
>> >> >
>> >> > My idea is, to commit them one by one afterwards, when the KVM
>> >> > Machine
>> >> > is
>> >> > down into the BaseImage.
>> >> >
>> >> > So, the Snapshots are beeing written, and everytime i call that
>> >> > function
>> >> > new
>> >> > data is beeing written to the new "alllocated" snapshot.
>> >> > BUT, committing of that live-snapshots fails, and i've no idea why ?!
>> >> >
>> >> > I would commit it like that:
>> >> >  qemu-img commit -f qcow2 <Snapshot, with KVM was started first>
>> >> > qemu-img commit -f qcow2 <Snapshot1, newer>
>> >> > qemu-img commit -f qcow2 <Snapshot1, more new>
>> >> > ...
>> >> > and so on.
>>
>> You should have something like this:
>> <NameOfBaseImage> -> <Snapshot1> -> <Snapshot2> -> ... -> <SnapshotN>
>>
>> The qemu-img commit command merges down an image file into its backing
>> file, so you would do:
>>
>> $ qemu-img commit <SnapshotN>
>> ...
>> $ qemu-img commit <Snapshot2>
>> $ qemu-img commit <Snapshot1>
>>
>> Now all the <Snapshot*> files contain no actual data - the delta have
>> been committed to their backing files.  You can discard them and use
>> <NameOfBaseImage> directly.
>>
>> How does this compare to what you were trying?
>
> Hm, that means you recommend to commit the snapshots from newest to oldest
> into the base-Image?
> I am committing them (when the KVM is off) from oldest to newest, like this:
>
> $ qemu-img commit <Snapshot1>
> $ qemu-img commit <Snapshot2>
> ....
> $ qemu-img commit <SnapshotN>
>
> Is that maybe causing that problem?

Absolutely.  Each snapshot has a backing file linking back to the
previous snapshot.  You need to push the latest data all the way back
to the base backing file.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]