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

Re: Fwd: [dm-devel] cow snapshot on cloop device

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.

On 8/26/05, Kevin Corry <kevcorry us ibm com> wrote:
Hi Jacob,

On Wed August 24 2005 12:01 pm, Jacob Broido wrote:
> ---------- Forwarded message ----------
> From: Jacob Broido <jacob broido gmail com>
> Date: Aug 24, 2005 7:00 PM
> Subject: Re: [dm-devel] cow snapshot on cloop device
> To: Kevin Corry <kevcorry 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 - <> + 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:

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

Kevin Corry
kevcorry us ibm com

Not gonna be king of the world if you're slave to the grind
- Skid Row
[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]