diff --git a/README.md b/README.md index 12cb140..9206de1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,32 @@ -# dm-cache - -Tool to create and manage device-mapper cache devices. \ No newline at end of file +# dm-cache +Tool to create and manage device-mapper cache devices. + +DM-cache, or Device Mapper Cache, is a Linux kernel feature designed to enhance storage performance by implementing a block-level cache on a separate cache device. + +The goal with dm-cache is to improve random read/write performance of a slow HDD by using a small but fast SSD or NVME device. + +The main advantage of dm-cache over lvmcache and bcache is that it is possible to setup on devices that already have a filesystem with data on them. Both LVM and Bcache requires unformatted, empty devices (there are ways to get around, but can be risky). + +## Requirements +dm-cache requires three devices; +- origin: The slow device. +- cache: A fast SSD or NVME device. Can be of any size. +- meta: A small device that holds dm-cache metadata. + +The metadata device size depends on how many cache blocks fit on the cache device. With default setting it should be a least 0.01% of the cache device size. If the cache device is 50GiB, and a cache block size of 128KiB, a metadata device of 5MiB is enough. It is important to have spare space, or dm-cache can become corrupted! + +## Setup +- Install `conf.d/dmcache` and `init.d/dmcache` +- Modify `conf.d/dmcache` to suit your setup +- Add a udev rule to block FS UUID device symlinks +- Add dmcache to boot runlevel: `rc-update add dmcache boot` + +### Multiple devices +If you have several devices you can simply make a copy of the init.d and conf.d files to a new name. The filenames in init.d and conf.d must be the same. + +- `cp /etc/conf.d/dmcache /etc/conf.d/dmcache.new` +- `ln -s /etc/init.d/dmcache /etc/init.d/dmcache.new` +- update `/etc/conf.d/dmcache.new` +- update udev rules +- `rc-service dmcache.new start` +- `rc-update add dmcache.new boot` \ No newline at end of file