Fwd: [dm-devel] cow snapshot on cloop device
Jacob Broido
jacob.broido at gmail.com
Fri Aug 26 01:51:16 UTC 2005
Hey Kevin,
Thanks for the response,
I've read through the thread but I am not clear on a few issues,
Why is there a need to create a snapshot-origin, isnt the fact that I create
snapshot of a specific device, in my case root_master, using the command :
echo "0 4096128 snapshot root_master /dev/loop0 p 8"| dmsetup create
root_cow0
already monitors the origin device root_master for write operations?
As far as I understood the COW/snapshot logic is the following:
1) Snapshot device is created over some other dm device
2) snapshot dm device is mounted.
3) Any call to write() or othere rw syscalls issues a write to backing store
as defined during creation of snapshot device, and relevant pointers
updated.
4) Read from mounted snapshot device, results in one of the following : if
data was modified since the snapshot its read from COW backing
device(transparently to end user) , if data was not modified from snapshot
creation, its read from origin dm device.
In addition as I mentioned, I am able to mount the dm snapshot device, and I
am also able to perform write operations (even though the origin device is
on a readonly media).
The problem I encountered is data corruption and is partial, all files are
partially damaged or have corrupted parts.
What am I missing?
P.S Is there a documentation reagrding varios targets and their table format
P.P.S in snapshot creation, what does <p|n> mean.
Thanks.
On 8/26/05, Kevin Corry <kevcorry at us.ibm.com> wrote:
>
> Hi Jacob,
>
> On Wed August 24 2005 12:01 pm, Jacob Broido wrote:
> > ---------- Forwarded message ----------
> > From: Jacob Broido <jacob.broido at gmail.com>
> > Date: Aug 24, 2005 7:00 PM
> > Subject: Re: [dm-devel] cow snapshot on cloop device
> > To: Kevin Corry <kevcorry at us.ibm.com>
> >
> > I am using dmsetup directly. and I do the following:
> > 1) Create an empty file that will be used as cow backing storage
> > 2) losetup the backing file to /dev/loop0
> > 3) create a snapshot of main root_device on /dev/loop0
> > 4) mount the cow snapshot
> >
> >
> > Here is the info you requested:
> > The kernel is a - 2.6.11.10 <http://2.6.11.10> <http://2.6.11.10> + xen
> patch.
> > =======================================================
> > / # dmsetup ls
> > root_master (253, 0)
> > root_cow0 (253, 1)
> > / # dmsetup table
> > root_master: 0 4096128 linear 240:0 0
> > root_cow0: 0 4096128 snapshot 253:0 7:0 P 8
>
> Ok, this is not going to do what you're expecting it to do. In order to
> use
> snapshotting, you need a snapshot device, and you also need a
> snapshot-origin
> device. The snapshot-origin code is what monitors the I/O path for the
> origin
> device, and performs the copy-on-writes as necessary.
>
> Last summer I did a write-up how you might use dmsetup to create
> snapshots.
> You can read the thread at:
> https://www.redhat.com/archives/dm-devel/2004-July/msg00068.html
>
> But in short, it's vastly simpler to just use LVM2 or EVMS to create
> snapshots. You should be able to create volumes on your cloop devices
> using
> either set of tools.
>
> Let me know if you have additional questions after reading through the
> thread
> above.
>
> --
> Kevin Corry
> kevcorry at us.ibm.com
> http://www.ibm.com/linux/
> http://evms.sourceforge.net/
>
--
Not gonna be king of the world if you're slave to the grind
- Skid Row
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20050826/09dae73d/attachment.htm>
More information about the dm-devel
mailing list