ESS is
implemented as a single kernel
module. This kernel module acts as a
"block filter". A block filter is a
piece of software that filters block
requests.
Device Mapper -
Target
The ESS kernel
module is called dm-fbd.ko. 'dm'
come from device mapper. The Linux
device mapper is a generalized layer
that loads block filters. This layer
is usually setup with the 'dmsetup'
command. 'dmsetup' allows you to
create a new device, of any
arbitrary size, using any kernel
module of arbitrary name as a "block
filter".
The parameters to
dmsetup are echo'ed into the dmsetup
command on stdin and include the
offset and size of the device being
created, as well as the target logic
in use. Some existing Linux targets
are zero (dm-zero.ko) for a device
that always reads zero and throws
away writes, crypt (dm-crypt.ko),
the block encryption layer widely in
use by Linux, as well as dozens of
others.
ESS was
originally called "Fast Block
Device", thus it's name dm-fbd.ko.
When dmsetup
create a device, the device shows up
as a block device in the /dev/mapper
directory. The default naming for
ESS is to create a device named
'fbd1', so you will see the ESS
device in /dev/mapper/fbd1. You can
change the target name in the load
script to match your local
conventions.
The target device
from ESS can then be used by other
Linux block-level tools. For
example, you can use 'pvcreate' to
setup the ESS "device" as a physical
volume that will then be managed by
the Linux Volume Manager. This is
actually the most common deployment
scenario for ESS. You can also
partition the ESS device, create
file systems on it, mount it as
swap, or whatever else makes sense
for a block device.