.TH DMSETUP 8 "Apr 06 2006" "Linux" "MAINTENANCE COMMANDS"
.
.SH NAME
.
dmsetup \(em low level logical volume management
.
.SH SYNOPSIS
.
.\".nh
.ad l
.PD 0
.HP 9
.B dmsetup
.de CMD_CLEAR
.  BR clear
.  IR device_name
..
.CMD_CLEAR
.
.HP
.B dmsetup
.de CMD_CREATE
.  ad l
.  BR create
.  IR device_name
.  RB [ -u | \-\-uuid
.  IR uuid ]
.  RB \%[ \-\-addnodeoncreate | \-\-addnodeonresume ]
.  RB \%[ \-n | \-\-notable | \-\-table
.  RI \%{ table | table_file }]
.  RB [ \-\-readahead
.  RB \%{[ + ] \fIsectors | auto | none }]
.  ad b
..
.CMD_CREATE
.
.HP
.B dmsetup
.de CMD_DEPS
.  ad l
.  BR deps
.  RB [ \-o
.  IR options ]
.  RI [ device_name ]
.  ad b
..
.CMD_DEPS
.
.HP
.B dmsetup
.de CMD_HELP
.  BR help
.  RB [ \-c | \-C | \-\-columns ]
..
.CMD_HELP
.
.HP
.B dmsetup
.de CMD_INFO
.  BR info
.  RI [ device_name ]
..
.CMD_INFO
.
.HP
.B dmsetup
.de CMD_INFOLONG
.  ad l
.  BR info
.  BR \-c | \-C | \-\-columns
.  RB [ \-\-count
.  IR count ]
.  RB [ \-\-interval
.  IR seconds ]
.  RB \%[ \-\-nameprefixes ]
.  RB \%[ \-\-noheadings ]
.  RB [ \-o
.  IR fields ]
.  RB [ \-O | \-\-sort
.  IR sort_fields ]
.  RB [ \-\-separator
.  IR separator ]
.  RI [ device_name ]
.  ad b
..
.CMD_INFOLONG
.
.HP
.B dmsetup
.de CMD_LOAD
.  ad l
.  BR load
.  IR device_name
.  RB [ \-\-table
.  RI { table | table_file }]
.  ad b
..
.CMD_LOAD
.
.HP
.B dmsetup
.de CMD_LS
.  ad l
.  BR ls
.  RB [ \-\-target
.  IR target_type ]
.  RB [ \-\-exec
.  IR command ]
.  RB [ \-\-tree ]
.  RB [ \-o
.  IR options ]
.  ad b
..
.CMD_LS
.
.HP
.B dmsetup
.de CMD_MANGLE
.  BR mangle
.  RI [ device_name ]
..
.CMD_MANGLE
.
.HP
.B dmsetup
.de CMD_MESSAGE
.  BR message
.  IR device_name
.  IR sector
.  IR message
..
.CMD_MESSAGE
.
.HP
.B dmsetup
.de CMD_MKNODES
.  BR mknodes
.  RI [ device_name ]
..
.CMD_MKNODES
.
.HP
.B dmsetup
.de CMD_RELOAD
.  ad l
.  BR reload
.  IR device_name
.  RB [ \-\-table
.  RI { table | table_file }]
.  ad b
..
.CMD_RELOAD
.
.HP
.B dmsetup
.de CMD_REMOVE
.  ad l
.  BR remove
.  RB [ \-f | \-\-force ]
.  RB [ \-\-retry ]
.  RB [ \-\-deferred ]
.  IR device_name
.  ad b
..
.CMD_REMOVE
.
.HP
.B dmsetup
.de CMD_REMOVE_ALL
.  BR remove_all
.  RB [ \-f | \-\-force ]
.  RB [ \-\-deferred ]
..
.CMD_REMOVE_ALL
.
.HP
.B dmsetup
.de CMD_RENAME
.  BR rename
.  IR device_name
.  IR new_name
..
.CMD_RENAME
.
.HP
.B dmsetup
.de CMD_RENAME_UUID
.  BR rename
.  IR device_name
.  BR \-\-setuuid
.  IR uuid
..
.CMD_RENAME_UUID
.
.HP
.B dmsetup
.de CMD_RESUME
.  ad l
.  BR resume
.  IR device_name
.  RB [ \-\-addnodeoncreate | \-\-addnodeonresume ]
.  RB [ \-\-noflush ]
.  RB [ \-\-nolockfs ]
.  RB \%[ \-\-readahead
.  RB \%{[ + ] \fIsectors | auto | none }]
.  ad b
..
.CMD_RESUME
.
.HP
.B dmsetup
.de CMD_SETGEOMETRY
.  ad l
.  BR setgeometry
.  IR device_name
.  IR cyl
.  IR head
.  IR sect
.  IR start
.  ad b
..
.CMD_SETGEOMETRY
.
.HP
.B dmsetup
.de CMD_SPLITNAME
.  BR splitname
.  IR device_name
.  RI [ subsystem ]
..
.CMD_SPLITNAME
.
.HP
.B dmsetup
.de CMD_STATS
.  BR stats
.  IR command
.  RI [ options ]
..
.CMD_STATS
.
.HP
.B dmsetup
.de CMD_STATUS
.  ad l
.  BR status
.  RB [ \-\-target
.  IR target_type ]
.  RB [ \-\-noflush ]
.  RI [ device_name ]
.  ad b
..
.CMD_STATUS
.
.HP
.B dmsetup
.de CMD_SUSPEND
.  ad l
.  BR suspend
.  RB [ \-\-nolockfs ]
.  RB [ \-\-noflush ]
.  IR device_name
.  ad b
..
.CMD_SUSPEND
.
.HP
.B dmsetup
.de CMD_TABLE
.  ad l
.  BR table
.  RB [ \-\-target
.  IR target_type ]
.  RB [ \-\-showkeys ]
.  RI [ device_name ]
.  ad b
..
.CMD_TABLE
.
.HP
.B dmsetup
.de CMD_TARGETS
.  BR targets
..
.CMD_TARGETS
.
.HP
.B dmsetup
.de CMD_UDEVCOMPLETE
.  BR udevcomplete
.  IR cookie
..
.CMD_UDEVCOMPLETE
.
.HP
.B dmsetup
.de CMD_UDEVCOMPLETE_ALL
.  BR udevcomplete_all
.  RI [ age_in_minutes ]
..
.CMD_UDEVCOMPLETE_ALL
.
.HP
.B dmsetup
.de CMD_UDEVCOOKIES
.  BR udevcookie
..
.CMD_UDEVCOOKIES
.
.HP
.B dmsetup
.de CMD_UDEVCREATECOOKIE
.  BR udevcreatecookie
..
.CMD_UDEVCREATECOOKIE
.
.HP
.B dmsetup
.de CMD_UDEVFLAGS
.  BR udevflags
.  IR cookie
..
.CMD_UDEVFLAGS
.
.HP
.B dmsetup
.de CMD_UDEVRELEASECOOKIE
.  BR udevreleasecookie
.  RI [ cookie ]
..
.CMD_UDEVRELEASECOOKIE
.
.HP
.B dmsetup
.de CMD_VERSION
.  BR version
..
.CMD_VERSION
.
.HP
.B dmsetup
.de CMD_WAIT
.  ad l
.  BR wait
.  RB [ \-\-noflush ]
.  IR device_name
.  RI [ event_nr ]
.  ad b
..
.CMD_WAIT
.
.HP
.B dmsetup
.de CMD_WIPE_TABLE
.  ad l
.  BR wipe_table
.  IR device_name
.  RB [ \-f | \-\-force ]
.  RB [ \-\-noflush ]
.  RB [ \-\-nolockfs ]
.  ad b
..
.CMD_WIPE_TABLE
.PD
.P
.HP
.PD 0
.B devmap_name \fImajor minor
.HP
.B devmap_name \fImajor:minor
.PD
.ad b
.
.SH DESCRIPTION
.
dmsetup manages logical devices that use the device-mapper driver.
Devices are created by loading a table that specifies a target for
each sector (512 bytes) in the logical device.

The first argument to dmsetup is a command.
The second argument is the logical device name or uuid.

Invoking the dmsetup tool as \fBdevmap_name\fP
(which is not normally distributed and is supported
only for historical reasons) is equivalent to
.BI \%dmsetup\ info\ \-c\ \-\-noheadings\ \-j \ major\  \-m \ minor \c
\fR.
.\" dot above here fixes -Thtml rendering for next HP option
.
.SH OPTIONS
.
.HP
.BR \-\-addnodeoncreate
.br
Ensure \fI/dev/mapper\fP node exists after \fBdmsetup create\fP.
.
.HP
.BR \-\-addnodeonresume
.br
Ensure \fI/dev/mapper\fP node exists after \fBdmsetup resume\fP (default with udev).
.
.HP
.BR \-\-checks
.br
Perform additional checks on the operations requested and report
potential problems.  Useful when debugging scripts.
In some cases these checks may slow down operations noticeably.
.
.HP
.BR \-c | \-C | \-\-columns
.br
Display output in columns rather than as Field: Value lines.
.
.HP
.BR \-\-count
.IR count
.br
Specify the number of times to repeat a report. Set this to zero
continue until interrupted.  The default interval is one second.
.
.HP
.BR \-f | \-\-force
.br
Try harder to complete operation.
.
.HP
.BR \-h | \-\-help
.br
Outputs a summary of the commands available, optionally including
the list of report fields (synonym with \fBhelp\fP command).
.
.HP
.BR \-\-inactive
.br
When returning any table information from the kernel report on the
inactive table instead of the live table.
Requires kernel driver version 4.16.0 or above.
.
.HP
.BR \-\-interval
.IR seconds
.br
Specify the interval in seconds between successive iterations for
repeating reports. If \fB\-\-interval\fP is specified but \fB\-\-count\fP
is not, reports will continue to repeat until interrupted.
The default interval is one second.
.
.HP
.BR \-\-manglename
.RB { auto | hex | none }
.br
Mangle any character not on a whitelist using mangling_mode when
processing device-mapper device names and UUIDs. The names and UUIDs
are mangled on input and unmangled on output where the mangling mode
is one of:
\fBauto\fP (only do the mangling if not mangled yet, do nothing
if already mangled, error on mixed),
\fBhex\fP (always do the mangling) and
\fBnone\fP (no mangling).
Default mode is \fB#DEFAULT_MANGLING#\fP.
Character whitelist: 0-9, A-Z, a-z, #+-.:=@_. This whitelist is
also supported by udev. Any character not on a whitelist is replaced
with its hex value (two digits) prefixed by \\x.
Mangling mode could be also set through
\fBDM_DEFAULT_NAME_MANGLING_MODE\fP
environment variable.
.
.HP
.BR \-j | \-\-major
.IR major
.br
Specify the major number.
.
.HP
.BR \-m | \-\-minor
.IR minor
.br
Specify the minor number.
.
.HP
.BR \-n | \-\-notable
.br
When creating a device, don't load any table.
.
.HP
.BR \-\-nameprefixes
.br
Add a "DM_" prefix plus the field name to the output.  Useful with
\fB\-\-noheadings\fP to produce a list of
field=value pairs that can be used to set environment variables
(for example, in
.BR udev (7)
rules).
.
.HP
.BR \-\-noheadings
Suppress the headings line when using columnar output.
.
.HP
.BR \-\-noflush
Do not flush outstading I/O when suspending a device, or do not
commit thin-pool metadata when obtaining thin-pool status.
.
.HP
.BR \-\-nolockfs
.br
Do not attempt to synchronize filesystem eg, when suspending a device.
.
.HP
.BR \-\-noopencount
.br
Tell the kernel not to supply the open reference count for the device.
.
.HP
.BR \-\-noudevrules
.br
Do not allow udev to manage nodes for devices in device-mapper directory.
.
.HP
.BR \-\-noudevsync
.br
Do not synchronise with udev when creating, renaming or removing devices.
.
.HP
.BR \-o | \-\-options
.IR options
.br
Specify which fields to display.
.
.HP
.BR \-\-readahead
.RB {[ + ] \fIsectors | auto | none }
.br
Specify read ahead size in units of sectors.
The default value is \fBauto\fP which allows the kernel to choose
a suitable value automatically.  The \fB+\fP prefix lets you
specify a minimum value which will not be used if it is
smaller than the value chosen by the kernel.
The value \fBnone\fP is equivalent to specifying zero.
.
.HP
.BR \-r | \-\-readonly
.br
Set the table being loaded read-only.
.
.HP
.BR \-S | \-\-select
.IR selection
.br
Display only rows that match \fIselection\fP criteria. All rows are displayed
with the additional "selected" column (\fB-o selected\fP) showing 1 if the row
matches the \fIselection\fP and 0 otherwise. The selection criteria are defined
by specifying column names and their valid values while making use of
supported comparison operators. As a quick help and to see full list of
column names that can be used in selection and the set of supported
selection operators, check the output of \fBdmsetup\ info\ -c\ -S\ help\fP
command.
.
.HP
.BR \-\-table
.IR table
.br
Specify a one-line table directly on the command line.
See below for more information on the table format.
.
.HP
.BR \-\-udevcookie
.IR cookie
.br
Use cookie for udev synchronisation.
Note: Same cookie should be used for same type of operations i.e. creation of
multiple different devices. It's not adviced to combine different
operations on the single device.
.
.HP
.BR \-u | \-\-uuid
.br
Specify the \fIuuid\fP.
.
.HP
.BR \-y | \-\-yes
.br
Answer yes to all prompts automatically.
.
.HP
.BR \-v | \-\-verbose
.RB [ \-v | \-\-verbose ]
.br
Produce additional output.
.
.HP
.BR \-\-verifyudev
.br
If udev synchronisation is enabled, verify that udev operations get performed
correctly and try to fix up the device nodes afterwards if not.
.
.HP
.BR \-\-version
.br
Display the library and kernel driver version.
.br
.
.SH COMMANDS
.
.HP
.CMD_CLEAR
.br
Destroys the table in the inactive table slot for device_name.
.
.HP
.CMD_CREATE
.br
Creates a device with the given name.
If \fItable\fP or \fItable_file\fP is supplied, the table is loaded and made live.
Otherwise a table is read from standard input unless \fB\-\-notable\fP is used.
The optional \fIuuid\fP can be used in place of
device_name in subsequent dmsetup commands.
If successful the device will appear in table and for live
device the node \fI/dev/mapper/device_name\fP is created.
See below for more information on the table format.
.
.HP
.CMD_DEPS
.br
Outputs a list of devices referenced by the live table for the specified
device. Device names on output can be customised by following \fIoptions\fP:
\fBdevno\fP (major and minor pair, used by default),
\fBblkdevname\fP (block device name),
\fBdevname\fP (map name for device-mapper devices, equal to blkdevname otherwise).
.
.HP
.CMD_HELP
.br
Outputs a summary of the commands available, optionally including
the list of report fields.
.
.HP
.CMD_INFO
.br
Outputs some brief information about the device in the form:
.RS
.RS
 State: SUSPENDED|ACTIVE, READ-ONLY
 Tables present: LIVE and/or INACTIVE
 Open reference count
 Last event sequence number (used by \fBwait\fP)
 Major and minor device number
 Number of targets in the live table
 UUID
.RE
.RE
.HP
.CMD_INFOLONG
.br
Output you can customise.
Fields are comma-separated and chosen from the following list:
.BR name ,
.BR major ,
.BR minor ,
.BR attr ,
.BR open ,
.BR segments ,
.BR events ,
.BR uuid .
Attributes are:
.RI ( L )ive,
.RI ( I )nactive,
.RI ( s )uspended,
.RI ( r )ead-only,
.RI read-( w )rite.
Precede the list with '\fB+\fP' to append
to the default selection of columns instead of replacing it.
Precede any sort field with '\fB-\fP' for a reverse sort on that column.
.
.HP
.CMD_LS
.br
List device names.  Optionally only list devices that have at least
one target of the specified type.  Optionally execute a command for
each device.  The device name is appended to the supplied command.
Device names on output can be customised by following options:
\fBdevno\fP (major and minor pair, used by default),
\fBblkdevname\fP (block device name),
\fBdevname\fP (map name for device-mapper devices, equal to blkdevname otherwise).
\fB\-\-tree\fP displays dependencies between devices as a tree.
It accepts a comma-separate list of \fIoptions\fP.
Some specify the information displayed against each node:
.BR device / nodevice ;
.BR blkdevname ;
.BR active ", " open ", " rw ", " uuid .
Others specify how the tree is displayed:
.BR ascii ", " utf ", " vt100 ;
.BR compact ", " inverted ", " notrunc .
.
.HP
.BR load | \c
.CMD_RELOAD
.br
Loads \fItable\fP or \fItable_file\fP into the inactive table slot for device_name.
If neither is supplied, reads a table from standard input.
.
.HP
.CMD_MANGLE
.br
Ensure existing device-mapper \fIdevice_name\fP and UUID is in the correct mangled
form containing only whitelisted characters (supported by udev) and do
a rename if necessary. Any character not on the whitelist will be mangled
based on the \fB\-\-manglename\fP setting. Automatic rename works only for device
names and not for device UUIDs because the kernel does not allow changing
the UUID of active devices. Any incorrect UUIDs are reported only and they
must be manually corrected by deactivating the device first and then
reactivating it with proper mangling mode used (see also \fB\-\-manglename\fP).
.
.HP
.CMD_MESSAGE
.br
Send message to target. If sector not needed use 0.
.
.HP
.CMD_MKNODES
.br
Ensure that the node in \fI/dev/mapper\fP for \fIdevice_name\fP is correct.
If no device_name is supplied, ensure that all nodes in \fI/dev/mapper\fP
correspond to mapped devices currently loaded by the device-mapper kernel
driver, adding, changing or removing nodes as necessary.
.
.HP
.CMD_REMOVE
.br
Removes a device.  It will no longer be visible to dmsetup.  Open devices
cannot be removed, but adding \fB\-\-force\fP will replace the table with one
that fails all I/O.  \fB\-\-deferred\fP will enable deferred removal of open
devices - the device will be removed when the last user closes it. The deferred
removal feature is supported since version 4.27.0 of the device-mapper
driver available in upstream kernel version 3.13.  (Use \fBdmsetup version\fP
to check this.)  If an attempt to remove a device fails, perhaps because a process run
from a quick udev rule temporarily opened the device, the \fB\-\-retry\fP
option will cause the operation to be retried for a few seconds before failing.
Do NOT combine
\fB\-\-force\fP and \fB\-\-udevcookie\fP, as udev may start to process udev
rules in the middle of error target replacement and result in nondeterministic
result.
.
.HP
.CMD_REMOVE_ALL
.br
Attempts to remove all device definitions i.e. reset the driver.  This also runs
\fBmknodes\fP afterwards.  Use with care!  Open devices cannot be removed, but
adding \fB\-\-force\fP will replace the table with one that fails all I/O.
\fB\-\-deferred\fP will enable deferred removal of open devices - the device
will be removed when the last user closes it.  The deferred removal feature is
supported since version 4.27.0 of the device-mapper driver available in
upstream kernel version 3.13.
.
.HP
.CMD_RENAME
.br
Renames a device.
.
.HP
.CMD_RENAME_UUID
.br
Sets the uuid of a device that was created without a uuid.
After a uuid has been set it cannot be changed.
.
.HP
.CMD_RESUME
.br
Un-suspends a device.
If an inactive table has been loaded, it becomes live.
Postponed I/O then gets re-queued for processing.
.
.HP
.CMD_SETGEOMETRY
.br
Sets the device geometry to C/H/S.
.
.HP
.CMD_SPLITNAME
.br
Splits given \fIdevice name\fP into \fIsubsystem\fP constituents.
The default subsystem is LVM.
LVM currently generates device names by concatenating the names of the Volume
Group, Logical Volume and any internal Layer with a hyphen as separator.
Any hyphens within the names are doubled to escape them.
The precise encoding might change without notice in any future
release, so we recommend you always decode using the current version of
this command.
.HP
.BR stats " " \fIcommand " [" \fIoptions ]
.br
Manages IO statistics regions for devices.
See
.BR dmstats (8)
for more details.
.HP
.CMD_STATS
.br
Outputs status information for each of the device's targets.
With \fB\-\-target\fP, only information relating to the specified target type
any is displayed.  With \fB\-\-noflush\fP, the thin target (from version 1.3.0)
doesn't commit any outstanding changes to disk before reporting its statistics.

.HP
.CMD_SUSPEND
.br
Suspends a device.  Any I/O that has already been mapped by the device
but has not yet completed will be flushed.  Any further I/O to that
device will be postponed for as long as the device is suspended.
If there's a filesystem on the device which supports the operation,
an attempt will be made to sync it first unless \fB\-\-nolockfs\fP is specified.
Some targets such as recent (October 2006) versions of multipath may support
the \fB\-\-noflush\fP option.  This lets outstanding I/O that has not yet reached the
device to remain unflushed.
.
.HP
.CMD_TABLE
.br
Outputs the current table for the device in a format that can be fed
back in using the create or load commands.
With \fB\-\-target\fP, only information relating to the specified target type
is displayed.
Encryption keys are suppressed in the table output for the crypt
target unless the \fB\-\-showkeys\fP parameter is supplied.
.
.HP
.CMD_TARGETS
.br
Displays the names and versions of the currently-loaded targets.
.
.HP
.CMD_UDEVCOMPLETE
.br
Wake any processes that are waiting for udev to complete processing the specified cookie.
.
.HP
.CMD_UDEVCOMPLETE_ALL
.br
Remove all cookies older than the specified number of minutes.
Any process waiting on a cookie will be resumed immediately.
.
.HP
.CMD_UDEVCOOKIES
.br
List all existing cookies. Cookies are system-wide semaphores with keys
prefixed by two predefined bytes (0x0D4D).
.
.HP
.CMD_UDEVCREATECOOKIE
.br
Creates a new cookie to synchronize actions with udev processing.
The output is a cookie value. Normally we don't need to create cookies since
dmsetup creates and destroys them for each action automatically. However, we can
generate one explicitly to group several actions together and use only one
cookie instead. We can define a cookie to use for each relevant command by using
\fB\-\-udevcookie\fP option. Alternatively, we can export this value into the environment
of the dmsetup process as \fBDM_UDEV_COOKIE\fP variable and it will be used automatically
with all subsequent commands until it is unset.
Invoking this command will create system-wide semaphore that needs to be cleaned
up explicitly by calling udevreleasecookie command.
.
.HP
.CMD_UDEVFLAGS
.br
Parses given \fIcookie\fP value and extracts any udev control flags encoded.
The output is in environment key format that is suitable for use in udev
rules. If the flag has its symbolic name assigned then the output is
DM_UDEV_FLAG_<flag_name> = '1', DM_UDEV_FLAG<flag_position> = '1' otherwise.
Subsystem udev flags don't have symbolic names assigned and these ones are
always reported as DM_SUBSYSTEM_UDEV_FLAG<flag_position> = '1'. There are
16 udev flags altogether.
.
.HP
.CMD_UDEVRELEASECOOKIE
.br
Waits for all pending udev processing bound to given cookie value and clean up
the cookie with underlying semaphore. If the cookie is not given directly,
the command will try to use a value defined by \fBDM_UDEV_COOKIE\fP environment variable.
.
.HP
.CMD_VERSION
.br
Outputs version information.
.
.HP
.CMD_WAIT
.br
Sleeps until the event counter for device_name exceeds event_nr.
Use \fB\-v\fP to see the event number returned.
To wait until the next event is triggered, use \fBinfo\fP to find
the last event number.
With \fB\-\-noflush\fP, the thin target (from version 1.3.0) doesn't commit
any outstanding changes to disk before reporting its statistics.
.
.HP
.CMD_WIPE_TABLE
.br
Wait for any I/O in-flight through the device to complete, then
replace the table with a new table that fails any new I/O
sent to the device.  If successful, this should release any devices
held open by the device's table(s).
.
.SH TABLE FORMAT
.
Each line of the table specifies a single target and is of the form:
.sp
.I logical_start_sector num_sectors
.B target_type
.I target_args
.sp
Simple target types and target args include:
.
.TP
.B linear \fIdestination_device start_sector
The traditional linear mapping.
.TP
.B striped \fInum_stripes chunk_size \fR[\fIdestination start_sector\fR]...
Creates a striped area.
.br
e.g. striped 2 32 /dev/hda1 0 /dev/hdb1 0
will map the first chunk (16k) as follows:
.RS
.RS
 LV chunk 1 -> hda1, chunk 1
 LV chunk 2 -> hdb1, chunk 1
 LV chunk 3 -> hda1, chunk 2
 LV chunk 4 -> hdb1, chunk 2
 etc.
.RE
.RE
.TP
.B error
Errors any I/O that goes to this area.  Useful for testing or
for creating devices with holes in them.
.TP
.B zero
Returns blocks of zeroes on reads.  Any data written is discarded silently.
This is a block-device equivalent of the \fI/dev/zero\fP
character-device data sink described in \fBnull\fP(4).
.P
More complex targets include:
.TP
.B cache
Improves performance of a block device (eg, a spindle) by dynamically
migrating some of its data to a faster smaller device (eg, an SSD).
.TP
.B crypt
Transparent encryption of block devices using the kernel crypto API.
.TP
.B delay
Delays reads and/or writes to different devices.  Useful for testing.
.TP
.B flakey
Creates a similar mapping to the linear target but
exhibits unreliable behaviour periodically.
Useful for simulating failing devices when testing.
.TP
.B mirror
Mirrors data across two or more devices.
.TP
.B multipath
Mediates access through multiple paths to the same device.
.TP
.B raid
Offers an interface to the kernel's software raid driver, md.
.TP
.B snapshot
Supports snapshots of devices.
.TP
.BR thin ", " thin-pool
Supports thin provisioning of devices and also provides a better snapshot support.
.P
To find out more about the various targets and their table formats and status
lines, please read the files in the Documentation/device-mapper directory in
the kernel source tree.
(Your distribution might include a copy of this information in the
documentation directory for the device-mapper package.)
.
.SH EXAMPLES
.
# A table to join two disks together
.br
0 1028160 linear /dev/hda 0
.br
1028160 3903762 linear /dev/hdb 0
.br
# A table to stripe across the two disks,
.br
# and add the spare space from
.br
# hdb to the back of the volume
.br
0 2056320 striped 2 32 /dev/hda 0 /dev/hdb 0
.br
2056320 2875602 linear /dev/hdb 1028160
.
.SH ENVIRONMENT VARIABLES
.
.TP
.B DM_DEV_DIR
The device directory name.
Defaults to "\fI/dev\fP" and must be an absolute path.
.TP
.B DM_UDEV_COOKIE
A cookie to use for all relevant commands to synchronize with udev processing.
It is an alternative to using \fB\-\-udevcookie\fP option.
.TP
.B DM_DEFAULT_NAME_MANGLING_MODE
A default mangling mode. Defaults to "\fB#DEFAULT_MANGLING#\fP"
and it is an alternative to using \fB\-\-manglename\fP option.
.
.SH AUTHORS
.
Original version: Joe Thornber <thornber@redhat.com>
.
.SH SEE ALSO
.
.BR dmstats (8),
.BR udev (7),
.BR udevadm (8)
.P
LVM2 resource page: https://www.sourceware.org/lvm2/
.br
Device-mapper resource page: http://sources.redhat.com/dm/
