1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

config: editing descriptions

Update wording and formatting.
This commit is contained in:
David Teigland 2015-04-10 16:41:54 -05:00
parent 2872e8c289
commit b851b74cba

View File

@ -123,7 +123,8 @@ cfg_runtime(config_profile_dir_CFG, "profile_dir", config_CFG_SECTION, 0, CFG_TY
"Directory where LVM looks for configuration profiles.\n")
cfg(devices_dir_CFG, "dir", devices_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DEV_DIR, vsn(1, 0, 0),
"Where do you want your volume groups to appear ?")
"Directory in which to create volume group device nodes.\n"
"Commands also accept this as a prefix on volume group names.\n")
cfg_array(devices_scan_CFG, "scan", devices_CFG_SECTION, 0, CFG_TYPE_STRING, "#S/dev", vsn(1, 0, 0),
"An array of directories that contain the device nodes you wish\n"
@ -138,18 +139,20 @@ cfg(devices_obtain_device_list_from_udev_CFG, "obtain_device_list_from_udev", de
"subdirectories found in the device directory. This setting is applied\n"
"to udev-managed device directory only, other directories will be scanned\n"
"fully. LVM needs to be compiled with udev support for this setting to\n"
"take effect. N.B. Any device node or symlink not managed by udev in\n"
"udev directory will be ignored with this setting on.\n")
"take effect. Any device node or symlink not managed by udev in udev\n"
"directory will be ignored with this setting on.\n")
cfg(devices_external_device_info_source_CFG, "external_device_info_source", devices_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_EXTERNAL_DEVICE_INFO_SOURCE, vsn(2, 2, 116),
"Select external device information source to use for further and more\n"
"detailed device determination. Some information may already be available\n"
"in the system and LVM can use this information to determine the exact\n"
"type or use of the device it processes. Using existing external device\n"
"information source can speed up device processing as LVM does not need\n"
"to run its own native routines to acquire this information. For example,\n"
"such information is used to drive LVM filtering like MD component\n"
"detection, multipath component detection, partition detection and others.\n"
"Select external device information source to use for\n"
"further and more detailed device determination. Some\n"
"information may already be available in the system and\n"
"LVM can use this information to determine the exact type\n"
"or use of the device it processes. Using existing external\n"
"device information source can speed up device processing\n"
"as LVM does not need to run its own native routines to acquire\n"
"this information. For example, such information is used to\n"
"drive LVM filtering like MD component detection, multipath\n"
"component detection, partition detection and others.\n"
"Possible options are: none, udev.\n"
"none - No external device information source is used.\n"
"udev - Reuse existing udev database records. Applicable\n"
@ -157,84 +160,74 @@ cfg(devices_external_device_info_source_CFG, "external_device_info_source", devi
cfg_array(devices_preferred_names_CFG, "preferred_names", devices_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 2, 19),
"If several entries in the scanned directories correspond to the\n"
"same block device and the tools need to display a name for device,\n"
"all the pathnames are matched against each item in the following\n"
"list of regular expressions in turn and the first match is used.\n"
"same block device and the tools need to display a name for the device,\n"
"all the path names are matched against each item in this list of\n"
"regular expressions. The first match is used.\n"
"Try to avoid using undescriptive /dev/dm-N names, if present.\n"
"In case no prefererred name matches or if preferred_names are not\n"
"defined at all, builtin rules are used to determine the preference.\n"
"The first builtin rule checks path prefixes and it gives preference\n"
"based on this ordering (where /dev depends on devices/dev setting):\n"
"/dev/mapper > /dev/disk > /dev/dm-* > /dev/block\n"
"If the ordering above cannot be applied, the path with fewer slashes\n"
"gets preference then.\n"
"If the number of slashes is the same, a symlink gets preference.\n"
"Finally, if all the rules mentioned above are not applicable,\n"
"lexicographical order is used over paths and the smallest one\n"
"of all gets preference.\n"
"If no preferred name matches, or if preferred_names are not\n"
"defined, built-in rules are used until one produces a preference.\n"
"Rule 1 checks path prefixes and gives preference in this order:\n"
"/dev/mapper, /dev/disk, /dev/dm-*, /dev/block (/dev from devices/dev)\n"
"Rule 2 prefers the path with the least slashes.\n"
"Rule 3 prefers a symlink.\n"
"Rule 4 prefers the path with least value in lexicographical order.\n"
"Example:\n"
"preferred_names = [ \"^/dev/mpath/\", \"^/dev/mapper/mpath\", \"^/dev/[hs]d\" ]\n")
cfg_array(devices_filter_CFG, "filter", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0),
"A filter that tells LVM to only use a restricted set of devices.\n"
"The filter consists of an array of regular expressions. These\n"
"expressions can be delimited by a character of your choice, and\n"
"prefixed with either an 'a' (for accept) or 'r' (for reject).\n"
"The first expression found to match a device name determines if\n"
"the device will be accepted or rejected (ignored). Devices that\n"
"don't match any patterns are accepted.\n"
"Be careful if there there are symbolic links or multiple filesystem\n"
"entries for the same device as each name is checked separately against\n"
"the list of patterns. The effect is that if the first pattern in the\n"
"list to match a name is an 'a' pattern for any of the names, the device\n"
"is accepted; otherwise if the first pattern in the list to match a name\n"
"is an 'r' pattern for any of the names it is rejected; otherwise it is\n"
"accepted.\n"
"Don't have more than one filter line active at once: only one gets used.\n"
"Run vgscan after you change this parameter to ensure that\n"
"the cache file gets regenerated (see below).\n"
"If it doesn't do what you expect, check the output of 'vgscan -vvvv'.\n"
"If lvmetad is used, then see \"A note about device filtering while\n"
"lvmetad is used\" comment that is attached to global/use_lvmetad setting.\n"
"Examples:\n"
"By default we accept every block device:\n"
"Patterns used to accept or reject devices found by a scan.\n"
"Patterns are regular expressions delimited by any character\n"
"and preceded by 'a' for accept or 'r' for reject.\n"
"The list is traversed in order, and the first regex that matches\n"
"determines if the device is accepted or rejected (ignored).\n"
"Devices that don't match any patterns are accepted.\n"
"If there are several names for the same device, e.g. from symlinks,\n"
"the first pattern matching any of the names determines if the\n"
"device is accepted or rejected (depending on whether the first\n"
"matching pattern is 'a' or 'r'.)\n"
"Run vgscan after changing the filter to regenerate the cache.\n"
"See the use_lvmetad comment for a special case regarding filters.\n"
"Example:\n"
"Accept every block device.\n"
"filter = [ \"a/.*/\" ]\n"
"Exclude the cdrom drive:\n"
"Example:\n"
"Reject the cdrom drive.\n"
"filter = [ \"r|/dev/cdrom|\" ]\n"
"When testing I like to work with just loopback devices:\n"
"Example:\n"
"Work with just loopback devices, e.g. for testing.\n"
"filter = [ \"a/loop/\", \"r/.*/\" ]\n"
"Or maybe all loops and ide drives except hdc:\n"
"Example:\n"
"Accept all loop devices and ide drives except hdc.\n"
"filter =[ \"a|loop|\", \"r|/dev/hdc|\", \"a|/dev/ide|\", \"r|.*|\" ]\n"
"Use anchors if you want to be really specific:\n"
"Example:\n"
"Use anchors to be very specific.\n"
"filter = [ \"a|^/dev/hda8$|\", \"r/.*/\" ]\n")
cfg_array(devices_global_filter_CFG, "global_filter", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 98),
"Since filter is often overridden from command line, it is not suitable\n"
"for system-wide device filtering (udev rules, lvmetad). To hide devices\n"
"from LVM-specific udev processing and/or from lvmetad, you need to set\n"
"global_filter. The syntax is the same as for normal filter\n"
"above. Devices that fail the global_filter are not even opened by LVM.\n")
"Since filter is often overridden from the command line,\n"
"it is not suitable for system-wide device filtering,\n"
"e.g. udev rules and lvmetad. To hide devices from LVM-specific\n"
"udev processing and lvmetad, use global_filter.\n"
"The syntax is the same as devices/filter above.\n"
"Devices rejected by global_filter are not opened by LVM.\n")
cfg_runtime(devices_cache_CFG, "cache", devices_CFG_SECTION, 0, CFG_TYPE_STRING, vsn(1, 0, 0),
"This setting has been replaced by the cache_dir setting.\n")
"This setting has been replaced by the devices/cache_dir setting.\n")
cfg_runtime(devices_cache_dir_CFG, "cache_dir", devices_CFG_SECTION, 0, CFG_TYPE_STRING, vsn(1, 2, 19),
"The results of the filtering are cached on disk to avoid\n"
"The results of filtering are cached on disk to avoid\n"
"rescanning dud devices (which can take a very long time).\n"
"By default this cache is stored in a file named .cache\n"
"in the directory specified by this setting.\n"
"It is safe to delete the contents: the tools regenerate it.\n"
"(The old setting 'cache' is still respected if neither of\n"
"these new ones is present.)\n"
"N.B. If obtain_device_list_from_udev is set to 1 the list of\n"
"devices is instead obtained from udev and any existing .cache\n"
"file is removed.\n")
"It is safe to delete this file; the tools regenerate it.\n"
"If obtain_device_list_from_udev is enabled, the list of devices\n"
"is obtained from udev and any existing .cache file is removed.\n")
cfg(devices_cache_file_prefix_CFG, "cache_file_prefix", devices_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, DEFAULT_CACHE_FILE_PREFIX, vsn(1, 2, 19),
"A prefix used before the .cache file name.\n")
"A prefix used before the .cache file name. See devices/cache_dir.\n")
cfg(devices_write_cache_state_CFG, "write_cache_state", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(1, 0, 0),
"Enable/disable writing the cache file.\n")
"Enable/disable writing the cache file. See devices/cache_dir.\n")
cfg_array(devices_types_CFG, "types", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT | CFG_TYPE_STRING, NULL, vsn(1, 0, 0),
"List of pairs of additional acceptable block device types found\n"
@ -243,15 +236,18 @@ cfg_array(devices_types_CFG, "types", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED
"types = [ \"fd\", 16 ]\n")
cfg(devices_sysfs_scan_CFG, "sysfs_scan", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_SYSFS_SCAN, vsn(1, 0, 8),
"If sysfs is mounted (2.6 kernels) restrict device scanning to\n"
"the block devices it believes are valid.\n")
"Restrict device scanning to block devices that sysfs believes\n"
"are valid. (sysfs must be part of the kernel and mounted.)\n"
"This is a quick way of filtering out block devices that are\n"
"not present.\n")
cfg(devices_multipath_component_detection_CFG, "multipath_component_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MULTIPATH_COMPONENT_DETECTION, vsn(2, 2, 89),
"Ignore devices used as component paths of device-mapper multipath devices.\n")
"Ignore devices used as component paths of device-mapper\n"
"multipath devices.\n")
cfg(devices_md_component_detection_CFG, "md_component_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MD_COMPONENT_DETECTION, vsn(1, 0, 18),
"Ignore devices used as components of software RAID (md) devices by looking\n"
"for md superblocks.\n")
"Ignore devices used as components of software RAID (md) devices\n"
"by looking for md superblocks.\n")
cfg(devices_fw_raid_component_detection_CFG, "fw_raid_component_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_FW_RAID_COMPONENT_DETECTION, vsn(2, 2, 112),
"Ignore devices used as components of firmware RAID devices.\n"
@ -260,73 +256,73 @@ cfg(devices_fw_raid_component_detection_CFG, "fw_raid_component_detection", devi
"this detection to execute.\n")
cfg(devices_md_chunk_alignment_CFG, "md_chunk_alignment", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MD_CHUNK_ALIGNMENT, vsn(2, 2, 48),
"If a PV is placed directly upon an md device, align its data blocks\n"
"with the md device's stripe-width.\n")
"If a PV is placed directly upon an md device, align its data\n"
"blocks with the md device's stripe-width.\n")
cfg(devices_default_data_alignment_CFG, "default_data_alignment", devices_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_DATA_ALIGNMENT, vsn(2, 2, 75),
"Default alignment of the start of a data area in MB. If set to 0,\n"
"a value of 64KB will be used. Set to 1 for 1MiB, 2 for 2MiB, etc.\n")
"Default alignment of the start of a data area in MB.\n"
"If set to 0, a value of 64KB will be used.\n"
"Set to 1 for 1MiB, 2 for 2MiB, etc.\n")
cfg(devices_data_alignment_detection_CFG, "data_alignment_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DATA_ALIGNMENT_DETECTION, vsn(2, 2, 51),
"The start of a PV's data area will be a multiple of the minimum_io_size\n"
"or optimal_io_size exposed in sysfs.\n"
"minimum_io_size - the smallest request the device can perform\n"
"without incurring a read-modify-write penalty (e.g. MD's chunk size)\n"
"optimal_io_size - the device's preferred unit of receiving I/O\n"
"(e.g. MD's stripe width)\n"
"The start of a PV data area will be a multiple of\n"
"minimum_io_size or optimal_io_size exposed in sysfs.\n"
"minimum_io_size is the smallest request the device can perform\n"
"without incurring a read-modify-write penalty, e.g. MD chunk size.\n"
"optimal_io_size is the device's preferred unit of receiving I/O,\n"
"e.g. MD stripe width.\n"
"minimum_io_size is used if optimal_io_size is undefined (0).\n"
"If md_chunk_alignment is enabled, that detects the optimal_io_size.\n"
"This setting takes precedence over md_chunk_alignment.\n")
cfg(devices_data_alignment_CFG, "data_alignment", devices_CFG_SECTION, 0, CFG_TYPE_INT, 0, vsn(2, 2, 45),
"Alignment (in KB) of start of data area when creating a new PV.\n"
"md_chunk_alignment and data_alignment_detection are disabled if set.\n"
"Set to 0 for the default alignment (see: data_alignment_default)\n"
"or page size, if larger.\n")
"If a PV is placed directly upon an md device and\n"
"md_chunk_alignment or data_alignment_detection are enabled,\n"
"then this setting is ignored. Otherwise, md_chunk_alignment\n"
"and data_alignment_detection are disabled if this is set.\n"
"Set to 0 to use the default alignment or the page size, if larger.\n")
cfg(devices_data_alignment_offset_detection_CFG, "data_alignment_offset_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DATA_ALIGNMENT_OFFSET_DETECTION, vsn(2, 2, 50),
"The start of the PV's aligned data area will be shifted by\n"
"the alignment_offset exposed in sysfs. This offset is often 0 but\n"
"may be non-zero; e.g.: certain 4KB sector drives that compensate for\n"
"The start of a PV aligned data area will be shifted by\n"
"the alignment_offset exposed in sysfs. This offset is often 0, but\n"
"may be non-zero. Certain 4KB sector drives that compensate for\n"
"windows partitioning will have an alignment_offset of 3584 bytes\n"
"(sector 7 is the lowest aligned logical block, the 4KB sectors start\n"
"at LBA -1, and consequently sector 63 is aligned on a 4KB boundary).\n"
"But note that pvcreate --dataalignmentoffset will skip this detection.\n")
"pvcreate --dataalignmentoffset will skip this detection.\n")
cfg(devices_ignore_suspended_devices_CFG, "ignore_suspended_devices", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_IGNORE_SUSPENDED_DEVICES, vsn(1, 2, 19),
"While scanning the system for PVs, skip a device-mapper device\n"
"that has its I/O suspended. Otherwise, LVM waits for the device\n"
"to become accessible. This should only be needed in recovery situations.\n")
"While scanning the system for PVs, skip a device-mapper\n"
"device that has its I/O suspended. Otherwise, LVM waits\n"
"for the device to become accessible. This should only be\n"
"needed in recovery situations.\n")
cfg(devices_ignore_lvm_mirrors_CFG, "ignore_lvm_mirrors", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_IGNORE_LVM_MIRRORS, vsn(2, 2, 104),
"This setting determines whether logical volumes of 'mirror' segment\n"
"type are scanned for LVM labels. This affects the ability of\n"
"mirrors to be used as physical volumes. If ignore_lvm_mirrors\n"
"is enabled, it becomes impossible to create volume groups on top\n"
"of mirror logical volumes - i.e. to stack volume groups on mirrors.\n"
"Allowing mirror logical volumes to be scanned (ignore_lvm_mirrors is\n"
"disabled) can potentially cause LVM processes and I/O to the mirror to\n"
"become blocked. This is due to the way that the 'mirror' segment type\n"
"handles failures. In order for the hang to manifest itself, an LVM\n"
"command must be run just after a failure and before the automatic LVM\n"
"repair process takes place OR there must be failures in multiple mirrors\n"
"in the same volume group at the same time with write failures occurring\n"
"moments before a scan of the mirror's labels.\n"
"Note that these scanning limitations do not apply to the LVM RAID\n"
"types, like 'raid1'. The RAID segment types handle failures in a\n"
"different way and are not subject to possible process or I/O blocking.\n"
"It is encouraged that users enable ignore_lvm_mirrors if they are using\n"
"the 'mirror' segment type. Users that require volume group stacking on\n"
"mirrored logical volumes should consider using the 'raid1' segment type.\n"
"The 'raid1' segment type is not available for active/active clustered\n"
"volume groups. Enable ignore_lvm_mirrors to disallow stacking and\n"
"thereby avoid a possible deadlock.\n")
"Enable this to avoid possible deadlocks when using the 'mirror'\n"
"segment type. This setting determines whether logical volumes\n"
"using the 'mirror' segment type are scanned for LVM labels.\n"
"This affects the ability of mirrors to be used as physical volumes.\n"
"If this setting is enabled, it becomes impossible to create VGs\n"
"on top of mirror LVs, i.e. to stack VGs on mirror LVs.\n"
"If this setting is disabled, allowing mirror LVs to be scanned,\n"
"it may cause LVM processes and I/O to the mirror to become blocked.\n"
"This is due to the way that the mirror segment type handles failures.\n"
"In order for the hang to occur, an LVM command must be run just after\n"
"a failure and before the automatic LVM repair process takes place,\n"
"or there must be failures in multiple mirrors in the same VG at the\n"
"same time with write failures occurring moments before a scan of the\n"
"mirror's labels.\n"
"The 'mirror' scanning problems do not apply to LVM RAID types like\n"
"'raid1' which handle failures in a different way, making them a\n"
"better choice for VG stacking.\n")
cfg(devices_disable_after_error_count_CFG, "disable_after_error_count", devices_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_DISABLE_AFTER_ERROR_COUNT, vsn(2, 2, 75),
"During each LVM operation errors received from each device are counted.\n"
"If the counter of a particular device exceeds the limit set here, no\n"
"further I/O is sent to that device for the remainder of the respective\n"
"operation. Setting the parameter to 0 disables the counters altogether.\n")
"During each LVM operation, errors received from each device\n"
"are counted. If the counter of a device exceeds the limit set\n"
"here, no further I/O is sent to that device for the remainder\n"
"of the operation.\n"
"Setting this to 0 disables the counters altogether.\n")
cfg(devices_require_restorefile_with_uuid_CFG, "require_restorefile_with_uuid", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_REQUIRE_RESTOREFILE_WITH_UUID, vsn(2, 2, 73),
"Allow use of pvcreate --uuid without requiring --restorefile.\n")
@ -334,18 +330,19 @@ cfg(devices_require_restorefile_with_uuid_CFG, "require_restorefile_with_uuid",
cfg(devices_pv_min_size_CFG, "pv_min_size", devices_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_PV_MIN_SIZE_KB, vsn(2, 2, 85),
"Minimum size (in KB) of block devices which can be used as PVs.\n"
"In a clustered environment all nodes must use the same value.\n"
"Any value smaller than 512KB is ignored.\n"
"The original built-in setting was 512 up to and including version 2.02.84.\n")
"Any value smaller than 512KB is ignored. The previous built-in\n"
"value was 512.\n")
cfg(devices_issue_discards_CFG, "issue_discards", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ISSUE_DISCARDS, vsn(2, 2, 85),
"Issue discards to a logical volumes's underlying physical volume(s) when\n"
"the logical volume is no longer using the physical volumes' space (e.g.\n"
"lvremove, lvreduce, etc). Discards inform the storage that a region is\n"
"no longer in use. Storage that supports discards advertise the protocol\n"
"specific way discards should be issued by the kernel (TRIM, UNMAP, or\n"
"WRITE SAME with UNMAP bit set). Not all storage will support or benefit\n"
"from discards but SSDs and thinly provisioned LUNs generally do. If enabled,\n"
"discards will only be issued if both the storage and kernel provide support.\n")
"Issue discards to a logical volume's underlying physical volumes\n"
"when the logical volume is no longer using the physical volumes'\n"
"space, e.g. lvremove, lvreduce. Discards inform the storage that\n"
"a region is no longer in use. Storage that supports discards\n"
"advertise the protocol specific way discards should be issued by\n"
"the kernel (TRIM, UNMAP, or WRITE SAME with UNMAP bit set).\n"
"Not all storage will support or benefit from discards, but SSDs\n"
"and thinly provisioned LUNs generally do. If enabled, discards\n"
"will only be issued if both the storage and kernel provide support.\n")
cfg_array(allocation_cling_tag_list_CFG, "cling_tag_list", allocation_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 77),
"When searching for free space to extend an LV, the 'cling'\n"
@ -370,36 +367,37 @@ cfg(allocation_maximise_cling_CFG, "maximise_cling", allocation_CFG_SECTION, 0,
"and revert to the previous algorithm.\n")
cfg(allocation_use_blkid_wiping_CFG, "use_blkid_wiping", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, 2, 105),
"Enable use of the blkid library instead of native LVM code to detect\n"
"any existing signatures while creating new Physical Volumes and\n"
"Logical Volumes. LVM needs to be compiled with blkid wiping support\n"
"for this setting to take effect.\n"
"Use the blkid library instead of native LVM code to detect\n"
"any existing signatures while creating new PVs and LVs.\n"
"LVM needs to be compiled with blkid wiping support for this\n"
"setting to take effect.\n"
"LVM native detection code is currently able to recognize:\n"
"MD device signatures, swap signature, and LUKS signatures.\n"
"To see the list of signatures recognized by blkid, check the output\n"
"of 'blkid -k' command. The blkid can recognize more signatures than\n"
"LVM native detection code, but due to this higher number of signatures\n"
"to be recognized, it can take more time to complete the signature scan.\n")
"To see the list of signatures recognized by blkid, check the\n"
"output of the 'blkid -k' command. blkid can recognize more\n"
"signatures than LVM native detection code, but due to this\n"
"higher number of signatures to be recognized, it can take more\n"
"time to complete the signature scan.\n")
cfg(allocation_wipe_signatures_when_zeroing_new_lvs_CFG, "wipe_signatures_when_zeroing_new_lvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, 2, 105),
"Look for any signatures on a newly-created Logical Volume\n"
"whenever zeroing of the LV is done (zeroing is controlled by -Z/--zero\n"
"option and if not specified, zeroing is used by default if possible).\n"
"While zeroing simply overwrites first 4 KiB of the LV with zeroes without\n"
"doing any signature detection, signature wiping goes beyond that and it\n"
"can detect exact type and position of signature within the whole LV.\n"
"As such, it provides cleaner LV for use after creation as all known\n"
"signatures are wiped so that the LV is not claimed by other tools\n"
"incorrectly by the existence of old signature from any previous use.\n"
"The number of signatures that LVM can detect depends on detection\n"
"code that is selected - see also use_blkid_wiping option.\n"
"Wiping of each detected signature must be confirmed.\n"
"Look for and erase any signatures while zeroing a new LV.\n"
"Zeroing is controlled by the -Z/--zero option, and if not\n"
"specified, zeroing is used by default if possible.\n"
"Zeroing simply overwrites the first 4 KiB of a new LV\n"
"with zeroes and does no signature detection or wiping.\n"
"Signature wiping goes beyond zeroing and detects exact\n"
"types and positions of signatures within the whole LV.\n"
"It provides a cleaner LV after creation as all known\n"
"signatures are wiped. The LV is not claimed incorrectly\n"
"by other tools because of old signatures from previous use.\n"
"The number of signatures that LVM can detect depends on the\n"
"detection code that is selected (see use_blkid_wiping.)\n"
"Wiping each detected signature must be confirmed.\n"
"The command line option -W/--wipesignatures takes precedence\n"
"over this setting.\n"
"When disabled, signatures on newly-created Logical Volumes\n"
"are never detected and wiped and you always need to use\n"
"-W/--wipesignatures y option directly to enable this feature\n"
"no matter whether zeroing is used or not.\n")
"When this setting is disabled, signatures on new LVs are\n"
"not detected or erased unless the -W/--wipesignatures y\n"
"option is used directly.\n")
cfg(allocation_mirror_logs_require_separate_pvs_CFG, "mirror_logs_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MIRROR_LOGS_REQUIRE_SEPARATE_PVS, vsn(2, 2, 85),
"Guarantees that mirror logs will always be placed on\n"
@ -413,28 +411,31 @@ cfg(allocation_cache_pool_metadata_require_separate_pvs_CFG, "cache_pool_metadat
cfg(allocation_cache_pool_cachemode_CFG, "cache_pool_cachemode", allocation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_CACHE_POOL_CACHEMODE, vsn(2, 2, 113),
"The default cache mode used for new cache pools.\n"
"Possible options are: writethrough, writeback.\n"
"writethrough - Data blocks are immediately written from the cache to disk.\n"
"writeback - Data blocks are written from the cache back to disk after\n"
"some delay to improve performance.\n")
"writethrough - Data blocks are immediately written from\n"
"the cache to disk.\n"
"writeback - Data blocks are written from the cache back\n"
"to disk after some delay to improve performance.\n")
cfg_runtime(allocation_cache_pool_chunk_size_CFG, "cache_pool_chunk_size", allocation_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, vsn(2, 2, 106),
"The minimal chunk size (in kiB) for cache pool volumes.\n"
"Using a chunk_size that is too large can result in wasteful use of\n"
"the cache, where small reads and writes can cause large sections of\n"
"an LV to be mapped into the cache. However, choosing a chunk_size\n"
"that is too small can result in more overhead trying to manage the\n"
"numerous chunks that become mapped into the cache. The former is\n"
"more of a problem than the latter in most cases, so we default to\n"
"a value that is on the smaller end of the spectrum. Supported values\n"
"range from 32(kiB) to 1048576 in multiples of 32.\n")
"Using a chunk_size that is too large can result in wasteful\n"
"use of the cache, where small reads and writes can cause\n"
"large sections of an LV to be mapped into the cache. However,\n"
"choosing a chunk_size that is too small can result in more\n"
"overhead trying to manage the numerous chunks that become mapped\n"
"into the cache. The former is more of a problem than the latter\n"
"in most cases, so we default to a value that is on the smaller\n"
"end of the spectrum. Supported values range from 32(kiB) to\n"
"1048576 in multiples of 32.\n")
cfg(allocation_thin_pool_metadata_require_separate_pvs_CFG, "thin_pool_metadata_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_THIN_POOL_METADATA_REQUIRE_SEPARATE_PVS, vsn(2, 2, 89),
"Guarantees that thin pool metadata will always\n"
"be placed on different PVs from the pool data.\n")
cfg(allocation_thin_pool_zero_CFG, "thin_pool_zero", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_BOOL, DEFAULT_THIN_POOL_ZERO, vsn(2, 2, 99),
"Enable/disable zeroing of thin pool data chunks before their first use.\n"
"N.B. zeroing larger thin pool chunk size degrades performance.\n")
"Enable/disable zeroing of thin pool data chunks before\n"
"their first use. Zeroing larger thin pool chunk size\n"
"reduces performance.\n")
cfg(allocation_thin_pool_discards_CFG, "thin_pool_discards", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_STRING, DEFAULT_THIN_POOL_DISCARDS, vsn(2, 2, 99),
"The discards behaviour of thin pool volumes.\n"
@ -443,25 +444,26 @@ cfg(allocation_thin_pool_discards_CFG, "thin_pool_discards", allocation_CFG_SECT
cfg(allocation_thin_pool_chunk_size_policy_CFG, "thin_pool_chunk_size_policy", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_STRING, DEFAULT_THIN_POOL_CHUNK_SIZE_POLICY, vsn(2, 2, 101),
"The chunk size calculation policy for thin pool volumes.\n"
"Possible options are: generic, performance.\n"
"generic - if thin_pool_chunk_size is defined, use it.\n"
"generic - If thin_pool_chunk_size is defined, use it.\n"
"Otherwise, calculate the chunk size based on estimation and\n"
"device hints exposed in sysfs - the minimum_io_size.\n"
"The chunk size is always at least 64KiB.\n"
"performance - if thin_pool_chunk_size is defined, use it.\n"
"performance - If thin_pool_chunk_size is defined, use it.\n"
"Otherwise, calculate the chunk size for performance based on\n"
"device hints exposed in sysfs - the optimal_io_size.\n"
"The chunk size is always at least 512KiB.\n")
cfg_runtime(allocation_thin_pool_chunk_size_CFG, "thin_pool_chunk_size", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA | CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, vsn(2, 2, 99),
"The minimal chunk size (in KB) for thin pool volumes.\n"
"Use of the larger chunk size may improve performance for plain\n"
"thin volumes, however using them for snapshot volumes is less efficient,\n"
"as it consumes more space and takes extra time for copying.\n"
"When unset, lvm tries to estimate chunk size starting from 64KB\n"
"Supported values are in range from 64 to 1048576.\n")
"Larger chunk sizes may improve performance for plain\n"
"thin volumes, however using them for snapshot volumes\n"
"is less efficient, as it consumes more space and takes\n"
"extra time for copying. When unset, lvm tries to estimate\n"
"chunk size starting from 64KB. Supported values are in\n"
"the range 64 to 1048576.\n")
cfg(allocation_physical_extent_size_CFG, "physical_extent_size", allocation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_EXTENT_SIZE, vsn(2, 2, 112),
"Default physical extent size to use for newly created VGs (in KB).\n")
"Default physical extent size to use for new VGs (in KB).\n")
cfg(log_verbose_CFG, "verbose", log_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_VERBOSE, vsn(1, 0, 0),
"Controls the messages sent to stdout or stderr.\n")
@ -487,18 +489,22 @@ cfg(log_overwrite_CFG, "overwrite", log_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_O
"Overwrite the log file each time the program is run.\n")
cfg(log_level_CFG, "level", log_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_LOGLEVEL, vsn(1, 0, 0),
"The level of log messages that are sent to the log file and/or syslog.\n"
"There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.\n"
"The level of log messages that are sent to the\n"
"log file and/or syslog. There are 6 syslog-like\n"
"log levels currently in use: 2 to 7 inclusive.\n"
"7 is the most verbose (LOG_DEBUG).\n")
cfg(log_indent_CFG, "indent", log_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_INDENT, vsn(1, 0, 0),
"Format of output messages: indent messages according to their severity.\n")
"Format of output messages:\n"
"indent messages according to their severity.\n")
cfg(log_command_names_CFG, "command_names", log_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_CMD_NAME, vsn(1, 0, 0),
"Format of output messages: display the command name on each line output.\n")
"Format of output messages:\n"
"display the command name on each line output.\n")
cfg(log_prefix_CFG, "prefix", log_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, DEFAULT_MSG_PREFIX, vsn(1, 0, 0),
"Format of output messages: a prefix to use before the message text.\n"
"Format of output messages:\n"
"a prefix to use before the message text.\n"
"(After the command name, if selected).\n"
"Two spaces allows you to see/grep the severity of each message.\n"
"To make the messages look similar to the original LVM tools use:\n"
@ -511,10 +517,11 @@ cfg(log_activation_CFG, "activation", log_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn(
cfg(log_activate_file_CFG, "activate_file", log_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), NULL)
cfg_array(log_debug_classes_CFG, "debug_classes", log_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, "#Smemory#Sdevices#Sactivation#Sallocation#Slvmetad#Smetadata#Scache#Slocking", vsn(2, 2, 99),
"Some debugging messages are assigned to a class and only appear\n"
"in debug output if the class is listed here.\n"
"Classes currently available:\n"
"memory, devices, activation, allocation, lvmetad, metadata, cache, locking.\n"
"Some debugging messages are assigned to a class\n"
"and only appear in debug output if the class is\n"
"listed here. Classes currently available:\n"
"memory, devices, activation, allocation,\n"
"lvmetad, metadata, cache, locking.\n"
"Use \"all\" to see everything.\n")
cfg(backup_backup_CFG, "backup", backup_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_BACKUP_ENABLED, vsn(1, 0, 0),
@ -547,17 +554,18 @@ cfg(global_umask_CFG, "umask", global_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_UMAS
"Interpreted as octal if the first digit is zero.\n")
cfg(global_test_CFG, "test", global_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn(1, 0, 0),
"Enabling test mode means that no changes to the on disk metadata\n"
"will be made. Equivalent to having the -t option on every command.\n")
"Enabling test mode means that no changes to the\n"
"on-disk metadata will be made. Equivalent to having\n"
"the -t option on every command.\n")
cfg(global_units_CFG, "units", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_UNITS, vsn(1, 0, 0),
"Default value for --units argument.\n")
cfg(global_si_unit_consistency_CFG, "si_unit_consistency", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_SI_UNIT_CONSISTENCY, vsn(2, 2, 54),
"The tools distinguish between powers of 1024 bytes\n"
"(e.g. KiB, MiB, GiB) and powers of 1000 bytes (e.g. KB, MB, GB).\n"
"If you have scripts that depend on the old behaviour, disable\n"
"this setting temporarily until you update them.\n")
"The tools distinguish between powers of 1024 bytes,\n"
"e.g. KiB, MiB, GiB, and powers of 1000 bytes, e.g. KB, MB, GB.\n"
"If scripts depend on the old behaviour, disable\n"
"this setting temporarily until they are updated.\n")
cfg(global_suffix_CFG, "suffix", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_SUFFIX, vsn(1, 0, 0),
"Display unit suffix for sizes. This setting has no effect if the\n"
@ -566,24 +574,28 @@ cfg(global_suffix_CFG, "suffix", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BO
cfg(global_activation_CFG, "activation", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ACTIVATION, vsn(1, 0, 0),
"Enable/disable communication with the kernel device-mapper.\n"
"Disable if you want to use the tools to manipulate LVM metadata\n"
"without activating any logical volumes.\n"
"If the device-mapper kernel driver is not present in your kernel,\n"
"disabling this should suppress the error messages.\n")
"Disable to use the tools to manipulate LVM metadata without\n"
"activating any logical volumes. If the device-mapper driver\n"
"is not present in the kernel, disabling this should suppress\n"
"the error messages.\n")
cfg(global_fallback_to_lvm1_CFG, "fallback_to_lvm1", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_FALLBACK_TO_LVM1, vsn(1, 0, 18),
"If we cannot communicate with device-mapper, try running the LVM1 tools.\n"
"This option only applies to 2.4 kernels and is provided to help you\n"
"switch between device-mapper kernels and LVM1 kernels.\n"
"The LVM1 tools need to be installed with .lvm1 suffices\n"
"e.g. vgscan.lvm1 and they will stop working after you start using\n"
"the new lvm2 on-disk metadata format.\n")
"Try running the LVM1 tools if LVM cannot communicate with\n"
"device-mapper. This option only applies to 2.4 kernels and\n"
"is provided to help switch between device-mapper kernels and\n"
"LVM1 kernels.\n"
"The LVM1 tools need to be installed with .lvm1 suffices,\n"
"e.g. vgscan.lvm1. They will stop working once the lvm2\n"
"on-disk metadata format is used.\n")
cfg(global_format_CFG, "format", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_FORMAT, vsn(1, 0, 0),
"The default metadata format that commands should use - \"lvm1\" or \"lvm2\".\n"
"The default metadata format that commands should use:\n"
"\"lvm1\" or \"lvm2\".\n"
"The command line override is -M1 or -M2.\n")
cfg_array(global_format_libraries_CFG, "format_libraries", global_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0),
"A list of shared libraries to load that contain\n"
"code to process different formats of metadata.\n"
"If support for LVM1 metadata was compiled as a shared library use\n"
"format_libraries = \"liblvm2format1.so\"\n")
@ -596,25 +608,25 @@ cfg(global_etc_CFG, "etc", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_ETC_D
"Location of /etc system configuration directory.\n")
cfg(global_locking_type_CFG, "locking_type", global_CFG_SECTION, 0, CFG_TYPE_INT, 1, vsn(1, 0, 0),
"Type of locking to use. Defaults to local file-based locking (1).\n"
"Turn locking off by setting to 0 (dangerous: risks metadata corruption\n"
"if LVM commands get run concurrently).\n"
"Type 2 uses the external shared library locking_library.\n"
"Type 3 uses built-in clustered locking.\n"
"Type 4 uses read-only locking which forbids any operations that might\n"
"change metadata.\n"
"Type 5 offers dummy locking for tools that do not need any locks.\n"
"You should not need to set this directly: the tools will select when\n"
"to use it instead of the configured locking_type. Do not use lvmetad or\n"
"the kernel device-mapper driver with this locking type.\n"
"It is used by the --readonly option that offers read-only access to\n"
"Volume Group metadata that cannot be locked safely because it belongs to\n"
"an inaccessible domain and might be in use, for example a virtual machine\n"
"image or a disk that is shared by a clustered machine.\n"
"N.B. Don't use lvmetad with locking type 3 as lvmetad is not yet\n"
"supported in clustered environment. If use_lvmetad=1 and locking_type=3\n"
"is set at the same time, LVM always issues a warning message about this\n"
"and then it automatically disables lvmetad use.\n")
"Type of locking to use.\n"
"Type 0: turns off locking. Warning: this risks metadata\n"
"corruption if commands run concurrently.\n"
"Type 1: uses local file-based locking, the standard mode.\n"
"Type 2: uses the external shared library locking_library.\n"
"Type 3: uses built-in clustered locking with clvmd.\n"
"This is incompatible with lvmetad. If use_lvmetad is enabled,\n"
"lvm prints a warning and disables lvmetad use.\n"
"Type 4: uses read-only locking which forbids any operations\n"
"that might change metadata.\n"
"Type 5: offers dummy locking for tools that do not need any locks.\n"
"You should not need to set this directly; the tools will select\n"
"when to use it instead of the configured locking_type.\n"
"Do not use lvmetad or the kernel device-mapper driver with this\n"
"locking type. It is used by the --readonly option that offers\n"
"read-only access to Volume Group metadata that cannot be locked\n"
"safely because it belongs to an inaccessible domain and might be\n"
"in use, for example a virtual machine image or a disk that is\n"
"shared by a clustered machine.\n")
cfg(global_wait_for_locks_CFG, "wait_for_locks", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_WAIT_FOR_LOCKS, vsn(2, 2, 50),
"When disabled, fail if a lock request cannot be satisfied immediately.\n")
@ -667,25 +679,27 @@ cfg(global_metadata_read_only_CFG, "metadata_read_only", global_CFG_SECTION, 0,
"Inappropriate use could mess up your system, so seek advice first!\n")
cfg(global_mirror_segtype_default_CFG, "mirror_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_MIRROR_SEGTYPE, vsn(2, 2, 87),
"Defines which segtype will be used when the shorthand -m option\n"
"Defines which segtype is used when the short option -m\n"
"is used for mirroring.\n"
"Possible options are: mirror, raid1.\n"
"mirror - The original RAID1 implementation provided by LVM/DM.\n"
"It is characterized by a flexible log solution (core, disk, mirrored)\n"
"and by the necessity to block I/O while reconfiguring in the\n"
"event of a failure.\n"
"There is an inherent race in the dmeventd failure handling\n"
"logic with snapshots of devices using this type of RAID1 that\n"
"in the worst case could cause a deadlock.\n"
"raid1 - This implementation leverages MD's RAID1 personality through\n"
"device-mapper. It is characterized by a lack of log options.\n"
"(A log is always allocated for every device and they are placed\n"
"on the same device as the image - no separate devices are\n"
"required.) This mirror implementation does not require I/O\n"
"to be blocked in the kernel in the event of a failure.\n"
"This mirror implementation is not cluster-aware and cannot be\n"
"used in a shared (active/active) fashion in a cluster.\n"
"Use '--type <mirror|raid1>' to override this default setting.\n")
"mirror - the original RAID1 implementation from LVM/DM.\n"
"It is characterized by a flexible log solution (core,\n"
"disk, mirrored), and by the necessity to block I/O while\n"
"handling a failure.\n"
"There is an inherent race in the dmeventd failure\n"
"handling logic with snapshots of devices using this\n"
"type of RAID1 that in the worst case could cause a\n"
"deadlock. (Also see devices/ignore_lvm_mirrors.)\n"
"raid1 - a newer RAID1 implementation using the MD RAID1\n"
"personality through device-mapper. It is characterized\n"
"by a lack of log options. (A log is always allocated for\n"
"every device and they are placed on the same device as the\n"
"image - no separate devices are required.) This mirror\n"
"implementation does not require I/O to be blocked while\n"
"handling a failure. This mirror implementation is not\n"
"cluster-aware and cannot be used in a shared (active/active)\n"
"fashion in a cluster.\n"
"Use '--type mirror|raid1' to override this default setting.\n")
cfg(global_raid10_segtype_default_CFG, "raid10_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_RAID10_SEGTYPE, vsn(2, 2, 99),
"Determines the segment types used by default when\n"