[linux-lvm] Snapshot code

Jayson Vantuyl jvantuyl at engineyard.com
Tue Mar 6 05:07:50 UTC 2007

As you might know, LVM2 actually uses a kernel component called  
devicemapper (DM).

DM has various targets that are used to create LVM devices.  For  
example, a simple LV might generate a table in DM like this:

0 100000 linear 8:1 540

This table maps reads on the LVM device from blocks 0 to 100000 (512  
bytes each) to blocks on device 8:1 (sda1) starting at block 540.  As  
you might imagine, this system is very flexible and allows LVM2 to  
run entirely in userspace, with DM doing all of the heavy lifting in  
the kernel.

The secret sauce required to do snapshots requires help from LVM.   
Notice that in the above table, the single entry has a target called  
"linear".  This is a simple mapping, nothing more.  Snapshots require  
the ability to intercept writes to the original LVM device in order  
to preserve the original data in the snapshot.  Thus, a snapshot  
creates the original LV's mapping, then creates an entry that uses  
the LV but has a "snapshot-origin" target (instead of merely a linear  
target) for the entire other volume.  For the cow volume it uses a  
"snapshot" target.  With these tools it creates the devices you  
actually use, including the extra volume (which is used to get that  
snapshot target in the loop).

For a discussion of the underlying technology, look here:


On Mar 5, 2007, at 4:52 AM, Nallammai S wrote:

> Hi,
> I am new to lvm2. I am looking at the lvm2 code primarily to  
> understand how snapshots are taken. When I debugged, i found that  
> in addition to the COW LV, a LV named 'snapshot0' is also created.  
> Why is this LV created?
> Thanks in advance
> Nallammai.S
> _______________________________________________
> linux-lvm mailing list
> linux-lvm at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/

Jayson Vantuyl
Systems Architect
Engine Yard
jvantuyl at engineyard.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/linux-lvm/attachments/20070305/91fea7a7/attachment.htm>

More information about the linux-lvm mailing list