mdev | ||
openrc | ||
udev | ||
cachestats.sh | ||
dmcache.sh | ||
LICENSE | ||
README.md |
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
andinit.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