diff --git a/README.rst b/README.rst
index f46fc27..0b4e3dc 100644
--- a/README.rst
+++ b/README.rst
@@ -31,7 +31,10 @@
         timezone: 'Europe/Prague'
         utc: true
 
-Linux with system users, some with password set
+Linux with system users, some with password set:
+.. WARNING::
+If no 'password' variable has been passed - any predifined password
+will be removed.
 
 .. code-block:: yaml
 
@@ -50,9 +53,22 @@
           jsmith:
             name: 'jsmith'
             enabled: true
-            full_name: 'Password'
+            full_name: 'With clear password'
             home: '/home/jsmith'
-            password: userpassword
+            hash_password: true
+            password: "userpassword"
+          mark:
+            name: 'mark'
+            enabled: true
+            full_name: "unchange password'
+            home: '/home/mark'
+            password: false
+          elizabeth:
+            name: 'elizabeth'
+            enabled: true
+            full_name: 'With hased password'
+            home: '/home/elizabeth'
+            password: "$6$nUI7QEz3$dFYjzQqK5cJ6HQ38KqG4gTWA9eJu3aKx6TRVDFh6BVJxJgFWg2akfAA7f1fCxcSUeOJ2arCO6EEI6XXnHXxG10"
 
 Configure sudo for users and groups under ``/etc/sudoers.d/``.
 This ways ``linux.system.sudo`` pillar map to actual sudo attributes:
diff --git a/linux/files/lvm.conf b/linux/files/lvm.conf
new file mode 100644
index 0000000..a45aed4
--- /dev/null
+++ b/linux/files/lvm.conf
@@ -0,0 +1,1891 @@
+{%- from "linux/map.jinja" import storage with context %}
+# This is an example configuration file for the LVM2 system.
+# It contains the default settings that would be used if there was no
+# /etc/lvm/lvm.conf file.
+#
+# Refer to 'man lvm.conf' for further information including the file layout.
+#
+# Refer to 'man lvm.conf' for information about how settings configured in
+# this file are combined with built-in values and command line options to
+# arrive at the final values used by LVM.
+#
+# Refer to 'man lvmconfig' for information about displaying the built-in
+# and configured values used by LVM.
+#
+# If a default value is set in this file (not commented out), then a
+# new version of LVM using this file will continue using that value,
+# even if the new version of LVM changes the built-in default value.
+#
+# To put this file in a different directory and override /etc/lvm set
+# the environment variable LVM_SYSTEM_DIR before running the tools.
+#
+# N.B. Take care that each setting only appears once if uncommenting
+# example settings in this file.
+
+
+# Configuration section config.
+# How LVM configuration settings are handled.
+config {
+
+        # Configuration option config/checks.
+        # If enabled, any LVM configuration mismatch is reported.
+        # This implies checking that the configuration key is understood by
+        # LVM and that the value of the key is the proper type. If disabled,
+        # any configuration mismatch is ignored and the default value is used
+        # without any warning (a message about the configuration key not being
+        # found is issued in verbose mode only).
+        checks = 1
+
+        # Configuration option config/abort_on_errors.
+        # Abort the LVM process if a configuration mismatch is found.
+        abort_on_errors = 0
+
+        # Configuration option config/profile_dir.
+        # Directory where LVM looks for configuration profiles.
+        profile_dir = "/etc/lvm/profile"
+}
+
+# Configuration section devices.
+# How LVM uses block devices.
+devices {
+
+        # Configuration option devices/dir.
+        # Directory in which to create volume group device nodes.
+        # Commands also accept this as a prefix on volume group names.
+        # This configuration option is advanced.
+        dir = "/dev"
+
+        # Configuration option devices/scan.
+        # Directories containing device nodes to use with LVM.
+        # This configuration option is advanced.
+        scan = [ "/dev" ]
+
+        # Configuration option devices/obtain_device_list_from_udev.
+        # Obtain the list of available devices from udev.
+        # This avoids opening or using any inapplicable non-block devices or
+        # subdirectories found in the udev directory. Any device node or
+        # symlink not managed by udev in the udev directory is ignored. This
+        # setting applies only to the udev-managed device directory; other
+        # directories will be scanned fully. LVM needs to be compiled with
+        # udev support for this setting to apply.
+        obtain_device_list_from_udev = 1
+
+        # Configuration option devices/external_device_info_source.
+        # Select an external device information source.
+        # Some information may already be available in the system and LVM can
+        # use this information to determine the exact type or use of devices it
+        # processes. Using an existing external device information source can
+        # speed up device processing as LVM does not need to run its own native
+        # routines to acquire this information. For example, this information
+        # is used to drive LVM filtering like MD component detection, multipath
+        # component detection, partition detection and others.
+        # 
+        # Accepted values:
+        #   none
+        #     No external device information source is used.
+        #   udev
+        #     Reuse existing udev database records. Applicable only if LVM is
+        #     compiled with udev support.
+        # 
+        external_device_info_source = "none"
+
+        # Configuration option devices/preferred_names.
+        # Select which path name to display for a block device.
+        # If multiple path names exist for a block device, and LVM needs to
+        # display a name for the device, the path names are matched against
+        # each item in this list of regular expressions. The first match is
+        # used. Try to avoid using undescriptive /dev/dm-N names, if present.
+        # If no preferred name matches, or if preferred_names are not defined,
+        # the following built-in preferences are applied in order until one
+        # produces a preferred name:
+        # Prefer names with path prefixes in the order of:
+        # /dev/mapper, /dev/disk, /dev/dm-*, /dev/block.
+        # Prefer the name with the least number of slashes.
+        # Prefer a name that is a symlink.
+        # Prefer the path with least value in lexicographical order.
+        # 
+        # Example
+        # preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]
+        # 
+        # This configuration option does not have a default value defined.
+
+        # Configuration option devices/filter.
+        # Limit the block devices that are used by LVM commands.
+        # This is a list of regular expressions used to accept or reject block
+        # device path names. Each regex is delimited by a vertical bar '|'
+        # (or any character) and is preceded by 'a' to accept the path, or
+        # by 'r' to reject the path. The first regex in the list to match the
+        # path is used, producing the 'a' or 'r' result for the device.
+        # When multiple path names exist for a block device, if any path name
+        # matches an 'a' pattern before an 'r' pattern, then the device is
+        # accepted. If all the path names match an 'r' pattern first, then the
+        # device is rejected. Unmatching path names do not affect the accept
+        # or reject decision. If no path names for a device match a pattern,
+        # then the device is accepted. Be careful mixing 'a' and 'r' patterns,
+        # as the combination might produce unexpected results (test changes.)
+        # Run vgscan after changing the filter to regenerate the cache.
+        # See the use_lvmetad comment for a special case regarding filters.
+        # 
+        # Example
+        # Accept every block device:
+
+        filter = [ "r|/dev/sd.*|","r|/dev/mapper/.*|","r|/dev/.*/by-id/.*|", "r|/dev/.*/by-path/.*|" ]
+
+        # filter = [ "a|.*/|" ]
+        # Reject the cdrom drive:
+        # filter = [ "r|/dev/cdrom|" ]
+        # Work with just loopback devices, e.g. for testing:
+        # filter = [ "a|loop|", "r|.*|" ]
+        # Accept all loop devices and ide drives except hdc:
+        # filter = [ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
+        # Use anchors to be very specific:
+        # filter = [ "a|^/dev/hda8$|", "r|.*/|" ]
+        # 
+        # This configuration option has an automatic default value.
+        # filter = [ "a|.*/|" ]
+
+        # Configuration option devices/global_filter.
+        # Limit the block devices that are used by LVM system components.
+        # Because devices/filter may be overridden from the command line, it is
+        # not suitable for system-wide device filtering, e.g. udev and lvmetad.
+        # Use global_filter to hide devices from these LVM system components.
+        # The syntax is the same as devices/filter. Devices rejected by
+        # global_filter are not opened by LVM.
+        # This configuration option has an automatic default value.
+        # global_filter = [ "a|.*/|" ]
+
+        # Configuration option devices/cache_dir.
+        # Directory in which to store the device cache file.
+        # The results of filtering are cached on disk to avoid rescanning dud
+        # devices (which can take a very long time). By default this cache is
+        # stored in a file named .cache. It is safe to delete this file; the
+        # tools regenerate it. If obtain_device_list_from_udev is enabled, the
+        # list of devices is obtained from udev and any existing .cache file
+        # is removed.
+        cache_dir = "/run/lvm"
+
+        # Configuration option devices/cache_file_prefix.
+        # A prefix used before the .cache file name. See devices/cache_dir.
+        cache_file_prefix = ""
+
+        # Configuration option devices/write_cache_state.
+        # Enable/disable writing the cache file. See devices/cache_dir.
+        write_cache_state = 1
+
+        # Configuration option devices/types.
+        # List of additional acceptable block device types.
+        # These are of device type names from /proc/devices, followed by the
+        # maximum number of partitions.
+        # 
+        # Example
+        # types = [ "fd", 16 ]
+        # 
+        # This configuration option is advanced.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option devices/sysfs_scan.
+        # Restrict device scanning to block devices appearing in sysfs.
+        # This is a quick way of filtering out block devices that are not
+        # present on the system. sysfs must be part of the kernel and mounted.)
+        sysfs_scan = 1
+
+        # Configuration option devices/multipath_component_detection.
+        # Ignore devices that are components of DM multipath devices.
+        multipath_component_detection = 1
+
+        # Configuration option devices/md_component_detection.
+        # Ignore devices that are components of software RAID (md) devices.
+        md_component_detection = 1
+
+        # Configuration option devices/fw_raid_component_detection.
+        # Ignore devices that are components of firmware RAID devices.
+        # LVM must use an external_device_info_source other than none for this
+        # detection to execute.
+        fw_raid_component_detection = 0
+
+        # Configuration option devices/md_chunk_alignment.
+        # Align PV data blocks with md device's stripe-width.
+        # This applies if a PV is placed directly on an md device.
+        md_chunk_alignment = 1
+
+        # Configuration option devices/default_data_alignment.
+        # Default alignment of the start of a PV data area in MB.
+        # If set to 0, a value of 64KiB will be used.
+        # Set to 1 for 1MiB, 2 for 2MiB, etc.
+        # This configuration option has an automatic default value.
+        # default_data_alignment = 1
+
+        # Configuration option devices/data_alignment_detection.
+        # Detect PV data alignment based on sysfs device information.
+        # The start of a PV data area will be a multiple of minimum_io_size or
+        # optimal_io_size exposed in sysfs. minimum_io_size is the smallest
+        # request the device can perform without incurring a read-modify-write
+        # penalty, e.g. MD chunk size. optimal_io_size is the device's
+        # preferred unit of receiving I/O, e.g. MD stripe width.
+        # minimum_io_size is used if optimal_io_size is undefined (0).
+        # If md_chunk_alignment is enabled, that detects the optimal_io_size.
+        # This setting takes precedence over md_chunk_alignment.
+        data_alignment_detection = 1
+
+        # Configuration option devices/data_alignment.
+        # Alignment of the start of a PV data area in KiB.
+        # If a PV is placed directly on an md device and md_chunk_alignment or
+        # data_alignment_detection are enabled, then this setting is ignored.
+        # Otherwise, md_chunk_alignment and data_alignment_detection are
+        # disabled if this is set. Set to 0 to use the default alignment or the
+        # page size, if larger.
+        data_alignment = 0
+
+        # Configuration option devices/data_alignment_offset_detection.
+        # Detect PV data alignment offset based on sysfs device information.
+        # The start of a PV aligned data area will be shifted by the
+        # alignment_offset exposed in sysfs. This offset is often 0, but may
+        # be non-zero. Certain 4KiB sector drives that compensate for windows
+        # partitioning will have an alignment_offset of 3584 bytes (sector 7
+        # is the lowest aligned logical block, the 4KiB sectors start at
+        # LBA -1, and consequently sector 63 is aligned on a 4KiB boundary).
+        # pvcreate --dataalignmentoffset will skip this detection.
+        data_alignment_offset_detection = 1
+
+        # Configuration option devices/ignore_suspended_devices.
+        # Ignore DM devices that have I/O suspended while scanning devices.
+        # Otherwise, LVM waits for a suspended device to become accessible.
+        # This should only be needed in recovery situations.
+        ignore_suspended_devices = 0
+
+        # Configuration option devices/ignore_lvm_mirrors.
+        # Do not scan 'mirror' LVs to avoid possible deadlocks.
+        # This avoids possible deadlocks when using the 'mirror' segment type.
+        # This setting determines whether LVs using the 'mirror' segment type
+        # are scanned for LVM labels. This affects the ability of mirrors to
+        # be used as physical volumes. If this setting is enabled, it is
+        # impossible to create VGs on top of mirror LVs, i.e. to stack VGs on
+        # mirror LVs. If this setting is disabled, allowing mirror LVs to be
+        # scanned, it may cause LVM processes and I/O to the mirror to become
+        # blocked. This is due to the way that the mirror segment type handles
+        # failures. In order for the hang to occur, an LVM command must be run
+        # just after a failure and before the automatic LVM repair process
+        # takes place, or there must be failures in multiple mirrors in the
+        # same VG at the same time with write failures occurring moments before
+        # a scan of the mirror's labels. The 'mirror' scanning problems do not
+        # apply to LVM RAID types like 'raid1' which handle failures in a
+        # different way, making them a better choice for VG stacking.
+        ignore_lvm_mirrors = 1
+
+        # Configuration option devices/disable_after_error_count.
+        # Number of I/O errors after which a device is skipped.
+        # During each LVM operation, errors received from each device are
+        # counted. If the counter of a device exceeds the limit set here,
+        # no further I/O is sent to that device for the remainder of the
+        # operation. Setting this to 0 disables the counters altogether.
+        disable_after_error_count = 0
+
+        # Configuration option devices/require_restorefile_with_uuid.
+        # Allow use of pvcreate --uuid without requiring --restorefile.
+        require_restorefile_with_uuid = 1
+
+        # Configuration option devices/pv_min_size.
+        # Minimum size in KiB of block devices which can be used as PVs.
+        # In a clustered environment all nodes must use the same value.
+        # Any value smaller than 512KiB is ignored. The previous built-in
+        # value was 512.
+        pv_min_size = 2048
+
+        # Configuration option devices/issue_discards.
+        # Issue discards to PVs that are no longer used by an LV.
+        # Discards are sent to an LV's underlying physical volumes when the LV
+        # is no longer using the physical volumes' space, e.g. lvremove,
+        # lvreduce. Discards inform the storage that a region is no longer
+        # used. Storage that supports discards advertise the protocol-specific
+        # way discards should be issued by the kernel (TRIM, UNMAP, or
+        # WRITE SAME with UNMAP bit set). Not all storage will support or
+        # benefit from discards, but SSDs and thinly provisioned LUNs
+        # generally do. If enabled, discards will only be issued if both the
+        # storage and kernel provide support.
+        issue_discards = 1
+}
+
+# Configuration section allocation.
+# How LVM selects space and applies properties to LVs.
+allocation {
+
+        # Configuration option allocation/cling_tag_list.
+        # Advise LVM which PVs to use when searching for new space.
+        # When searching for free space to extend an LV, the 'cling' allocation
+        # policy will choose space on the same PVs as the last segment of the
+        # existing LV. If there is insufficient space and a list of tags is
+        # defined here, it will check whether any of them are attached to the
+        # PVs concerned and then seek to match those PV tags between existing
+        # extents and new extents.
+        # 
+        # Example
+        # Use the special tag "@*" as a wildcard to match any PV tag:
+        # cling_tag_list = [ "@*" ]
+        # LVs are mirrored between two sites within a single VG, and
+        # PVs are tagged with either @site1 or @site2 to indicate where
+        # they are situated:
+        # cling_tag_list = [ "@site1", "@site2" ]
+        # 
+        # This configuration option does not have a default value defined.
+
+        # Configuration option allocation/maximise_cling.
+        # Use a previous allocation algorithm.
+        # Changes made in version 2.02.85 extended the reach of the 'cling'
+        # policies to detect more situations where data can be grouped onto
+        # the same disks. This setting can be used to disable the changes
+        # and revert to the previous algorithm.
+        maximise_cling = 1
+
+        # Configuration option allocation/use_blkid_wiping.
+        # Use blkid to detect existing signatures on new PVs and LVs.
+        # The blkid library can detect more signatures than the native LVM
+        # detection code, but may take longer. LVM needs to be compiled with
+        # blkid wiping support for this setting to apply. LVM native detection
+        # code is currently able to recognize: MD device signatures,
+        # swap signature, and LUKS signatures. To see the list of signatures
+        # recognized by blkid, check the output of the 'blkid -k' command.
+        use_blkid_wiping = 1
+
+        # Configuration option allocation/wipe_signatures_when_zeroing_new_lvs.
+        # Look for and erase any signatures while zeroing a new LV.
+        # The --wipesignatures option overrides this setting.
+        # Zeroing is controlled by the -Z/--zero option, and if not specified,
+        # zeroing is used by default if possible. Zeroing simply overwrites the
+        # first 4KiB of a new LV with zeroes and does no signature detection or
+        # wiping. Signature wiping goes beyond zeroing and detects exact types
+        # and positions of signatures within the whole LV. It provides a
+        # cleaner LV after creation as all known signatures are wiped. The LV
+        # is not claimed incorrectly by other tools because of old signatures
+        # from previous use. The number of signatures that LVM can detect
+        # depends on the detection code that is selected (see
+        # use_blkid_wiping.) Wiping each detected signature must be confirmed.
+        # When this setting is disabled, signatures on new LVs are not detected
+        # or erased unless the --wipesignatures option is used directly.
+        wipe_signatures_when_zeroing_new_lvs = 1
+
+        # Configuration option allocation/mirror_logs_require_separate_pvs.
+        # Mirror logs and images will always use different PVs.
+        # The default setting changed in version 2.02.85.
+        mirror_logs_require_separate_pvs = 0
+
+        # Configuration option allocation/cache_pool_metadata_require_separate_pvs.
+        # Cache pool metadata and data will always use different PVs.
+        cache_pool_metadata_require_separate_pvs = 0
+
+        # Configuration option allocation/cache_mode.
+        # The default cache mode used for new cache.
+        # 
+        # Accepted values:
+        #   writethrough
+        #     Data blocks are immediately written from the cache to disk.
+        #   writeback
+        #     Data blocks are written from the cache back to disk after some
+        #     delay to improve performance.
+        # 
+        # This setting replaces allocation/cache_pool_cachemode.
+        # This configuration option has an automatic default value.
+        # cache_mode = "writethrough"
+
+        # Configuration option allocation/cache_policy.
+        # The default cache policy used for new cache volume.
+        # Since kernel 4.2 the default policy is smq (Stochastic multique),
+        # otherwise the older mq (Multiqueue) policy is selected.
+        # This configuration option does not have a default value defined.
+
+        # Configuration section allocation/cache_settings.
+        # Settings for the cache policy.
+        # See documentation for individual cache policies for more info.
+        # This configuration section has an automatic default value.
+        # cache_settings {
+        # }
+
+        # Configuration option allocation/cache_pool_chunk_size.
+        # The minimal chunk size in KiB for cache pool volumes.
+        # Using a chunk_size that is too large can result in wasteful use of
+        # the cache, where small reads and writes can cause large sections of
+        # an LV to be mapped into the cache. However, choosing a chunk_size
+        # that is too small can result in more overhead trying to manage the
+        # numerous chunks that become mapped into the cache. The former is
+        # more of a problem than the latter in most cases, so the default is
+        # on the smaller end of the spectrum. Supported values range from
+        # 32KiB to 1GiB in multiples of 32.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option allocation/thin_pool_metadata_require_separate_pvs.
+        # Thin pool metdata and data will always use different PVs.
+        thin_pool_metadata_require_separate_pvs = 0
+
+        # Configuration option allocation/thin_pool_zero.
+        # Thin pool data chunks are zeroed before they are first used.
+        # Zeroing with a larger thin pool chunk size reduces performance.
+        # This configuration option has an automatic default value.
+        # thin_pool_zero = 1
+
+        # Configuration option allocation/thin_pool_discards.
+        # The discards behaviour of thin pool volumes.
+        # 
+        # Accepted values:
+        #   ignore
+        #   nopassdown
+        #   passdown
+        # 
+        # This configuration option has an automatic default value.
+        # thin_pool_discards = "passdown"
+
+        # Configuration option allocation/thin_pool_chunk_size_policy.
+        # The chunk size calculation policy for thin pool volumes.
+        # 
+        # Accepted values:
+        #   generic
+        #     If thin_pool_chunk_size is defined, use it. Otherwise, calculate
+        #     the chunk size based on estimation and device hints exposed in
+        #     sysfs - the minimum_io_size. The chunk size is always at least
+        #     64KiB.
+        #   performance
+        #     If thin_pool_chunk_size is defined, use it. Otherwise, calculate
+        #     the chunk size for performance based on device hints exposed in
+        #     sysfs - the optimal_io_size. The chunk size is always at least
+        #     512KiB.
+        # 
+        # This configuration option has an automatic default value.
+        # thin_pool_chunk_size_policy = "generic"
+
+        # Configuration option allocation/thin_pool_chunk_size.
+        # The minimal chunk size in KiB for thin pool volumes.
+        # Larger chunk sizes may improve performance for plain thin volumes,
+        # however using them for snapshot volumes is less efficient, as it
+        # consumes more space and takes extra time for copying. When unset,
+        # lvm tries to estimate chunk size starting from 64KiB. Supported
+        # values are in the range 64KiB to 1GiB.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option allocation/physical_extent_size.
+        # Default physical extent size in KiB to use for new VGs.
+        # This configuration option has an automatic default value.
+        # physical_extent_size = 4096
+}
+
+# Configuration section log.
+# How LVM log information is reported.
+log {
+
+        # Configuration option log/verbose.
+        # Controls the messages sent to stdout or stderr.
+        verbose = 0
+
+        # Configuration option log/silent.
+        # Suppress all non-essential messages from stdout.
+        # This has the same effect as -qq. When enabled, the following commands
+        # still produce output: dumpconfig, lvdisplay, lvmdiskscan, lvs, pvck,
+        # pvdisplay, pvs, version, vgcfgrestore -l, vgdisplay, vgs.
+        # Non-essential messages are shifted from log level 4 to log level 5
+        # for syslog and lvm2_log_fn purposes.
+        # Any 'yes' or 'no' questions not overridden by other arguments are
+        # suppressed and default to 'no'.
+        silent = 0
+
+        # Configuration option log/syslog.
+        # Send log messages through syslog.
+        syslog = 1
+
+        # Configuration option log/file.
+        # Write error and debug log messages to a file specified here.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option log/overwrite.
+        # Overwrite the log file each time the program is run.
+        overwrite = 0
+
+        # Configuration option log/level.
+        # The level of log messages that are sent to the log file or syslog.
+        # There are 6 syslog-like log levels currently in use: 2 to 7 inclusive.
+        # 7 is the most verbose (LOG_DEBUG).
+        level = 0
+
+        # Configuration option log/indent.
+        # Indent messages according to their severity.
+        indent = 1
+
+        # Configuration option log/command_names.
+        # Display the command name on each line of output.
+        command_names = 0
+
+        # Configuration option log/prefix.
+        # A prefix to use before the log message text.
+        # (After the command name, if selected).
+        # Two spaces allows you to see/grep the severity of each message.
+        # To make the messages look similar to the original LVM tools use:
+        # indent = 0, command_names = 1, prefix = " -- "
+        prefix = "  "
+
+        # Configuration option log/activation.
+        # Log messages during activation.
+        # Don't use this in low memory situations (can deadlock).
+        activation = 0
+
+        # Configuration option log/debug_classes.
+        # Select log messages by class.
+        # Some debugging messages are assigned to a class and only appear in
+        # debug output if the class is listed here. Classes currently
+        # available: memory, devices, activation, allocation, lvmetad,
+        # metadata, cache, locking, lvmpolld. Use "all" to see everything.
+        debug_classes = [ "memory", "devices", "activation", "allocation", "lvmetad", "metadata", "cache", "locking", "lvmpolld" ]
+}
+
+# Configuration section backup.
+# How LVM metadata is backed up and archived.
+# In LVM, a 'backup' is a copy of the metadata for the current system,
+# and an 'archive' contains old metadata configurations. They are
+# stored in a human readable text format.
+backup {
+
+        # Configuration option backup/backup.
+        # Maintain a backup of the current metadata configuration.
+        # Think very hard before turning this off!
+        backup = 1
+
+        # Configuration option backup/backup_dir.
+        # Location of the metadata backup files.
+        # Remember to back up this directory regularly!
+        backup_dir = "/etc/lvm/backup"
+
+        # Configuration option backup/archive.
+        # Maintain an archive of old metadata configurations.
+        # Think very hard before turning this off.
+        archive = 1
+
+        # Configuration option backup/archive_dir.
+        # Location of the metdata archive files.
+        # Remember to back up this directory regularly!
+        archive_dir = "/etc/lvm/archive"
+
+        # Configuration option backup/retain_min.
+        # Minimum number of archives to keep.
+        retain_min = 10
+
+        # Configuration option backup/retain_days.
+        # Minimum number of days to keep archive files.
+        retain_days = 30
+}
+
+# Configuration section shell.
+# Settings for running LVM in shell (readline) mode.
+shell {
+
+        # Configuration option shell/history_size.
+        # Number of lines of history to store in ~/.lvm_history.
+        history_size = 100
+}
+
+# Configuration section global.
+# Miscellaneous global LVM settings.
+global {
+
+        # Configuration option global/umask.
+        # The file creation mask for any files and directories created.
+        # Interpreted as octal if the first digit is zero.
+        umask = 077
+
+        # Configuration option global/test.
+        # No on-disk metadata changes will be made in test mode.
+        # Equivalent to having the -t option on every command.
+        test = 0
+
+        # Configuration option global/units.
+        # Default value for --units argument.
+        units = "h"
+
+        # Configuration option global/si_unit_consistency.
+        # Distinguish between powers of 1024 and 1000 bytes.
+        # The LVM commands distinguish between powers of 1024 bytes,
+        # e.g. KiB, MiB, GiB, and powers of 1000 bytes, e.g. KB, MB, GB.
+        # If scripts depend on the old behaviour, disable this setting
+        # temporarily until they are updated.
+        si_unit_consistency = 1
+
+        # Configuration option global/suffix.
+        # Display unit suffix for sizes.
+        # This setting has no effect if the units are in human-readable form
+        # (global/units = "h") in which case the suffix is always displayed.
+        suffix = 1
+
+        # Configuration option global/activation.
+        # Enable/disable communication with the kernel device-mapper.
+        # Disable to use the tools to manipulate LVM metadata without
+        # activating any logical volumes. If the device-mapper driver
+        # is not present in the kernel, disabling this should suppress
+        # the error messages.
+        activation = 1
+
+        # Configuration option global/fallback_to_lvm1.
+        # Try running LVM1 tools if LVM cannot communicate with DM.
+        # This option only applies to 2.4 kernels and is provided to help
+        # switch between device-mapper kernels and LVM1 kernels. The LVM1
+        # tools need to be installed with .lvm1 suffices, e.g. vgscan.lvm1.
+        # They will stop working once the lvm2 on-disk metadata format is used.
+        # This configuration option has an automatic default value.
+        # fallback_to_lvm1 = 0
+
+        # Configuration option global/format.
+        # The default metadata format that commands should use.
+        # The -M 1|2 option overrides this setting.
+        # 
+        # Accepted values:
+        #   lvm1
+        #   lvm2
+        # 
+        # This configuration option has an automatic default value.
+        # format = "lvm2"
+
+        # Configuration option global/format_libraries.
+        # Shared libraries that process different metadata formats.
+        # If support for LVM1 metadata was compiled as a shared library use
+        # format_libraries = "liblvm2format1.so"
+        # This configuration option does not have a default value defined.
+
+        # Configuration option global/segment_libraries.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option global/proc.
+        # Location of proc filesystem.
+        # This configuration option is advanced.
+        proc = "/proc"
+
+        # Configuration option global/etc.
+        # Location of /etc system configuration directory.
+        etc = "/etc"
+
+        # Configuration option global/locking_type.
+        # Type of locking to use.
+        # 
+        # Accepted values:
+        #   0
+        #     Turns off locking. Warning: this risks metadata corruption if
+        #     commands run concurrently.
+        #   1
+        #     LVM uses local file-based locking, the standard mode.
+        #   2
+        #     LVM uses the external shared library locking_library.
+        #   3
+        #     LVM uses built-in clustered locking with clvmd.
+        #     This is incompatible with lvmetad. If use_lvmetad is enabled,
+        #     LVM prints a warning and disables lvmetad use.
+        #   4
+        #     LVM uses read-only locking which forbids any operations that
+        #     might change metadata.
+        #   5
+        #     Offers dummy locking for tools that do not need any locks.
+        #     You should not need to set this directly; the tools will select
+        #     when to use it instead of the configured locking_type.
+        #     Do not use lvmetad or the kernel device-mapper driver with this
+        #     locking type. It is used by the --readonly option that offers
+        #     read-only access to Volume Group metadata that cannot be locked
+        #     safely because it belongs to an inaccessible domain and might be
+        #     in use, for example a virtual machine image or a disk that is
+        #     shared by a clustered machine.
+        # 
+        locking_type = 1
+
+        # Configuration option global/wait_for_locks.
+        # When disabled, fail if a lock request would block.
+        wait_for_locks = 1
+
+        # Configuration option global/fallback_to_clustered_locking.
+        # Attempt to use built-in cluster locking if locking_type 2 fails.
+        # If using external locking (type 2) and initialisation fails, with
+        # this enabled, an attempt will be made to use the built-in clustered
+        # locking. Disable this if using a customised locking_library.
+        fallback_to_clustered_locking = 1
+
+        # Configuration option global/fallback_to_local_locking.
+        # Use locking_type 1 (local) if locking_type 2 or 3 fail.
+        # If an attempt to initialise type 2 or type 3 locking failed, perhaps
+        # because cluster components such as clvmd are not running, with this
+        # enabled, an attempt will be made to use local file-based locking
+        # (type 1). If this succeeds, only commands against local VGs will
+        # proceed. VGs marked as clustered will be ignored.
+        fallback_to_local_locking = 1
+
+        # Configuration option global/locking_dir.
+        # Directory to use for LVM command file locks.
+        # Local non-LV directory that holds file-based locks while commands are
+        # in progress. A directory like /tmp that may get wiped on reboot is OK.
+        locking_dir = "/run/lock/lvm"
+
+        # Configuration option global/prioritise_write_locks.
+        # Allow quicker VG write access during high volume read access.
+        # When there are competing read-only and read-write access requests for
+        # a volume group's metadata, instead of always granting the read-only
+        # requests immediately, delay them to allow the read-write requests to
+        # be serviced. Without this setting, write access may be stalled by a
+        # high volume of read-only requests. This option only affects
+        # locking_type 1 viz. local file-based locking.
+        prioritise_write_locks = 1
+
+        # Configuration option global/library_dir.
+        # Search this directory first for shared libraries.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option global/locking_library.
+        # The external locking library to use for locking_type 2.
+        # This configuration option has an automatic default value.
+        # locking_library = "liblvm2clusterlock.so"
+
+        # Configuration option global/abort_on_internal_errors.
+        # Abort a command that encounters an internal error.
+        # Treat any internal errors as fatal errors, aborting the process that
+        # encountered the internal error. Please only enable for debugging.
+        abort_on_internal_errors = 0
+
+        # Configuration option global/detect_internal_vg_cache_corruption.
+        # Internal verification of VG structures.
+        # Check if CRC matches when a parsed VG is used multiple times. This
+        # is useful to catch unexpected changes to cached VG structures.
+        # Please only enable for debugging.
+        detect_internal_vg_cache_corruption = 0
+
+        # Configuration option global/metadata_read_only.
+        # No operations that change on-disk metadata are permitted.
+        # Additionally, read-only commands that encounter metadata in need of
+        # repair will still be allowed to proceed exactly as if the repair had
+        # been performed (except for the unchanged vg_seqno). Inappropriate
+        # use could mess up your system, so seek advice first!
+        metadata_read_only = 0
+
+        # Configuration option global/mirror_segtype_default.
+        # The segment type used by the short mirroring option -m.
+        # The --type mirror|raid1 option overrides this setting.
+        # 
+        # Accepted values:
+        #   mirror
+        #     The original RAID1 implementation from LVM/DM. It is
+        #     characterized by a flexible log solution (core, disk, mirrored),
+        #     and by the necessity to block I/O while handling a failure.
+        #     There is an inherent race in the dmeventd failure handling logic
+        #     with snapshots of devices using this type of RAID1 that in the
+        #     worst case could cause a deadlock. (Also see
+        #     devices/ignore_lvm_mirrors.)
+        #   raid1
+        #     This is a newer RAID1 implementation using the MD RAID1
+        #     personality through device-mapper. It is characterized by a
+        #     lack of log options. (A log is always allocated for every
+        #     device and they are placed on the same device as the image,
+        #     so no separate devices are required.) This mirror
+        #     implementation does not require I/O to be blocked while
+        #     handling a failure. This mirror implementation is not
+        #     cluster-aware and cannot be used in a shared (active/active)
+        #     fashion in a cluster.
+        # 
+        mirror_segtype_default = "raid1"
+
+        # Configuration option global/raid10_segtype_default.
+        # The segment type used by the -i -m combination.
+        # The --type raid10|mirror option overrides this setting.
+        # The --stripes/-i and --mirrors/-m options can both be specified
+        # during the creation of a logical volume to use both striping and
+        # mirroring for the LV. There are two different implementations.
+        # 
+        # Accepted values:
+        #   raid10
+        #     LVM uses MD's RAID10 personality through DM. This is the
+        #     preferred option.
+        #   mirror
+        #     LVM layers the 'mirror' and 'stripe' segment types. The layering
+        #     is done by creating a mirror LV on top of striped sub-LVs,
+        #     effectively creating a RAID 0+1 array. The layering is suboptimal
+        #     in terms of providing redundancy and performance.
+        # 
+        raid10_segtype_default = "raid10"
+
+        # Configuration option global/sparse_segtype_default.
+        # The segment type used by the -V -L combination.
+        # The --type snapshot|thin option overrides this setting.
+        # The combination of -V and -L options creates a sparse LV. There are
+        # two different implementations.
+        # 
+        # Accepted values:
+        #   snapshot
+        #     The original snapshot implementation from LVM/DM. It uses an old
+        #     snapshot that mixes data and metadata within a single COW
+        #     storage volume and performs poorly when the size of stored data
+        #     passes hundreds of MB.
+        #   thin
+        #     A newer implementation that uses thin provisioning. It has a
+        #     bigger minimal chunk size (64KiB) and uses a separate volume for
+        #     metadata. It has better performance, especially when more data
+        #     is used. It also supports full snapshots.
+        # 
+        sparse_segtype_default = "thin"
+
+        # Configuration option global/lvdisplay_shows_full_device_path.
+        # Enable this to reinstate the previous lvdisplay name format.
+        # The default format for displaying LV names in lvdisplay was changed
+        # in version 2.02.89 to show the LV name and path separately.
+        # Previously this was always shown as /dev/vgname/lvname even when that
+        # was never a valid path in the /dev filesystem.
+        # This configuration option has an automatic default value.
+        # lvdisplay_shows_full_device_path = 0
+
+        # Configuration option global/use_lvmetad.
+        # Use lvmetad to cache metadata and reduce disk scanning.
+        # When enabled (and running), lvmetad provides LVM commands with VG
+        # metadata and PV state. LVM commands then avoid reading this
+        # information from disks which can be slow. When disabled (or not
+        # running), LVM commands fall back to scanning disks to obtain VG
+        # metadata. lvmetad is kept updated via udev rules which must be set
+        # up for LVM to work correctly. (The udev rules should be installed
+        # by default.) Without a proper udev setup, changes in the system's
+        # block device configuration will be unknown to LVM, and ignored
+        # until a manual 'pvscan --cache' is run. If lvmetad was running
+        # while use_lvmetad was disabled, it must be stopped, use_lvmetad
+        # enabled, and then started. When using lvmetad, LV activation is
+        # switched to an automatic, event-based mode. In this mode, LVs are
+        # activated based on incoming udev events that inform lvmetad when
+        # PVs appear on the system. When a VG is complete (all PVs present),
+        # it is auto-activated. The auto_activation_volume_list setting
+        # controls which LVs are auto-activated (all by default.)
+        # When lvmetad is updated (automatically by udev events, or directly
+        # by pvscan --cache), devices/filter is ignored and all devices are
+        # scanned by default. lvmetad always keeps unfiltered information
+        # which is provided to LVM commands. Each LVM command then filters
+        # based on devices/filter. This does not apply to other, non-regexp,
+        # filtering settings: component filters such as multipath and MD
+        # are checked during pvscan --cache. To filter a device and prevent
+        # scanning from the LVM system entirely, including lvmetad, use
+        # devices/global_filter.
+        use_lvmetad = 1
+
+        # Configuration option global/use_lvmlockd.
+        # Use lvmlockd for locking among hosts using LVM on shared storage.
+        # See lvmlockd(8) for more information.
+        use_lvmlockd = 0
+
+        # Configuration option global/lvmlockd_lock_retries.
+        # Retry lvmlockd lock requests this many times.
+        # This configuration option has an automatic default value.
+        # lvmlockd_lock_retries = 3
+
+        # Configuration option global/sanlock_lv_extend.
+        # Size in MiB to extend the internal LV holding sanlock locks.
+        # The internal LV holds locks for each LV in the VG, and after enough
+        # LVs have been created, the internal LV needs to be extended. lvcreate
+        # will automatically extend the internal LV when needed by the amount
+        # specified here. Setting this to 0 disables the automatic extension
+        # and can cause lvcreate to fail.
+        # This configuration option has an automatic default value.
+        # sanlock_lv_extend = 256
+
+        # Configuration option global/thin_check_executable.
+        # The full path to the thin_check command.
+        # LVM uses this command to check that a thin metadata device is in a
+        # usable state. When a thin pool is activated and after it is
+        # deactivated, this command is run. Activation will only proceed if
+        # the command has an exit status of 0. Set to "" to skip this check.
+        # (Not recommended.) Also see thin_check_options.
+        # (See package device-mapper-persistent-data or thin-provisioning-tools)
+        # This configuration option has an automatic default value.
+        # thin_check_executable = "/usr/sbin/thin_check"
+
+        # Configuration option global/thin_dump_executable.
+        # The full path to the thin_dump command.
+        # LVM uses this command to dump thin pool metadata.
+        # (See package device-mapper-persistent-data or thin-provisioning-tools)
+        # This configuration option has an automatic default value.
+        # thin_dump_executable = "/usr/sbin/thin_dump"
+
+        # Configuration option global/thin_repair_executable.
+        # The full path to the thin_repair command.
+        # LVM uses this command to repair a thin metadata device if it is in
+        # an unusable state. Also see thin_repair_options.
+        # (See package device-mapper-persistent-data or thin-provisioning-tools)
+        # This configuration option has an automatic default value.
+        # thin_repair_executable = "/usr/sbin/thin_repair"
+
+        # Configuration option global/thin_check_options.
+        # List of options passed to the thin_check command.
+        # With thin_check version 2.1 or newer you can add the option
+        # --ignore-non-fatal-errors to let it pass through ignorable errors
+        # and fix them later. With thin_check version 3.2 or newer you should
+        # include the option --clear-needs-check-flag.
+        # This configuration option has an automatic default value.
+        # thin_check_options = [ "-q", "--clear-needs-check-flag" ]
+
+        # Configuration option global/thin_repair_options.
+        # List of options passed to the thin_repair command.
+        # This configuration option has an automatic default value.
+        # thin_repair_options = [ "" ]
+
+        # Configuration option global/thin_disabled_features.
+        # Features to not use in the thin driver.
+        # This can be helpful for testing, or to avoid using a feature that is
+        # causing problems. Features include: block_size, discards,
+        # discards_non_power_2, external_origin, metadata_resize,
+        # external_origin_extend, error_if_no_space.
+        # 
+        # Example
+        # thin_disabled_features = [ "discards", "block_size" ]
+        # 
+        # This configuration option does not have a default value defined.
+
+        # Configuration option global/cache_disabled_features.
+        # Features to not use in the cache driver.
+        # This can be helpful for testing, or to avoid using a feature that is
+        # causing problems. Features include: policy_mq, policy_smq.
+        # 
+        # Example
+        # cache_disabled_features = [ "policy_smq" ]
+        # 
+        # This configuration option does not have a default value defined.
+
+        # Configuration option global/cache_check_executable.
+        # The full path to the cache_check command.
+        # LVM uses this command to check that a cache metadata device is in a
+        # usable state. When a cached LV is activated and after it is
+        # deactivated, this command is run. Activation will only proceed if the
+        # command has an exit status of 0. Set to "" to skip this check.
+        # (Not recommended.) Also see cache_check_options.
+        # (See package device-mapper-persistent-data or thin-provisioning-tools)
+        # This configuration option has an automatic default value.
+        # cache_check_executable = "/usr/sbin/cache_check"
+
+        # Configuration option global/cache_dump_executable.
+        # The full path to the cache_dump command.
+        # LVM uses this command to dump cache pool metadata.
+        # (See package device-mapper-persistent-data or thin-provisioning-tools)
+        # This configuration option has an automatic default value.
+        # cache_dump_executable = "/usr/sbin/cache_dump"
+
+        # Configuration option global/cache_repair_executable.
+        # The full path to the cache_repair command.
+        # LVM uses this command to repair a cache metadata device if it is in
+        # an unusable state. Also see cache_repair_options.
+        # (See package device-mapper-persistent-data or thin-provisioning-tools)
+        # This configuration option has an automatic default value.
+        # cache_repair_executable = "/usr/sbin/cache_repair"
+
+        # Configuration option global/cache_check_options.
+        # List of options passed to the cache_check command.
+        # With cache_check version 5.0 or newer you should include the option
+        # --clear-needs-check-flag.
+        # This configuration option has an automatic default value.
+        # cache_check_options = [ "-q", "--clear-needs-check-flag" ]
+
+        # Configuration option global/cache_repair_options.
+        # List of options passed to the cache_repair command.
+        # This configuration option has an automatic default value.
+        # cache_repair_options = [ "" ]
+
+        # Configuration option global/system_id_source.
+        # The method LVM uses to set the local system ID.
+        # Volume Groups can also be given a system ID (by vgcreate, vgchange,
+        # or vgimport.) A VG on shared storage devices is accessible only to
+        # the host with a matching system ID. See 'man lvmsystemid' for
+        # information on limitations and correct usage.
+        # 
+        # Accepted values:
+        #   none
+        #     The host has no system ID.
+        #   lvmlocal
+        #     Obtain the system ID from the system_id setting in the 'local'
+        #     section of an lvm configuration file, e.g. lvmlocal.conf.
+        #   uname
+        #     Set the system ID from the hostname (uname) of the system.
+        #     System IDs beginning localhost are not permitted.
+        #   machineid
+        #     Use the contents of the machine-id file to set the system ID.
+        #     Some systems create this file at installation time.
+        #     See 'man machine-id' and global/etc.
+        #   file
+        #     Use the contents of another file (system_id_file) to set the
+        #     system ID.
+        # 
+        system_id_source = "none"
+
+        # Configuration option global/system_id_file.
+        # The full path to the file containing a system ID.
+        # This is used when system_id_source is set to 'file'.
+        # Comments starting with the character # are ignored.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option global/use_lvmpolld.
+        # Use lvmpolld to supervise long running LVM commands.
+        # When enabled, control of long running LVM commands is transferred
+        # from the original LVM command to the lvmpolld daemon. This allows
+        # the operation to continue independent of the original LVM command.
+        # After lvmpolld takes over, the LVM command displays the progress
+        # of the ongoing operation. lvmpolld itself runs LVM commands to
+        # manage the progress of ongoing operations. lvmpolld can be used as
+        # a native systemd service, which allows it to be started on demand,
+        # and to use its own control group. When this option is disabled, LVM
+        # commands will supervise long running operations by forking themselves.
+        use_lvmpolld = 1
+}
+
+# Configuration section activation.
+activation {
+
+        # Configuration option activation/checks.
+        # Perform internal checks of libdevmapper operations.
+        # Useful for debugging problems with activation. Some of the checks may
+        # be expensive, so it's best to use this only when there seems to be a
+        # problem.
+        checks = 0
+
+        # Configuration option activation/udev_sync.
+        # Use udev notifications to synchronize udev and LVM.
+        # The --nodevsync option overrides this setting.
+        # When disabled, LVM commands will not wait for notifications from
+        # udev, but continue irrespective of any possible udev processing in
+        # the background. Only use this if udev is not running or has rules
+        # that ignore the devices LVM creates. If enabled when udev is not
+        # running, and LVM processes are waiting for udev, run the command
+        # 'dmsetup udevcomplete_all' to wake them up.
+        udev_sync = 1
+
+        # Configuration option activation/udev_rules.
+        # Use udev rules to manage LV device nodes and symlinks.
+        # When disabled, LVM will manage the device nodes and symlinks for
+        # active LVs itself. Manual intervention may be required if this
+        # setting is changed while LVs are active.
+        udev_rules = 1
+
+        # Configuration option activation/verify_udev_operations.
+        # Use extra checks in LVM to verify udev operations.
+        # This enables additional checks (and if necessary, repairs) on entries
+        # in the device directory after udev has completed processing its
+        # events. Useful for diagnosing problems with LVM/udev interactions.
+        verify_udev_operations = 0
+
+        # Configuration option activation/retry_deactivation.
+        # Retry failed LV deactivation.
+        # If LV deactivation fails, LVM will retry for a few seconds before
+        # failing. This may happen because a process run from a quick udev rule
+        # temporarily opened the device.
+        retry_deactivation = 1
+
+        # Configuration option activation/missing_stripe_filler.
+        # Method to fill missing stripes when activating an incomplete LV.
+        # Using 'error' will make inaccessible parts of the device return I/O
+        # errors on access. You can instead use a device path, in which case,
+        # that device will be used in place of missing stripes. Using anything
+        # other than 'error' with mirrored or snapshotted volumes is likely to
+        # result in data corruption.
+        # This configuration option is advanced.
+        missing_stripe_filler = "error"
+
+        # Configuration option activation/use_linear_target.
+        # Use the linear target to optimize single stripe LVs.
+        # When disabled, the striped target is used. The linear target is an
+        # optimised version of the striped target that only handles a single
+        # stripe.
+        use_linear_target = 1
+
+        # Configuration option activation/reserved_stack.
+        # Stack size in KiB to reserve for use while devices are suspended.
+        # Insufficent reserve risks I/O deadlock during device suspension.
+        reserved_stack = 64
+
+        # Configuration option activation/reserved_memory.
+        # Memory size in KiB to reserve for use while devices are suspended.
+        # Insufficent reserve risks I/O deadlock during device suspension.
+        reserved_memory = 8192
+
+        # Configuration option activation/process_priority.
+        # Nice value used while devices are suspended.
+        # Use a high priority so that LVs are suspended
+        # for the shortest possible time.
+        process_priority = -18
+
+        # Configuration option activation/volume_list.
+        # Only LVs selected by this list are activated.
+        # If this list is defined, an LV is only activated if it matches an
+        # entry in this list. If this list is undefined, it imposes no limits
+        # on LV activation (all are allowed).
+        # 
+        # Accepted values:
+        #   vgname
+        #     The VG name is matched exactly and selects all LVs in the VG.
+        #   vgname/lvname
+        #     The VG name and LV name are matched exactly and selects the LV.
+        #   @tag
+        #     Selects an LV if the specified tag matches a tag set on the LV
+        #     or VG.
+        #   @*
+        #     Selects an LV if a tag defined on the host is also set on the LV
+        #     or VG. See tags/hosttags. If any host tags exist but volume_list
+        #     is not defined, a default single-entry list containing '@*' is
+        #     assumed.
+        # 
+        # Example
+        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+        # 
+        # This configuration option does not have a default value defined.
+
+        # Configuration option activation/auto_activation_volume_list.
+        # Only LVs selected by this list are auto-activated.
+        # This list works like volume_list, but it is used only by
+        # auto-activation commands. It does not apply to direct activation
+        # commands. If this list is defined, an LV is only auto-activated
+        # if it matches an entry in this list. If this list is undefined, it
+        # imposes no limits on LV auto-activation (all are allowed.) If this
+        # list is defined and empty, i.e. "[]", then no LVs are selected for
+        # auto-activation. An LV that is selected by this list for
+        # auto-activation, must also be selected by volume_list (if defined)
+        # before it is activated. Auto-activation is an activation command that
+        # includes the 'a' argument: --activate ay or -a ay. The 'a' (auto)
+        # argument for auto-activation is meant to be used by activation
+        # commands that are run automatically by the system, as opposed to LVM
+        # commands run directly by a user. A user may also use the 'a' flag
+        # directly to perform auto-activation. Also see pvscan(8) for more
+        # information about auto-activation.
+        # 
+        # Accepted values:
+        #   vgname
+        #     The VG name is matched exactly and selects all LVs in the VG.
+        #   vgname/lvname
+        #     The VG name and LV name are matched exactly and selects the LV.
+        #   @tag
+        #     Selects an LV if the specified tag matches a tag set on the LV
+        #     or VG.
+        #   @*
+        #     Selects an LV if a tag defined on the host is also set on the LV
+        #     or VG. See tags/hosttags. If any host tags exist but volume_list
+        #     is not defined, a default single-entry list containing '@*' is
+        #     assumed.
+        # 
+        # Example
+        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+        # 
+        # This configuration option does not have a default value defined.
+
+        # Configuration option activation/read_only_volume_list.
+        # LVs in this list are activated in read-only mode.
+        # If this list is defined, each LV that is to be activated is checked
+        # against this list, and if it matches, it is activated in read-only
+        # mode. This overrides the permission setting stored in the metadata,
+        # e.g. from --permission rw.
+        # 
+        # Accepted values:
+        #   vgname
+        #     The VG name is matched exactly and selects all LVs in the VG.
+        #   vgname/lvname
+        #     The VG name and LV name are matched exactly and selects the LV.
+        #   @tag
+        #     Selects an LV if the specified tag matches a tag set on the LV
+        #     or VG.
+        #   @*
+        #     Selects an LV if a tag defined on the host is also set on the LV
+        #     or VG. See tags/hosttags. If any host tags exist but volume_list
+        #     is not defined, a default single-entry list containing '@*' is
+        #     assumed.
+        # 
+        # Example
+        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+        # 
+        # This configuration option does not have a default value defined.
+
+        # Configuration option activation/raid_region_size.
+        # Size in KiB of each raid or mirror synchronization region.
+        # For raid or mirror segment types, this is the amount of data that is
+        # copied at once when initializing, or moved at once by pvmove.
+        raid_region_size = 512
+
+        # Configuration option activation/error_when_full.
+        # Return errors if a thin pool runs out of space.
+        # The --errorwhenfull option overrides this setting.
+        # When enabled, writes to thin LVs immediately return an error if the
+        # thin pool is out of data space. When disabled, writes to thin LVs
+        # are queued if the thin pool is out of space, and processed when the
+        # thin pool data space is extended. New thin pools are assigned the
+        # behavior defined here.
+        # This configuration option has an automatic default value.
+        # error_when_full = 0
+
+        # Configuration option activation/readahead.
+        # Setting to use when there is no readahead setting in metadata.
+        # 
+        # Accepted values:
+        #   none
+        #     Disable readahead.
+        #   auto
+        #     Use default value chosen by kernel.
+        # 
+        readahead = "auto"
+
+        # Configuration option activation/raid_fault_policy.
+        # Defines how a device failure in a RAID LV is handled.
+        # This includes LVs that have the following segment types:
+        # raid1, raid4, raid5*, and raid6*.
+        # If a device in the LV fails, the policy determines the steps
+        # performed by dmeventd automatically, and the steps perfomed by the
+        # manual command lvconvert --repair --use-policies.
+        # Automatic handling requires dmeventd to be monitoring the LV.
+        # 
+        # Accepted values:
+        #   warn
+        #     Use the system log to warn the user that a device in the RAID LV
+        #     has failed. It is left to the user to run lvconvert --repair
+        #     manually to remove or replace the failed device. As long as the
+        #     number of failed devices does not exceed the redundancy of the LV
+        #     (1 device for raid4/5, 2 for raid6), the LV will remain usable.
+        #   allocate
+        #     Attempt to use any extra physical volumes in the VG as spares and
+        #     replace faulty devices.
+        # 
+        raid_fault_policy = "warn"
+
+        # Configuration option activation/mirror_image_fault_policy.
+        # Defines how a device failure in a 'mirror' LV is handled.
+        # An LV with the 'mirror' segment type is composed of mirror images
+        # (copies) and a mirror log. A disk log ensures that a mirror LV does
+        # not need to be re-synced (all copies made the same) every time a
+        # machine reboots or crashes. If a device in the LV fails, this policy
+        # determines the steps perfomed by dmeventd automatically, and the steps
+        # performed by the manual command lvconvert --repair --use-policies.
+        # Automatic handling requires dmeventd to be monitoring the LV.
+        # 
+        # Accepted values:
+        #   remove
+        #     Simply remove the faulty device and run without it. If the log
+        #     device fails, the mirror would convert to using an in-memory log.
+        #     This means the mirror will not remember its sync status across
+        #     crashes/reboots and the entire mirror will be re-synced. If a
+        #     mirror image fails, the mirror will convert to a non-mirrored
+        #     device if there is only one remaining good copy.
+        #   allocate
+        #     Remove the faulty device and try to allocate space on a new
+        #     device to be a replacement for the failed device. Using this
+        #     policy for the log is fast and maintains the ability to remember
+        #     sync state through crashes/reboots. Using this policy for a
+        #     mirror device is slow, as it requires the mirror to resynchronize
+        #     the devices, but it will preserve the mirror characteristic of
+        #     the device. This policy acts like 'remove' if no suitable device
+        #     and space can be allocated for the replacement.
+        #   allocate_anywhere
+        #     Not yet implemented. Useful to place the log device temporarily
+        #     on the same physical volume as one of the mirror images. This
+        #     policy is not recommended for mirror devices since it would break
+        #     the redundant nature of the mirror. This policy acts like
+        #     'remove' if no suitable device and space can be allocated for the
+        #     replacement.
+        # 
+        mirror_image_fault_policy = "remove"
+
+        # Configuration option activation/mirror_log_fault_policy.
+        # Defines how a device failure in a 'mirror' log LV is handled.
+        # The mirror_image_fault_policy description for mirrored LVs also
+        # applies to mirrored log LVs.
+        mirror_log_fault_policy = "allocate"
+
+        # Configuration option activation/snapshot_autoextend_threshold.
+        # Auto-extend a snapshot when its usage exceeds this percent.
+        # Setting this to 100 disables automatic extension.
+        # The minimum value is 50 (a smaller value is treated as 50.)
+        # Also see snapshot_autoextend_percent.
+        # Automatic extension requires dmeventd to be monitoring the LV.
+        # 
+        # Example
+        # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+        # snapshot exceeds 700M, it is extended to 1.2G, and when it exceeds
+        # 840M, it is extended to 1.44G:
+        # snapshot_autoextend_threshold = 70
+        # 
+        snapshot_autoextend_threshold = 100
+
+        # Configuration option activation/snapshot_autoextend_percent.
+        # Auto-extending a snapshot adds this percent extra space.
+        # The amount of additional space added to a snapshot is this
+        # percent of its current size.
+        # 
+        # Example
+        # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+        # snapshot exceeds 700M, it is extended to 1.2G, and when it exceeds
+        # 840M, it is extended to 1.44G:
+        # snapshot_autoextend_percent = 20
+        # 
+        snapshot_autoextend_percent = 20
+
+        # Configuration option activation/thin_pool_autoextend_threshold.
+        # Auto-extend a thin pool when its usage exceeds this percent.
+        # Setting this to 100 disables automatic extension.
+        # The minimum value is 50 (a smaller value is treated as 50.)
+        # Also see thin_pool_autoextend_percent.
+        # Automatic extension requires dmeventd to be monitoring the LV.
+        # 
+        # Example
+        # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+        # thin pool exceeds 700M, it is extended to 1.2G, and when it exceeds
+        # 840M, it is extended to 1.44G:
+        # thin_pool_autoextend_threshold = 70
+        # 
+        thin_pool_autoextend_threshold = 100
+
+        # Configuration option activation/thin_pool_autoextend_percent.
+        # Auto-extending a thin pool adds this percent extra space.
+        # The amount of additional space added to a thin pool is this
+        # percent of its current size.
+        # 
+        # Example
+        # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+        # thin pool exceeds 700M, it is extended to 1.2G, and when it exceeds
+        # 840M, it is extended to 1.44G:
+        # thin_pool_autoextend_percent = 20
+        # 
+        thin_pool_autoextend_percent = 20
+
+        # Configuration option activation/mlock_filter.
+        # Do not mlock these memory areas.
+        # While activating devices, I/O to devices being (re)configured is
+        # suspended. As a precaution against deadlocks, LVM pins memory it is
+        # using so it is not paged out, and will not require I/O to reread.
+        # Groups of pages that are known not to be accessed during activation
+        # do not need to be pinned into memory. Each string listed in this
+        # setting is compared against each line in /proc/self/maps, and the
+        # pages corresponding to lines that match are not pinned. On some
+        # systems, locale-archive was found to make up over 80% of the memory
+        # used by the process.
+        # 
+        # Example
+        # mlock_filter = [ "locale/locale-archive", "gconv/gconv-modules.cache" ]
+        # 
+        # This configuration option is advanced.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option activation/use_mlockall.
+        # Use the old behavior of mlockall to pin all memory.
+        # Prior to version 2.02.62, LVM used mlockall() to pin the whole
+        # process's memory while activating devices.
+        use_mlockall = 0
+
+        # Configuration option activation/monitoring.
+        # Monitor LVs that are activated.
+        # The --ignoremonitoring option overrides this setting.
+        # When enabled, LVM will ask dmeventd to monitor activated LVs.
+        monitoring = 1
+
+        # Configuration option activation/polling_interval.
+        # Check pvmove or lvconvert progress at this interval (seconds).
+        # When pvmove or lvconvert must wait for the kernel to finish
+        # synchronising or merging data, they check and report progress at
+        # intervals of this number of seconds. If this is set to 0 and there
+        # is only one thing to wait for, there are no progress reports, but
+        # the process is awoken immediately once the operation is complete.
+        polling_interval = 15
+
+        # Configuration option activation/auto_set_activation_skip.
+        # Set the activation skip flag on new thin snapshot LVs.
+        # The --setactivationskip option overrides this setting.
+        # An LV can have a persistent 'activation skip' flag. The flag causes
+        # the LV to be skipped during normal activation. The lvchange/vgchange
+        # -K option is required to activate LVs that have the activation skip
+        # flag set. When this setting is enabled, the activation skip flag is
+        # set on new thin snapshot LVs.
+        # This configuration option has an automatic default value.
+        # auto_set_activation_skip = 1
+
+        # Configuration option activation/activation_mode.
+        # How LVs with missing devices are activated.
+        # The --activationmode option overrides this setting.
+        # 
+        # Accepted values:
+        #   complete
+        #     Only allow activation of an LV if all of the Physical Volumes it
+        #     uses are present. Other PVs in the Volume Group may be missing.
+        #   degraded
+        #     Like complete, but additionally RAID LVs of segment type raid1,
+        #     raid4, raid5, radid6 and raid10 will be activated if there is no
+        #     data loss, i.e. they have sufficient redundancy to present the
+        #     entire addressable range of the Logical Volume.
+        #   partial
+        #     Allows the activation of any LV even if a missing or failed PV
+        #     could cause data loss with a portion of the LV inaccessible.
+        #     This setting should not normally be used, but may sometimes
+        #     assist with data recovery.
+        # 
+        activation_mode = "degraded"
+
+        # Configuration option activation/lock_start_list.
+        # Locking is started only for VGs selected by this list.
+        # The rules are the same as those for volume_list.
+        # This configuration option does not have a default value defined.
+
+        # Configuration option activation/auto_lock_start_list.
+        # Locking is auto-started only for VGs selected by this list.
+        # The rules are the same as those for auto_activation_volume_list.
+        # This configuration option does not have a default value defined.
+}
+
+# Configuration section metadata.
+# This configuration section has an automatic default value.
+# metadata {
+
+        # Configuration option metadata/pvmetadatacopies.
+        # Number of copies of metadata to store on each PV.
+        # The --pvmetadatacopies option overrides this setting.
+        # 
+        # Accepted values:
+        #   2
+        #     Two copies of the VG metadata are stored on the PV, one at the
+        #     front of the PV, and one at the end.
+        #   1
+        #     One copy of VG metadata is stored at the front of the PV.
+        #   0
+        #     No copies of VG metadata are stored on the PV. This may be
+        #     useful for VGs containing large numbers of PVs.
+        # 
+        # This configuration option is advanced.
+        # This configuration option has an automatic default value.
+        # pvmetadatacopies = 1
+
+        # Configuration option metadata/vgmetadatacopies.
+        # Number of copies of metadata to maintain for each VG.
+        # The --vgmetadatacopies option overrides this setting.
+        # If set to a non-zero value, LVM automatically chooses which of the
+        # available metadata areas to use to achieve the requested number of
+        # copies of the VG metadata. If you set a value larger than the the
+        # total number of metadata areas available, then metadata is stored in
+        # them all. The value 0 (unmanaged) disables this automatic management
+        # and allows you to control which metadata areas are used at the
+        # individual PV level using pvchange --metadataignore y|n.
+        # This configuration option has an automatic default value.
+        # vgmetadatacopies = 0
+
+        # Configuration option metadata/pvmetadatasize.
+        # Approximate number of sectors to use for each metadata copy.
+        # VGs with large numbers of PVs or LVs, or VGs containing complex LV
+        # structures, may need additional space for VG metadata. The metadata
+        # areas are treated as circular buffers, so unused space becomes filled
+        # with an archive of the most recent previous versions of the metadata.
+        # This configuration option has an automatic default value.
+        # pvmetadatasize = 255
+
+        # Configuration option metadata/pvmetadataignore.
+        # Ignore metadata areas on a new PV.
+        # The --metadataignore option overrides this setting.
+        # If metadata areas on a PV are ignored, LVM will not store metadata
+        # in them.
+        # This configuration option is advanced.
+        # This configuration option has an automatic default value.
+        # pvmetadataignore = 0
+
+        # Configuration option metadata/stripesize.
+        # This configuration option is advanced.
+        # This configuration option has an automatic default value.
+        # stripesize = 64
+
+        # Configuration option metadata/dirs.
+        # Directories holding live copies of text format metadata.
+        # These directories must not be on logical volumes!
+        # It's possible to use LVM with a couple of directories here,
+        # preferably on different (non-LV) filesystems, and with no other
+        # on-disk metadata (pvmetadatacopies = 0). Or this can be in addition
+        # to on-disk metadata areas. The feature was originally added to
+        # simplify testing and is not supported under low memory situations -
+        # the machine could lock up. Never edit any files in these directories
+        # by hand unless you are absolutely sure you know what you are doing!
+        # Use the supplied toolset to make changes (e.g. vgcfgrestore).
+        # 
+        # Example
+        # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
+        # 
+        # This configuration option is advanced.
+        # This configuration option does not have a default value defined.
+# }
+
+# Configuration section report.
+# LVM report command output formatting.
+# This configuration section has an automatic default value.
+# report {
+
+        # Configuration option report/compact_output.
+        # Do not print empty values for all report fields.
+        # If enabled, all fields that don't have a value set for any of the
+        # rows reported are skipped and not printed. Compact output is
+        # applicable only if report/buffered is enabled. If you need to
+        # compact only specified fields, use compact_output=0 and define
+        # report/compact_output_cols configuration setting instead.
+        # This configuration option has an automatic default value.
+        # compact_output = 0
+
+        # Configuration option report/compact_output_cols.
+        # Do not print empty values for specified report fields.
+        # If defined, specified fields that don't have a value set for any
+        # of the rows reported are skipped and not printed. Compact output
+        # is applicable only if report/buffered is enabled. If you need to
+        # compact all fields, use compact_output=1 instead in which case
+        # the compact_output_cols setting is then ignored.
+        # This configuration option has an automatic default value.
+        # compact_output_cols = ""
+
+        # Configuration option report/aligned.
+        # Align columns in report output.
+        # This configuration option has an automatic default value.
+        # aligned = 1
+
+        # Configuration option report/buffered.
+        # Buffer report output.
+        # When buffered reporting is used, the report's content is appended
+        # incrementally to include each object being reported until the report
+        # is flushed to output which normally happens at the end of command
+        # execution. Otherwise, if buffering is not used, each object is
+        # reported as soon as its processing is finished.
+        # This configuration option has an automatic default value.
+        # buffered = 1
+
+        # Configuration option report/headings.
+        # Show headings for columns on report.
+        # This configuration option has an automatic default value.
+        # headings = 1
+
+        # Configuration option report/separator.
+        # A separator to use on report after each field.
+        # This configuration option has an automatic default value.
+        # separator = " "
+
+        # Configuration option report/list_item_separator.
+        # A separator to use for list items when reported.
+        # This configuration option has an automatic default value.
+        # list_item_separator = ","
+
+        # Configuration option report/prefixes.
+        # Use a field name prefix for each field reported.
+        # This configuration option has an automatic default value.
+        # prefixes = 0
+
+        # Configuration option report/quoted.
+        # Quote field values when using field name prefixes.
+        # This configuration option has an automatic default value.
+        # quoted = 1
+
+        # Configuration option report/colums_as_rows.
+        # Output each column as a row.
+        # If set, this also implies report/prefixes=1.
+        # This configuration option has an automatic default value.
+        # colums_as_rows = 0
+
+        # Configuration option report/binary_values_as_numeric.
+        # Use binary values 0 or 1 instead of descriptive literal values.
+        # For columns that have exactly two valid values to report
+        # (not counting the 'unknown' value which denotes that the
+        # value could not be determined).
+        # This configuration option has an automatic default value.
+        # binary_values_as_numeric = 0
+
+        # Configuration option report/time_format.
+        # Set time format for fields reporting time values.
+        # Format specification is a string which may contain special character
+        # sequences and ordinary character sequences. Ordinary character
+        # sequences are copied verbatim. Each special character sequence is
+        # introduced by the '%' character and such sequence is then
+        # substituted with a value as described below.
+        # 
+        # Accepted values:
+        #   %a
+        #     The abbreviated name of the day of the week according to the
+        #     current locale.
+        #   %A
+        #     The full name of the day of the week according to the current
+        #     locale.
+        #   %b
+        #     The abbreviated month name according to the current locale.
+        #   %B
+        #     The full month name according to the current locale.
+        #   %c
+        #     The preferred date and time representation for the current
+        #     locale (alt E)
+        #   %C
+        #     The century number (year/100) as a 2-digit integer. (alt E)
+        #   %d
+        #     The day of the month as a decimal number (range 01 to 31).
+        #     (alt O)
+        #   %D
+        #     Equivalent to %m/%d/%y. (For Americans only. Americans should
+        #     note that in other countries%d/%m/%y is rather common. This
+        #     means that in international context this format is ambiguous and
+        #     should not be used.
+        #   %e
+        #     Like %d, the day of the month as a decimal number, but a leading
+        #     zero is replaced by a space. (alt O)
+        #   %E
+        #     Modifier: use alternative local-dependent representation if
+        #     available.
+        #   %F
+        #     Equivalent to %Y-%m-%d (the ISO 8601 date format).
+        #   %G
+        #     The ISO 8601 week-based year with century as adecimal number.
+        #     The 4-digit year corresponding to the ISO week number (see %V).
+        #     This has the same format and value as %Y, except that if the
+        #     ISO week number belongs to the previous or next year, that year
+        #     is used instead.
+        #   %g
+        #     Like %G, but without century, that is, with a 2-digit year
+        #     (00-99).
+        #   %h
+        #     Equivalent to %b.
+        #   %H
+        #     The hour as a decimal number using a 24-hour clock
+        #     (range 00 to 23). (alt O)
+        #   %I
+        #     The hour as a decimal number using a 12-hour clock
+        #     (range 01 to 12). (alt O)
+        #   %j
+        #     The day of the year as a decimal number (range 001 to 366).
+        #   %k
+        #     The hour (24-hour clock) as a decimal number (range 0 to 23);
+        #     single digits are preceded by a blank. (See also %H.)
+        #   %l
+        #     The hour (12-hour clock) as a decimal number (range 1 to 12);
+        #     single digits are preceded by a blank. (See also %I.)
+        #   %m
+        #     The month as a decimal number (range 01 to 12). (alt O)
+        #   %M
+        #     The minute as a decimal number (range 00 to 59). (alt O)
+        #   %O
+        #     Modifier: use alternative numeric symbols.
+        #   %p
+        #     Either "AM" or "PM" according to the given time value,
+        #     or the corresponding strings for the current locale. Noon is
+        #     treated as "PM" and midnight as "AM".
+        #   %P
+        #     Like %p but in lowercase: "am" or "pm" or a corresponding
+        #     string for the current locale.
+        #   %r
+        #     The time in a.m. or p.m. notation. In the POSIX locale this is
+        #     equivalent to %I:%M:%S %p.
+        #   %R
+        #     The time in 24-hour notation (%H:%M). For a version including
+        #     the seconds, see %T below.
+        #   %s
+        #     The number of seconds since the Epoch,
+        #     1970-01-01 00:00:00 +0000 (UTC)
+        #   %S
+        #     The second as a decimal number (range 00 to 60). (The range is
+        #     up to 60 to allow for occasional leap seconds.) (alt O)
+        #   %t
+        #     A tab character.
+        #   %T
+        #     The time in 24-hour notation (%H:%M:%S).
+        #   %u
+        #     The day of the week as a decimal, range 1 to 7, Monday being 1.
+        #     See also %w. (alt O)
+        #   %U
+        #     The week number of the current year as a decimal number,
+        #     range 00 to 53, starting with the first Sunday as the first
+        #     day of week 01. See also %V and %W. (alt O)
+        #   %V
+        #     The ISO 8601 week number of the current year as a decimal number,
+        #     range 01 to 53, where week 1 is the first week that has at least
+        #     4 days in the new year. See also %U and %W. (alt O)
+        #   %w
+        #     The day of the week as a decimal, range 0 to 6, Sunday being 0.
+        #     See also %u. (alt O)
+        #   %W
+        #     The week number of the current year as a decimal number,
+        #     range 00 to 53, starting with the first Monday as the first day
+        #     of week 01. (alt O)
+        #   %x
+        #     The preferred date representation for the current locale without
+        #     the time. (alt E)
+        #   %X
+        #     The preferred time representation for the current locale without
+        #     the date. (alt E)
+        #   %y
+        #     The year as a decimal number without a century (range 00 to 99).
+        #     (alt E, alt O)
+        #   %Y
+        #     The year as a decimal number including the century. (alt E)
+        #   %z
+        #     The +hhmm or -hhmm numeric timezone (that is, the hour and minute
+        #     offset from UTC).
+        #   %Z
+        #     The timezone name or abbreviation.
+        #   %%
+        #     A literal '%' character.
+        # 
+        # This configuration option has an automatic default value.
+        # time_format = "%Y-%m-%d %T %z"
+
+        # Configuration option report/devtypes_sort.
+        # List of columns to sort by when reporting 'lvm devtypes' command.
+        # See 'lvm devtypes -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # devtypes_sort = "devtype_name"
+
+        # Configuration option report/devtypes_cols.
+        # List of columns to report for 'lvm devtypes' command.
+        # See 'lvm devtypes -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # devtypes_cols = "devtype_name,devtype_max_partitions,devtype_description"
+
+        # Configuration option report/devtypes_cols_verbose.
+        # List of columns to report for 'lvm devtypes' command in verbose mode.
+        # See 'lvm devtypes -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # devtypes_cols_verbose = "devtype_name,devtype_max_partitions,devtype_description"
+
+        # Configuration option report/lvs_sort.
+        # List of columns to sort by when reporting 'lvs' command.
+        # See 'lvs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # lvs_sort = "vg_name,lv_name"
+
+        # Configuration option report/lvs_cols.
+        # List of columns to report for 'lvs' command.
+        # See 'lvs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # lvs_cols = "lv_name,vg_name,lv_attr,lv_size,pool_lv,origin,data_percent,metadata_percent,move_pv,mirror_log,copy_percent,convert_lv"
+
+        # Configuration option report/lvs_cols_verbose.
+        # List of columns to report for 'lvs' command in verbose mode.
+        # See 'lvs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # lvs_cols_verbose = "lv_name,vg_name,seg_count,lv_attr,lv_size,lv_major,lv_minor,lv_kernel_major,lv_kernel_minor,pool_lv,origin,data_percent,metadata_percent,move_pv,copy_percent,mirror_log,convert_lv,lv_uuid,lv_profile"
+
+        # Configuration option report/vgs_sort.
+        # List of columns to sort by when reporting 'vgs' command.
+        # See 'vgs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # vgs_sort = "vg_name"
+
+        # Configuration option report/vgs_cols.
+        # List of columns to report for 'vgs' command.
+        # See 'vgs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # vgs_cols = "vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free"
+
+        # Configuration option report/vgs_cols_verbose.
+        # List of columns to report for 'vgs' command in verbose mode.
+        # See 'vgs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # vgs_cols_verbose = "vg_name,vg_attr,vg_extent_size,pv_count,lv_count,snap_count,vg_size,vg_free,vg_uuid,vg_profile"
+
+        # Configuration option report/pvs_sort.
+        # List of columns to sort by when reporting 'pvs' command.
+        # See 'pvs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # pvs_sort = "pv_name"
+
+        # Configuration option report/pvs_cols.
+        # List of columns to report for 'pvs' command.
+        # See 'pvs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # pvs_cols = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free"
+
+        # Configuration option report/pvs_cols_verbose.
+        # List of columns to report for 'pvs' command in verbose mode.
+        # See 'pvs -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # pvs_cols_verbose = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,dev_size,pv_uuid"
+
+        # Configuration option report/segs_sort.
+        # List of columns to sort by when reporting 'lvs --segments' command.
+        # See 'lvs --segments -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # segs_sort = "vg_name,lv_name,seg_start"
+
+        # Configuration option report/segs_cols.
+        # List of columns to report for 'lvs --segments' command.
+        # See 'lvs --segments -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # segs_cols = "lv_name,vg_name,lv_attr,stripes,segtype,seg_size"
+
+        # Configuration option report/segs_cols_verbose.
+        # List of columns to report for 'lvs --segments' command in verbose mode.
+        # See 'lvs --segments -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # segs_cols_verbose = "lv_name,vg_name,lv_attr,seg_start,seg_size,stripes,segtype,stripesize,chunksize"
+
+        # Configuration option report/pvsegs_sort.
+        # List of columns to sort by when reporting 'pvs --segments' command.
+        # See 'pvs --segments -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # pvsegs_sort = "pv_name,pvseg_start"
+
+        # Configuration option report/pvsegs_cols.
+        # List of columns to sort by when reporting 'pvs --segments' command.
+        # See 'pvs --segments -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # pvsegs_cols = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size"
+
+        # Configuration option report/pvsegs_cols_verbose.
+        # List of columns to sort by when reporting 'pvs --segments' command in verbose mode.
+        # See 'pvs --segments -o help' for the list of possible fields.
+        # This configuration option has an automatic default value.
+        # pvsegs_cols_verbose = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size,lv_name,seg_start_pe,segtype,seg_pe_ranges"
+# }
+
+# Configuration section dmeventd.
+# Settings for the LVM event daemon.
+dmeventd {
+
+        # Configuration option dmeventd/mirror_library.
+        # The library dmeventd uses when monitoring a mirror device.
+        # libdevmapper-event-lvm2mirror.so attempts to recover from
+        # failures. It removes failed devices from a volume group and
+        # reconfigures a mirror as necessary. If no mirror library is
+        # provided, mirrors are not monitored through dmeventd.
+        mirror_library = "libdevmapper-event-lvm2mirror.so"
+
+        # Configuration option dmeventd/raid_library.
+        # This configuration option has an automatic default value.
+        # raid_library = "libdevmapper-event-lvm2raid.so"
+
+        # Configuration option dmeventd/snapshot_library.
+        # The library dmeventd uses when monitoring a snapshot device.
+        # libdevmapper-event-lvm2snapshot.so monitors the filling of snapshots
+        # and emits a warning through syslog when the usage exceeds 80%. The
+        # warning is repeated when 85%, 90% and 95% of the snapshot is filled.
+        snapshot_library = "libdevmapper-event-lvm2snapshot.so"
+
+        # Configuration option dmeventd/thin_library.
+        # The library dmeventd uses when monitoring a thin device.
+        # libdevmapper-event-lvm2thin.so monitors the filling of a pool
+        # and emits a warning through syslog when the usage exceeds 80%. The
+        # warning is repeated when 85%, 90% and 95% of the pool is filled.
+        thin_library = "libdevmapper-event-lvm2thin.so"
+
+        # Configuration option dmeventd/executable.
+        # The full path to the dmeventd binary.
+        # This configuration option has an automatic default value.
+        # executable = "/sbin/dmeventd"
+}
+
+# Configuration section tags.
+# Host tag settings.
+# This configuration section has an automatic default value.
+# tags {
+
+        # Configuration option tags/hosttags.
+        # Create a host tag using the machine name.
+        # The machine name is nodename returned by uname(2).
+        # This configuration option has an automatic default value.
+        # hosttags = 0
+
+        # Configuration section tags/<tag>.
+        # Replace this subsection name with a custom tag name.
+        # Multiple subsections like this can be created. The '@' prefix for
+        # tags is optional. This subsection can contain host_list, which is a
+        # list of machine names. If the name of the local machine is found in
+        # host_list, then the name of this subsection is used as a tag and is
+        # applied to the local machine as a 'host tag'. If this subsection is
+        # empty (has no host_list), then the subsection name is always applied
+        # as a 'host tag'.
+        # 
+        # Example
+        # The host tag foo is given to all hosts, and the host tag
+        # bar is given to the hosts named machine1 and machine2.
+        # tags { foo { } bar { host_list = [ "machine1", "machine2" ] } }
+        # 
+        # This configuration section has variable name.
+        # This configuration section has an automatic default value.
+        # tag {
+
+                # Configuration option tags/<tag>/host_list.
+                # A list of machine names.
+                # These machine names are compared to the nodename returned
+                # by uname(2). If the local machine name matches an entry in
+                # this list, the name of the subsection is applied to the
+                # machine as a 'host tag'.
+                # This configuration option does not have a default value defined.
+        # }
+# }
diff --git a/linux/storage/lvm.sls b/linux/storage/lvm.sls
index 9c99956..fa7032f 100644
--- a/linux/storage/lvm.sls
+++ b/linux/storage/lvm.sls
@@ -1,7 +1,6 @@
 {%- from "linux/map.jinja" import storage with context %}
 {%- if storage.enabled %}
 
-
 linux_lvm_pkgs:
   pkg.installed:
   - pkgs: {{ storage.lvm_pkgs }}
@@ -48,4 +47,11 @@
 
 {%- endfor %}
 
+/etc/lvm/lvm.conf:
+  file.managed:
+  - source: salt://linux/files/lvm.conf
+  - template: jinja
+  - require:
+    - pkg: linux_lvm_pkgs
+
 {%- endif %}
diff --git a/linux/system/user.sls b/linux/system/user.sls
index ef01605..fc64038 100644
--- a/linux/system/user.sls
+++ b/linux/system/user.sls
@@ -19,11 +19,17 @@
   user.present:
   - name: {{ name }}
   - home: {{ user.home }}
-  {%- if user.password is defined %}
-  - password: {{ user.password }}
+  {% if user.get('password') == False %}
+  - enforce_password: false
+  {% elif user.get('password') == None %}
   - enforce_password: true
+  - password: '*'
+  {% elif user.get('password') %}
+  - enforce_password: true
+  - password: {{ user.password }}
+  - hash_password: {{ user.get('hash_password', False) }}
+  {% endif %}
   - gid_from_name: true
-  {%- endif %}
   {%- if user.groups is defined %}
   - groups: {{ user.groups }}
   {%- endif %}
