Re: is there a COW inside the kernel ?

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

 



hello !

thanks to all for providing that information.

i think i will take a closer look on device-mapper, but i'm unsure if it`s perfectly suited.

can i only use devices, not files for the cow?
what about merging a cow-dev/file back to the r/o-dev/file ?
cowloop can do this, and because it can use files, i don`t need to provide a fixed amount of diskspace for the cow. you have direct feedback about how big you cow grows.... i'm unsure about dm, but i will dig into the details. (wanted to learn more about dm anyway)

any chance of cowloop being merged into mainline ?
loop.c is 1343 lines of code, cowloop.c is around 1000 lines more so it`s "reasonable" small....and it has a _really_ nice user manual.

regards
roland

ps:
btw - mountlo looks really "freaky" - i like uml very much, but i think i need each bit of performance.
will take a look at mountlo just for personal interest, though.




----- Original Message ----- From: "Kevin Corry" <[email protected]>
To: <[email protected]>
Cc: "roland" <[email protected]>
Sent: Friday, March 03, 2006 3:28 PM
Subject: Re: is there a COW inside the kernel ?


On Fri March 3 2006 2:29 am, roland wrote:
hello !

is there an equivalent of something like

cowloop ( http://www.atconsultancy.nl/cowloop/total.html ) or md based cow
device ( http://www.cl.cam.ac.uk/users/br260/doc/report.pdf ),

i.e. a feature called "Copy On Write Blockdevice" inside the current or the
near-future mainline kernel (besides UserModeLinux Arch)?

Device-Mapper has a snapshot module, which is used by LVM and EVMS. You can also use dmsetup if you want lower-level access than provided by the volume
managers. To do the equivalent of the cowloop driver that you linked to
above, you could do something like this:

Say you have a read-only block-device (say a cd-rom) at /dev/hdc. And you have a small disk partition, /dev/hdb1, that you want to use for your "COW file".
Run:

cow_size=`blockdev --getsize /dev/hdc`
chunk_size=64   # Size of each copied-on-write chunk, in 512 byte sectors
cow_name="my_cow_dev"
echo "0 $cow_size snapshot /dev/hdc /dev/hdb1 p $chunk_size" | \
  dmsetup create $cow_name

This will give you a device called /dev/mapper/$cow_name. Presuming /dev/hdc
has a filesystem on it, you can mount /dev/mapper/$cow_name and get a
read-write version of the filesystem on /dev/hdc, where updates to the
filesystem will be stored on /dev/hdb1. The size of /dev/hdb1 can be
significantly smaller than /dev/hdc, depending on the amount of writes you
expect to happen on /dev/mapper/$cow_name. While this device is active, don't
try to mount /dev/hdc read-write (assuming that's possible), or it will
corrupt the view of /dev/mapper/$cow_name. If you need read-write access to both devices simultaneously, you'll probably just want to use LVM or EVMS and
create snapshot volumes, since manually activating that kind of setup with
dmsetup is incredibly tricky.

Use "dmsetup remove $cow_name" to deactivate the device.

i would find this useful for several purpose, but i don`t want to patch my system with 3rd party drivers or "non-standard" stuff - or even recompile
the kernel.

This should work with any recent 2.6 kernel. You'll also need to have the
device-mapper package installed, which should be available with any recent
Linux distro.

--
Kevin Corry
[email protected]
http://www.ibm.com/linux/
http://evms.sourceforge.net/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux