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