diff --git a/.gitreview b/.gitreview
deleted file mode 100644
index 8799235..0000000
--- a/.gitreview
+++ /dev/null
@@ -1,5 +0,0 @@
-[gerrit]
-host=gerrit.mcp.mirantis.net
-port=29418
-project=salt-formulas/linux
-
diff --git a/.kitchen.travis.yml b/.kitchen.travis.yml
new file mode 100644
index 0000000..a1d3e04
--- /dev/null
+++ b/.kitchen.travis.yml
@@ -0,0 +1,6 @@
+suites:
+
+  - name: <%= ENV['SUITE'] %>
+    provisioner:
+      pillars-from-files:
+        linux.sls: tests/pillar/<%= ENV['SUITE'] %>.sls
diff --git a/.travis.yml b/.travis.yml
index 577330b..3e54539 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,17 +22,19 @@
   - bundle install
 
 env:
-    - PLATFORM=trevorj/salty-whales:trusty
-    - PLATFORM=trevorj/salty-whales:xenial
-
+  - PLATFORM=trevorj/salty-whales:trusty SUITE=network
+  - PLATFORM=trevorj/salty-whales:xenial SUITE=network
+  # - PLATFORM=trevorj/salty-whales:trusty SUITE=storage
+  # - PLATFORM=trevorj/salty-whales:xenial SUITE=storage
+  - PLATFORM=trevorj/salty-whales:trusty SUITE=system
+  - PLATFORM=trevorj/salty-whales:xenial SUITE=system
 
 before_script:
   - set -o pipefail
   - make test | tail
 
 script:
-  - test ! -e .kitchen.yml || bundle exec kitchen converge || true
-  - test ! -e .kitchen.yml || bundle exec kitchen verify -t tests/integration
+  - KITCHEN_LOCAL_YAML=.kitchen.travis.yml bundle exec kitchen test -t tests/integration
 
 notifications:
   webhooks:
diff --git a/README.rst b/README.rst
index f46fc27..6f81c5d 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:
@@ -218,6 +234,9 @@
           automatic_reboot_time: "02:00"
 
 Linux with cron jobs
+By default it will use name as an identifier, unless identifier key is
+explicitly set or False (then it will use Salt's default behavior which is
+identifier same as command resulting in not being able to change it)
 
 .. code-block:: yaml
 
@@ -227,6 +246,7 @@
         job:
           cmd1:
             command: '/cmd/to/run'
+            identifier: cmd1
             enabled: true
             user: 'root'
             hour: 2
@@ -387,6 +407,25 @@
         cpu:
           governor: performance
 
+Sysfs
+~~~~~
+
+Install sysfsutils and set sysfs attributes:
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        sysfs:
+          scheduler:
+            block/sda/queue/scheduler: deadline
+          power:
+            mode:
+              power/state: 0660
+            owner:
+              power/state: "root:power"
+            devices/system/cpu/cpu0/cpufreq/scaling_governor: powersave
+
 Huge Pages
 ~~~~~~~~~~~~
 
@@ -831,6 +870,45 @@
             use_interfaces:
             - eth1
 
+Debian manual proto interfaces
+
+When you are changing interface proto from static in up state to manual, you
+may need to flush ip addresses. For example, if you want to use the interface
+and the ip on the bridge. This can be done by setting the ``ipflush_onchange``
+to true.
+
+.. code-block:: yaml
+
+    linux:
+      network:
+        interface:
+          eth1:
+            enabled: true
+            type: eth
+            proto: manual
+            mtu: 9100
+            ipflush_onchange: true
+
+
+Concatinating and removing interface files
+
+Debian based distributions have `/etc/network/interfaces.d/` directory, where
+you can store configuration of network interfaces in separate files. You can
+concatinate the files to the defined destination when needed, this operation
+removes the file from the `/etc/network/interfaces.d/`. If you just need to
+remove iface files, you can use the `remove_iface_files` key.
+
+.. code-block:: yaml
+
+    linux:
+      network:
+        concat_iface_files:
+        - src: '/etc/network/interfaces.d/50-cloud-init.cfg'
+          dst: '/etc/network/interfaces'
+        remove_iface_files:
+        - '/etc/network/interfaces.d/90-custom.cfg'
+
+
 DHCP client configuration
 
 None of the keys is mandatory, include only those you really need. For full list
@@ -908,10 +986,9 @@
 
 
 Configure global environment variables
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Linux /etc/environment:
-``/etc/environment`` is for static system wide variable assignment after boot. Variable expansion is frequently not supported.
+Use ``/etc/environment`` for static system wide variable assignment after
+boot. Variable expansion is frequently not supported.
 
 .. code-block:: yaml
 
@@ -943,11 +1020,10 @@
             - .local
 
 Configure profile.d scripts
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Linux /etc/profile.d:
-The profile.d scripts are being sourced during .sh execution and support variable expansion in opposite to /etc/environment
-global settings in ``/etc/environment``.
+The profile.d scripts are being sourced during .sh execution and support
+variable expansion in opposite to /etc/environment global settings in
+``/etc/environment``.
 
 .. code-block:: yaml
 
@@ -970,11 +1046,11 @@
             export NO_PROXY='.local'
 
 Linux with hosts
-~~~~~~~~~~~~~~~~
 
 Parameter purge_hosts will enforce whole /etc/hosts file, removing entries
 that are not defined in model except defaults for both IPv4 and IPv6 localhost
 and hostname + fqdn.
+
 It's good to use this option if you want to ensure /etc/hosts is always in a
 clean state however it's not enabled by default for safety.
 
@@ -982,7 +1058,6 @@
 
     linux:
       network:
-        ...
         purge_hosts: true
         host:
           # No need to define this one if purge_hosts is true
@@ -1002,9 +1077,27 @@
             - node2.domain.com
             - service2.domain.com
 
+Linux with hosts collected from mine
+
+In this case all dns records defined within infrastrucuture will be passed to
+local hosts records or any DNS server. Only hosts with `grain` parameter to
+true will be propagated to the mine.
+
+.. code-block:: yaml
+
+    linux:
+      network:
+        purge_hosts: true
+        mine_dns_records: true
+        host:
+          node1:
+            address: 192.168.10.200
+            grain: true
+            names:
+            - node2.domain.com
+            - service2.domain.com
 
 Setup resolv.conf, nameservers, domain and search domains
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. code-block:: yaml
 
@@ -1023,7 +1116,7 @@
           - timeout: 2
           - attempts: 2
 
-**setting custom TX queue length for tap interfaces**
+setting custom TX queue length for tap interfaces
 
 .. code-block:: yaml
 
@@ -1032,7 +1125,6 @@
         tap_custom_txqueuelen: 10000
 
 DPDK OVS interfaces
---------------------
 
 **DPDK OVS NIC**
 
@@ -1210,6 +1302,29 @@
                   size: 40G
                   mount: ${linux:storage:mount:data}
 
+Create partitions on disk. Specify size in MB. It expects empty
+disk without any existing partitions.
+
+.. code-block:: yaml
+
+      linux:
+        storage:
+          disk:
+            first_drive:
+              name: /dev/loop1
+              type: gpt
+              partitions:
+                - size: 200 #size in MB
+                  type: fat32
+                - size: 300 #size in MB
+                  mkfs: True
+                  type: xfs
+            /dev/vda1:
+              partitions:
+                - size: 5
+                  type: ext2
+                - size: 10
+                  type: ext4
 
 Multipath with Fujitsu Eternus DXL
 
diff --git a/_modules/linux_hosts.py b/_modules/linux_hosts.py
new file mode 100644
index 0000000..08741ec
--- /dev/null
+++ b/_modules/linux_hosts.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+'''
+Module for defining new filter for sorting
+host names/alias by FQDN first and alphabetically
+'''
+
+from jinja2 import Undefined
+
+def fqdn_sort_fn(n1, n2):
+    l1 = n1.split('.')
+    l2 = n2.split('.')
+    if len(l1) > len(l2):
+        return -1
+    if len(l1) < len(l2):
+        return 1
+    for i1, i2 in zip(l1, l2):
+        if i1 < i2:
+            return -1
+        if i1  > i2:
+            return 1
+    return 0
+
+def fqdn_sort_filter(iterable):
+    if iterable is None or isinstance(iterable, Undefined):
+        return iterable
+    # Do effective custom sorting of iterable here
+    return sorted(iterable, cmp=fqdn_sort_fn)
diff --git a/linux/files/grafana_dashboards/system_prometheus.json b/linux/files/grafana_dashboards/system_prometheus.json
old mode 100644
new mode 100755
index 735155b..a3910a2
--- a/linux/files/grafana_dashboards/system_prometheus.json
+++ b/linux/files/grafana_dashboards/system_prometheus.json
@@ -98,6 +98,7 @@
           "dashes": false,
           "datasource": null,
           "fill": 1,
+          "height": "",
           "id": 1,
           "legend": {
             "avg": false,
@@ -352,7 +353,19 @@
               "show": true
             }
           ]
-        },
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": true,
+      "title": "General",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": 250,
+      "panels": [
         {
           "aliasColors": {},
           "bars": false,
@@ -525,7 +538,7 @@
               "step": 10
             },
             {
-              "expr": "processes_zombie{host=\"$host\"}",
+              "expr": "processes_zombies{host=\"$host\"}",
               "format": "time_series",
               "intervalFactor": 2,
               "legendFormat": "zombie",
@@ -652,7 +665,7 @@
       "repeatIteration": null,
       "repeatRowId": null,
       "showTitle": true,
-      "title": "General",
+      "title": "Processes",
       "titleSize": "h6"
     },
     {
@@ -675,7 +688,7 @@
             "minValue": 0,
             "show": true,
             "thresholdLabels": false,
-            "thresholdMarkers": true
+            "thresholdMarkers": false
           },
           "hideTimeOverride": false,
           "id": 11,
@@ -753,7 +766,7 @@
             "minValue": 0,
             "show": true,
             "thresholdLabels": false,
-            "thresholdMarkers": true
+            "thresholdMarkers": false
           },
           "hideTimeOverride": false,
           "id": 12,
@@ -1535,9 +1548,269 @@
       "showTitle": true,
       "title": "Network",
       "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": 250,
+      "panels": [
+        {
+          "cacheTimeout": null,
+          "colorBackground": false,
+          "colorValue": false,
+          "colors": [
+            "rgba(245, 54, 54, 0.9)",
+            "rgba(237, 129, 40, 0.89)",
+            "rgba(50, 172, 45, 0.97)"
+          ],
+          "datasource": null,
+          "format": "percent",
+          "gauge": {
+            "maxValue": 100,
+            "minValue": 0,
+            "show": true,
+            "thresholdLabels": false,
+            "thresholdMarkers": false
+          },
+          "id": 18,
+          "interval": null,
+          "links": [],
+          "mappingType": 1,
+          "mappingTypes": [
+            {
+              "name": "value to text",
+              "value": 1
+            },
+            {
+              "name": "range to text",
+              "value": 2
+            }
+          ],
+          "maxDataPoints": 100,
+          "nullPointMode": "connected",
+          "nullText": null,
+          "postfix": "",
+          "postfixFontSize": "50%",
+          "prefix": "",
+          "prefixFontSize": "50%",
+          "rangeMaps": [
+            {
+              "from": "null",
+              "text": "N/A",
+              "to": "null"
+            }
+          ],
+          "span": 2,
+          "sparkline": {
+            "fillColor": "rgba(31, 118, 189, 0.18)",
+            "full": false,
+            "lineColor": "rgb(31, 120, 193)",
+            "show": false
+          },
+          "tableColumn": "",
+          "targets": [
+            {
+              "expr": "swap_used_percent{host=\"$host\"}",
+              "format": "time_series",
+              "intervalFactor": 2,
+              "refId": "A",
+              "step": 60
+            }
+          ],
+          "thresholds": "",
+          "title": "Used",
+          "type": "singlestat",
+          "valueFontSize": "80%",
+          "valueMaps": [
+            {
+              "op": "=",
+              "text": "N/A",
+              "value": "null"
+            }
+          ],
+          "valueName": "current"
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "datasource": null,
+          "decimals": null,
+          "fill": 0,
+          "id": 17,
+          "legend": {
+            "alignAsTable": false,
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "rightSide": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 5,
+          "stack": true,
+          "steppedLine": false,
+          "targets": [
+            {
+              "expr": "swap_used{host=\"$host\"}",
+              "format": "time_series",
+              "intervalFactor": 2,
+              "legendFormat": "used",
+              "refId": "A",
+              "step": 10
+            },
+            {
+              "expr": "swap_free{host=\"$host\"}",
+              "format": "time_series",
+              "intervalFactor": 2,
+              "legendFormat": "free",
+              "refId": "B",
+              "step": 10
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Usage",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "bytes",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": "0",
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "dashLength": 10,
+          "dashes": false,
+          "datasource": null,
+          "fill": 0,
+          "id": 19,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "spaceLength": 10,
+          "span": 5,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "expr": "irate(swap_in{host=\"$host\"}[5m])",
+              "format": "time_series",
+              "intervalFactor": 2,
+              "legendFormat": "in",
+              "refId": "A",
+              "step": 10
+            },
+            {
+              "expr": "irate(swap_out{host=\"$host\"}[5m])",
+              "format": "time_series",
+              "intervalFactor": 2,
+              "legendFormat": "out",
+              "refId": "B",
+              "step": 10
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "I/O",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "buckets": null,
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "Bps",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": "0",
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": true,
+      "title": "Swap",
+      "titleSize": "h6"
     }
   ],
   "schemaVersion": 14,
+  "sharedCrosshair": true,
   "style": "dark",
   "tags": [],
   "templating": {
@@ -1554,6 +1827,7 @@
         "options": [],
         "query": "label_values(cpu_usage_idle,host)",
         "refresh": 1,
+        "refresh_on_load": true,
         "regex": "",
         "sort": 1,
         "tagValuesQuery": "",
@@ -1574,6 +1848,7 @@
         "options": [],
         "query": "query_result(diskio_read_bytes{host=\"$host\"})",
         "refresh": 1,
+        "refresh_on_load": true,
         "regex": "/name=\"([^\"]+)/",
         "sort": 1,
         "tagValuesQuery": "",
@@ -1594,6 +1869,7 @@
         "options": [],
         "query": "query_result(disk_free{host=\"$host\"})",
         "refresh": 1,
+        "refresh_on_load": true,
         "regex": "/path=\"([^\"]+)/",
         "sort": 1,
         "tagValuesQuery": "",
@@ -1614,6 +1890,7 @@
         "options": [],
         "query": "query_result(net_bytes_recv{host=\"$host\"})",
         "refresh": 1,
+        "refresh_on_load": true,
         "regex": "/interface=\"([^\"]+)/",
         "sort": 1,
         "tagValuesQuery": "",
@@ -1655,5 +1932,5 @@
   },
   "timezone": "browser",
   "title": "System",
-  "version": 31
+  "version": 32
 }
diff --git a/linux/files/hosts b/linux/files/hosts
index 66951f0..4971f6c 100644
--- a/linux/files/hosts
+++ b/linux/files/hosts
@@ -31,9 +31,19 @@
         'ip6-allhosts'
     ],
 } -%}
-{%- for name, host in network.host.iteritems() -%}
+{%- for name, host in host_dict.iteritems() -%}
+{%- for hname in host.names -%}
+{%- if hname in hosts.get('127.0.1.1', []) -%}
+{%- do hosts.pop('127.0.1.1') -%}
+{%- endif %}
+{%- endfor %}
 {%- do hosts.update({host.address: host.names}) -%}
 {%- endfor %}
 {% for address, entries in hosts|dictsort %}
-{{ address }}   {{ entries|join(' ') }}
+{%- if 'linux_hosts.fqdn_sort_filter' in salt.keys() %}
+{%- set sorted_entries = salt['linux_hosts.fqdn_sort_filter'](entries) -%}
+{%- else %}
+{%- set sorted_entries = entries -%}
+{%- endif %}
+{{ address }}   {{ sorted_entries|join(' ') }}
 {%- endfor %}
diff --git a/linux/files/lvm.conf b/linux/files/lvm.conf
new file mode 100644
index 0000000..02f1c74
--- /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 = [ {%- for vgname, vg in storage.lvm.iteritems() %}{%- if vg.get('enabled', True) %}{%- for dev in vg.devices %}"a|{{ dev }}*|"{%- if not loop.last %},{%- endif %}{%- endfor %}{%- endif %}{%- endfor %}, "r|.*|" ]
+
+        # 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/files/sysfs.conf b/linux/files/sysfs.conf
new file mode 100644
index 0000000..513a53a
--- /dev/null
+++ b/linux/files/sysfs.conf
@@ -0,0 +1,16 @@
+# Sysfs file for {{ name }} managed by salt-minion(1)
+#   DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
+
+{%- for key, value in sysfs.iteritems() %}
+  {%- if key in ["mode", "owner"] %}
+    {%- for attr, val in value.iteritems() %}
+mode {{ attr }} = {{ val }}
+    {%- endfor %}
+  {%- else %}
+{{ key }} = {{ value }}
+  {%- endif %}
+{%- endfor %}
+
+{#-
+vim: syntax=jinja
+-#}
diff --git a/linux/map.jinja b/linux/map.jinja
index 79b5979..a27906c 100644
--- a/linux/map.jinja
+++ b/linux/map.jinja
@@ -91,6 +91,7 @@
     'downdelay',
     'updelay',
     'hashing-algorithm',
+    'hardware-dma-ring-rx',
 ] %}
 
 {% set network = salt['grains.filter_by']({
@@ -107,6 +108,7 @@
            'host': 'none',
         },
         'host': {},
+        'mine_dns_records': False,
         'dhclient_config': '/etc/dhcp/dhclient.conf',
     },
     'Debian': {
@@ -122,6 +124,7 @@
            'host': 'none'
         },
         'host': {},
+        'mine_dns_records': False,
         'dhclient_config': '/etc/dhcp/dhclient.conf',
     },
     'RedHat': {
@@ -136,6 +139,7 @@
            'host': 'none'
         },
         'host': {},
+        'mine_dns_records': False,
         'dhclient_config': '/etc/dhcp/dhclient.conf',
     },
 }, grain='os_family', merge=salt['pillar.get']('linux:network')) %}
@@ -144,7 +148,9 @@
     'Arch': {
         'mount': {},
         'swap': {},
+        'disk': {},
         'lvm': {},
+        'lvm_services': ['lvm2-lvmetad', 'lvm2-lvmpolld', 'lvm2-monitor'],
         'loopback': {},
         'nfs': {
              'pkgs': ['nfs-utils']
@@ -159,6 +165,8 @@
         'mount': {},
         'swap': {},
         'lvm': {},
+        'disk': {},
+        'lvm_services': ['lvm2-lvmetad', 'lvm2-lvmpolld', 'lvm2-monitor'],
         'loopback': {},
         'nfs': {
              'pkgs': ['nfs-common']
@@ -174,6 +182,8 @@
         'mount': {},
         'swap': {},
         'lvm': {},
+        'disk': {},
+        'lvm_services': ['lvm2-lvmetad', 'lvm2-lvmpolld', 'lvm2-monitor'],
         'loopback': {},
         'nfs': {
              'pkgs': ['nfs-utils']
@@ -214,5 +224,27 @@
             'interface_regex': '^[a-z0-9]+$',
             'ignore_selected': False,
         },
+        'cpu_idle_percentage': {
+              'warn': 10.0,
+        },
+        'free_memory_percentage': {
+              'warn': 10.0,
+              'crit': 5.0,
+        },
+        'load_5': {
+              'warn': 3,
+        },
+        'rx_packets_dropped_rate': {
+              'warn': 100,
+        },
+        'tx_packets_dropped_rate': {
+              'warn': 100,
+        },
+        'swap_in_rate': {
+              'warn': 1024 * 1024,
+        },
+        'swap_out_rate': {
+              'warn': 1024 * 1024,
+        },
     },
 }, grain='os_family', merge=salt['pillar.get']('linux:monitoring')) %}
diff --git a/linux/meta/collectd.yml b/linux/meta/collectd.yml
index eb69b0f..521e895 100644
--- a/linux/meta/collectd.yml
+++ b/linux/meta/collectd.yml
@@ -42,6 +42,7 @@
     - tmpfs
     - fusectl
     - cgroup
+    - overlay
   linux_storage_disk:
     plugin: disk
     template: linux/files/collectd_disk.conf
diff --git a/linux/meta/prometheus.yml b/linux/meta/prometheus.yml
index 485d4c0..d2b3d05 100644
--- a/linux/meta/prometheus.yml
+++ b/linux/meta/prometheus.yml
@@ -1,7 +1,8 @@
+{%- from "linux/map.jinja" import monitoring with context %}
 server:
   alert:
-    AvgCPUUsageIdle:
-      {%- set cpu_idle_threshold = prometheus_server.get('alert', {}).get('AvgCPUUsageIdle', {}).get('var', {}).get('threshold', 10) %}
+    SystemCpuIdleTooLow:
+      {%- set cpu_idle_threshold = monitoring.cpu_idle_percentage.warn|float %}
       if: avg_over_time(cpu_usage_idle{cpu="cpu-total"}[5m]) < {{ cpu_idle_threshold }}
       {% raw %}
       labels:
@@ -9,8 +10,8 @@
         service: system
       annotations:
         summary: 'Idle CPU usage too low on {{ $labels.host }}'
-        description: 'The average idle CPU usage is too low on node {{ $labels.host }} (current value={{ $value }}, threshold={% endraw %}{{ cpu_idle_threshold}})'
-    PredictLinearDiskFree:
+        description: 'The average idle CPU usage is too low on node {{ $labels.host }} (current value={{ $value }}%, threshold={% endraw %}{{ cpu_idle_threshold}}%).'
+    SystemDiskSpaceTooLow:
       if: 'predict_linear(disk_free[1h], 8*3600) < 0'
       {% raw %}
       labels:
@@ -18,9 +19,9 @@
         service: system
       annotations:
         summary: 'Free space for {{ $labels.path }} too low on {{ $labels.host }}'
-        description: 'The disk partition ({{ $labels.path }}) will be full in less than 8 hours on {{ $labels.host }}'
+        description: 'The disk partition ({{ $labels.path }}) will be full in less than 8 hours on {{ $labels.host }}.'
       {% endraw %}
-    PredictLinearDiskInodesFree:
+    SystemDiskInodesTooLow:
       if: 'predict_linear(disk_inodes_free[1h], 8*3600) < 0'
       {% raw %}
       labels:
@@ -28,45 +29,84 @@
         service: system
       annotations:
         summary: 'Free inodes for {{ $labels.path }} too low on {{ $labels.host }}'
-        description: 'The disk inodes ({{ $labels.path }}) will be full in less than 8 hours on {{ $labels.host }}'
+        description: 'The disk inodes ({{ $labels.path }}) will be full in less than 8 hours on {{ $labels.host }}.'
       {% endraw %}
-    AvgMemAvailablePercent:
-      {%- set mem_avail_threshold = prometheus_server.get('alert', {}).get('AvgMemAvailablePercent', {}).get('var', {}).get('threshold', 10) %}
-      if: avg_over_time(mem_available_percent[5m]) < {{ mem_avail_threshold }}
+    SystemMemoryAvailableLow:
+      {%- set mem_avail_warn_threshold = monitoring.free_memory_percentage.warn|float %}
+      if: avg_over_time(mem_available_percent[5m]) < {{ mem_avail_warn_threshold }}
       {% raw %}
       labels:
         severity: warning
         service: system
       annotations:
+        summary: 'Free memory low on {{ $labels.host }}'
+        description: 'The percentage of free memory is low on node {{ $labels.host }} (current value={{ $value }}%, threshold={% endraw %}{{ mem_avail_warn_threshold }}%).'
+    SystemMemoryAvailableTooLow:
+      {%- set mem_avail_crit_threshold = monitoring.free_memory_percentage.crit|float %}
+      if: avg_over_time(mem_available_percent[5m]) < {{ mem_avail_crit_threshold }}
+      {% raw %}
+      labels:
+        severity: critical
+        service: system
+      annotations:
         summary: 'Free memory too low on {{ $labels.host }}'
-        description: 'The percentage of free memory is too low on node {{ $labels.host }} (current value={{ $value }}, threshold={% endraw %}{{ mem_avail_threshold }})'
-    SystemLoad5:
-      if: system_load5 / system_n_cpus > {{ prometheus_server.get('alert', {}).get('SystemLoad5', {}).get('var', {}).get('threshold', 3) }}
+        description: 'The percentage of free memory is too low on node {{ $labels.host }} (current value={{ $value }}%, threshold={% endraw %}{{ mem_avail_crit_threshold }}%).'
+    SystemLoad5TooHigh:
+      if: system_load5 / system_n_cpus > {{ monitoring.load_5.warn }}
       {% raw %}
       labels:
         severity: warning
         service: system
       annotations:
         summary: 'High system load (5m) on {{ $labels.host }}'
-        description: 'High system load (5m) on node {{ $labels.host }}'
-      {% endraw %}
-    NetworkRxPacketsDropped:
-      {%- set net_rx_dropped_threshold = prometheus_server.get('alert', {}).get('NetworkRxPacketsDropped', {}).get('var', {}).get('threshold', 100) %}
-      if: avg_over_time(net_drop_in[1m]) > {{ net_rx_dropped_threshold }}
+        description: 'The 5-minutes system load is too high on node {{ $labels.host }} (current value={{ $value }}, threshold={% endraw %}{{ monitoring.load_5.warn }}).'
+    SystemRxPacketsDroppedTooHigh:
+      {%- set net_rx_dropped_threshold = monitoring.rx_packets_dropped_rate.warn %}
+      if: rate(net_drop_in[1m]) > {{ net_rx_dropped_threshold }}
       {% raw %}
       labels:
         severity: warning
         service: system
       annotations:
         summary: 'Too many received packets dropped on {{ $labels.host }} for interface {{ $labels.interface }}'
-        description: 'The average number of received packets which are dropped is too high on node {{ $labels.host }} for interface {{ $label.interface }} (current value={{ $value }}, threshold={% endraw %}{{ net_rx_dropped_threshold }})'
-    NetworkTxPacketsDropped:
-      {%- set net_tx_dropped_threshold = prometheus_server.get('alert', {}).get('NetworkTxPacketsDropped', {}).get('var', {}).get('threshold', 100) %}
-      if: avg_over_time(net_drop_out[1m]) > {{ net_tx_dropped_threshold }}
+        description: 'The rate of received packets which are dropped is too high on node {{ $labels.host }} for interface {{ $labels.interface }} (current value={{ $value }}/sec, threshold={% endraw %}{{ net_rx_dropped_threshold }}/sec)'
+    SystemTxPacketsDroppedTooHigh:
+      {%- set net_tx_dropped_threshold = monitoring.tx_packets_dropped_rate.warn %}
+      if: rate(net_drop_out[1m]) > {{ net_tx_dropped_threshold }}
       {% raw %}
       labels:
         severity: warning
         service: system
       annotations:
         summary: 'Too many transmitted packets dropped on {{ $labels.host }} for interface {{ $labels.interface }}'
-        description: 'The average number of transmitted packets which are dropped is too high on node {{ $labels.host }} for interface {{ $label.interface }} (current value={{ $value }}, threshold={% endraw %}{{ net_tx_dropped_threshold }})'
+        description: 'The rate of transmitted packets which are dropped is too high on node {{ $labels.host }} for interface {{ $labels.interface }} (current value={{ $value }}/sec, threshold={% endraw %}{{ net_tx_dropped_threshold }}/sec)'
+    SystemSwapUsed:
+      {%- set swap_used_threshold = monitoring.swap.warn.strip('%')|float %}
+      if: avg_over_time(swap_used_percent[1m]) > {{ swap_used_threshold }}
+      {% raw %}
+      labels:
+        severity: warning
+        service: system
+      annotations:
+        summary: 'Swap usage too high on {{ $labels.host }}'
+        description: 'The average percentage of used swap is too high on node {{ $labels.host }} (current value={{ $value }}%, threshold={% endraw %}{{ swap_used_threshold }}%)'
+    SystemSwapIn:
+      {%- set swap_in_threshold = monitoring.swap_in_rate.warn %}
+      if: rate(swap_in[2m]) > {{ swap_in_threshold }}
+      {% raw %}
+      labels:
+        severity: warning
+        service: system
+      annotations:
+        summary: 'Swap input throughput too high on {{ $labels.host }}'
+        description: 'The rate of swap input bytes is too high on node {{ $labels.host }} (current value={{ $value }}b/s, threshold={% endraw %}{{ swap_in_threshold }}b/s).'
+    SystemSwapOut:
+      {%- set swap_out_threshold = monitoring.swap_out_rate.warn %}
+      if: rate(swap_out[2m]) > {{ swap_out_threshold }}
+      {% raw %}
+      labels:
+        severity: warning
+        service: system
+      annotations:
+        summary: 'Swap output throughput too high on {{ $labels.host }}'
+        description: 'The rate of swap output bytes is too high on node {{ $labels.host }} (current value={{ $value }}b/s, threshold={% endraw %}{{ swap_out_threshold }}b/s).'
diff --git a/linux/meta/salt.yml b/linux/meta/salt.yml
index 0a07522..9ca9ee9 100644
--- a/linux/meta/salt.yml
+++ b/linux/meta/salt.yml
@@ -1,4 +1,4 @@
-{%- from "linux/map.jinja" import system with context -%}
+{%- from "linux/map.jinja" import system,network with context -%}
 orchestrate:
   system:
     priority: 30
@@ -18,3 +18,12 @@
       {%- endif %}
     {%- endfor %}
     {{ service_grains|yaml(False)|indent(4) }}
+  {%- set dns_records = [] %}
+  {%- for host_name, host in network.host.items() %}
+  {%- if host.get('grain', False) %}
+  {%- do host.pop('grain') %}
+  {%- do dns_records.append(host) %}
+  {%- endif %}
+  {%- endfor %}
+  dns_records: 
+    dns_records: {{ dns_records|yaml }}
diff --git a/linux/meta/telegraf.yml b/linux/meta/telegraf.yml
index bc689ae..2ff4386 100644
--- a/linux/meta/telegraf.yml
+++ b/linux/meta/telegraf.yml
@@ -1,12 +1,23 @@
 agent:
   input:
     cpu:
-      percpu: true
+      percpu: false
       totalcpu: true
     disk:
+      ignore_fs:
+        - rootfs
+        - sysfs
+        - proc
+        - devtmpfs
+        - devpts
+        - tmpfs
+        - fusectl
+        - cgroup
+        - overlay
     diskio:
     kernel:
     net:
     mem:
     processes:
+    swap:
     system:
diff --git a/linux/network/host.sls b/linux/network/host.sls
index caa7f3b..14bd837 100644
--- a/linux/network/host.sls
+++ b/linux/network/host.sls
@@ -1,6 +1,21 @@
 {%- from "linux/map.jinja" import network with context %}
 {%- if network.enabled %}
 
+{%- set host_dict = network.host %}
+
+{%- if network.mine_dns_records %}
+
+{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
+{%- if node_grains.get('dns_records', []) is iterable %}
+{%- for record in node_grains.get('dns_records', []) %}
+{%- set record_key = node_name ~ '-' ~ loop.index %}
+{%- do host_dict.update({ record_key: {'address': record.address, 'names': record.names} }) %}
+{%- endfor %}
+{%- endif %}
+{%- endfor %}
+
+{%- endif %}
+
 {%- if network.get('purge_hosts', false) %}
 
 linux_hosts:
@@ -8,10 +23,12 @@
     - name: /etc/hosts
     - source: salt://linux/files/hosts
     - template: jinja
+    - defaults:
+        host_dict: {{ host_dict|yaml }}
 
 {%- else %}
 
-{%- for name, host in network.host.iteritems() %}
+{%- for name, host in host_dict.iteritems() %}
 
 {%- if host.names is defined %}
 
diff --git a/linux/network/interface.sls b/linux/network/interface.sls
index bed9a3f..e225888 100644
--- a/linux/network/interface.sls
+++ b/linux/network/interface.sls
@@ -20,6 +20,32 @@
 
 {%- endif %}
 
+{%- for f in network.get('concat_iface_files', []) %}
+
+{%- if salt['file.file_exists'](f.src) %}
+
+append_{{ f.src }}_{{ f.dst }}:
+  file.append:
+    - name: {{ f.dst }}
+    - source: {{ f.src }}
+
+remove_appended_{{ f.src }}:
+  file.absent:
+    - name: {{ f.src }}
+
+{%- endif %}
+
+{%- endfor %}
+
+{%- for f in network.get('remove_iface_files', []) %}
+
+remove_iface_file_{{ f }}:
+  file.absent:
+    - name: {{ f }}
+
+{%- endfor %}
+
+
 {%- for interface_name, interface in network.interface.iteritems() %}
 
 {%- set interface_name = interface.get('name', interface_name) %}
@@ -70,7 +96,7 @@
 ovs_port_set_peer_{{ interface_name }}:
   cmd.run:
   - name: ovs-vsctl set interface {{ interface_name }} options:peer={{ interface.peer }}
-  - unless: ovs-vsctl show | grep -A 2 'Interface floating-to-prv' | grep {{ interface.peer }}
+  - unless: ovs-vsctl show | grep -A 2 'Interface {{ interface_name }}' | grep {{ interface.peer }}
 
 {%- else %}
 
@@ -112,6 +138,7 @@
     - file: ovs_port_{{ interface_name }}_line1
     - file: ovs_port_{{ interface_name }}_line2
     - openvswitch_bridge: ovs_bridge_{{ interface.bridge }}
+    - file: linux_interfaces_final_include
 
 {%- endif %}
 
@@ -178,6 +205,16 @@
   - mode: {{ interface.mode }}
   {%- endif %}
 
+{%- if interface.get('ipflush_onchange', False) %}
+
+linux_interface_ipflush_onchange_{{ interface_name }}:
+  cmd.run:
+  - name: "/sbin/ip address flush dev {{ interface_name }}"
+  - onchanges:
+    - network: linux_interface_{{ interface_name }}
+
+{%- endif %}
+
 {%- for network in interface.get('use_ovs_ports', []) %}
 
 remove_interface_{{ network }}_line1:
@@ -264,7 +301,9 @@
     - name: {{ route_name }}
       ipaddr: {{ route.address }}
       netmask: {{ route.netmask }}
+      {%- if route.gateway is defined %}
       gateway: {{ route.gateway }}
+      {%- endif %}
     {%- endfor %}
 
 {%- endif %}
diff --git a/linux/storage/disk.sls b/linux/storage/disk.sls
new file mode 100644
index 0000000..4fc96e5
--- /dev/null
+++ b/linux/storage/disk.sls
@@ -0,0 +1,66 @@
+{%- from "linux/map.jinja" import storage with context %}
+{%- if storage.enabled %}
+
+parted:
+  pkg.installed
+
+xfsprogs:
+  pkg.installed
+
+{%- for disk_name, disk in storage.disk.iteritems() %}
+{%- set disk_name = disk.name|default(disk_name) %}
+
+create_disk_label_{{ disk_name }}:
+  module.run:
+  - name: partition.mklabel
+  - device: {{ disk_name }}
+  - label_type: {{ disk.get('type', 'dos') }}
+  - unless: "fdisk -l {{ disk_name }} | grep -i 'Disklabel type: {{ disk.get('type', 'dos') }}'"
+  - require:
+    - pkg: parted
+
+{% set end_size = 0 -%}
+
+{%- for partition in disk.get('partitions', []) %}
+
+create_partition_{{ disk_name }}_{{ loop.index }}:
+  module.run:
+  - name: partition.mkpart
+  - device: {{ disk_name }}
+  - part_type: primary
+  - fs_type: {{ partition.type }}
+  - start: {{ end_size }}MB
+  - end: {{ end_size + partition.size }}MB
+  - unless: "blkid {{ disk_name }}{{ loop.index }} {{ disk_name }}p{{ loop.index }}"
+  - require:
+    - module: create_disk_label_{{ disk_name }}
+    - pkg: xfsprogs
+
+{% set end_size = end_size + partition.size -%}
+
+{%- endfor %}
+
+probe_partions_{{ disk_name }}:
+  module.run:
+  - name: partition.probe
+  - device: {{ disk_name }}
+
+{%- for partition in disk.get('partitions', []) %}
+
+{%- if partition.get('mkfs') and partition.type == "xfs" %}
+
+mkfs_partition_{{ disk_name }}_{{ loop.index }}:
+  module.run:
+  - name: xfs.mkfs
+  - device: {{ disk_name }}{{ loop.index }}
+  - unless: "blkid {{ disk_name }}{{ loop.index }} {{ disk_name }}p{{ loop.index }} | grep xfs"
+  - require:
+    - module: create_partition_{{ disk_name }}_{{ loop.index }}
+
+{%- endif %}
+
+{%- endfor %}
+
+{%- endfor %}
+
+{%- endif %}
diff --git a/linux/storage/init.sls b/linux/storage/init.sls
index a5b78eb..b996b73 100644
--- a/linux/storage/init.sls
+++ b/linux/storage/init.sls
@@ -1,9 +1,12 @@
 {%- from "linux/map.jinja" import storage with context %}
-{%- if storage.mount|length > 0 or storage.swap|length > 0 or storage.multipath.enabled or storage.lvm|length > 0 or storage.loopback|length > 0 %}
+{%- if storage.mount|length > 0 or storage.swap|length > 0 or storage.multipath.enabled or storage.disk|length > 0 or storage.lvm|length > 0 or storage.loopback|length > 0 %}
 include:
 {%- if storage.loopback|length > 0 %}
 - linux.storage.loopback
 {%- endif %}
+{%- if storage.disk|length > 0 %}
+- linux.storage.disk
+{%- endif %}
 {%- if storage.lvm|length > 0 %}
 - linux.storage.lvm
 {%- endif %}
diff --git a/linux/storage/lvm.sls b/linux/storage/lvm.sls
index 9c99956..e88c2f1 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,20 @@
 
 {%- endfor %}
 
+/etc/lvm/lvm.conf:
+  file.managed:
+  - source: salt://linux/files/lvm.conf
+  - template: jinja
+  - require:
+    - pkg: linux_lvm_pkgs
+
+lvm_services:
+  service.running:
+  - enable: true
+  - names: {{ storage.lvm_services }}
+  - require:
+    - file: /etc/lvm/lvm.conf
+  - watch:
+    - file: /etc/lvm/lvm.conf
+
 {%- endif %}
diff --git a/linux/storage/mount.sls b/linux/storage/mount.sls
index 465f966..af77c26 100644
--- a/linux/storage/mount.sls
+++ b/linux/storage/mount.sls
@@ -1,7 +1,7 @@
 {%- from "linux/map.jinja" import storage with context %}
 {%- if storage.enabled %}
 
-{%- for name, mount in storage.mount.iteritems() %}
+{%- for name, mount in storage.mount|dictsort %}
 
 {%- if mount.enabled %}
 
diff --git a/linux/system/apparmor.sls b/linux/system/apparmor.sls
index f6737fe..a817ea5 100644
--- a/linux/system/apparmor.sls
+++ b/linux/system/apparmor.sls
@@ -10,7 +10,7 @@
   - name: apparmor
   - enable: true
   - require:
-    - pkg: linux_packages
+    - pkg: linux_repo_prereq_pkgs
 
 {%- else %}
 
diff --git a/linux/system/cpu.sls b/linux/system/cpu.sls
index 5292585..37c3c21 100644
--- a/linux/system/cpu.sls
+++ b/linux/system/cpu.sls
@@ -1,16 +1,8 @@
 {%- from "linux/map.jinja" import system with context %}
 {%- if system.cpu.governor is defined %}
 
-linux_sysfs_package:
-  pkg.installed:
-    - pkgs:
-      - sysfsutils
-    - refresh: true
-
-/etc/sysfs.d:
-  file.directory:
-    - require:
-      - pkg: linux_sysfs_package
+include:
+  - linux.system.sysfs
 
 ondemand_service_disable:
   service.dead:
@@ -29,14 +21,19 @@
     - mode: 0644
     - defaults:
         governor: {{ system.cpu.governor }}
+    - require:
+      - file: /etc/sysfs.d
 
 {% for cpu_core in range(salt['grains.get']('num_cpus', 1)) %}
 
+{% set core_key = 'devices/system/cpu/cpu' + cpu_core|string + '/cpufreq/scaling_governor' %}
+{% if salt['file.file_exists']('/sys/'+ core_key) %}
 governor_write_sysfs_cpu_core_{{ cpu_core }}:
   module.run:
     - name: sysfs.write
-    - key: devices/system/cpu/cpu{{ cpu_core }}/cpufreq/scaling_governor
+    - key: {{ core_key }}
     - value: {{ system.cpu.governor }}
+{% endif %}
 
 {%- endfor %}
 
diff --git a/linux/system/group.sls b/linux/system/group.sls
index d990889..1a241a8 100644
--- a/linux/system/group.sls
+++ b/linux/system/group.sls
@@ -1,10 +1,23 @@
 {%- from "linux/map.jinja" import system with context %}
 {%- if system.enabled %}
 
+{%- macro set_p(paramname, dictvar) -%}
+  {%- if paramname in dictvar -%}
+- {{ paramname }}: {{ dictvar[paramname] }}
+  {%- endif -%}
+{%- endmacro -%}
+
 {%- for group_name, group in system.group.iteritems() %}
 
 {%- if group.enabled %}
 
+{%- set requires = [] %}
+{%- for user in group.get('addusers', []) %}
+  {%- if user in system.get('user', {}).keys() %}
+    {%- do requires.append({'user': 'system_user_'+user}) %}
+  {%- endif %}
+{%- endfor %}
+
 system_group_{{ group_name }}:
   group.present:
   - name: {{ group.get('name', group_name) }}
@@ -14,6 +27,9 @@
   {%- if group.gid is defined and group.gid %}
   - gid: {{ group.gid }}
   {%- endif %}
+  - require: {{ requires|yaml }}
+{{ set_p('addusers', group)|indent(2, True) }}
+{{ set_p('delusers', group)|indent(2, True) }}
 
 {%- else %}
 
diff --git a/linux/system/init.sls b/linux/system/init.sls
index fe54147..0ba87aa 100644
--- a/linux/system/init.sls
+++ b/linux/system/init.sls
@@ -30,6 +30,9 @@
 {%- if system.cpu is defined %}
 - linux.system.cpu
 {%- endif %}
+{%- if system.sysfs is defined %}
+- linux.system.sysfs
+{%- endif %}
 {%- if system.locale|length > 0 %}
 - linux.system.locale
 {%- endif %}
diff --git a/linux/system/job.sls b/linux/system/job.sls
index f0373a4..5037ff7 100644
--- a/linux/system/job.sls
+++ b/linux/system/job.sls
@@ -4,10 +4,13 @@
 {%- for name, job in system.job.iteritems() %}
 
 linux_job_{{ job.command }}:
-  {%- if job.enabled %}
+  {%- if job.enabled|default(True) %}
   cron.present:
     - name: {{ job.command }}
-    - user: {{ job.user }}
+    {%- if job.get('identifier', True) %}
+    - identifier: {{ job.get('identifier', job.get('name', name)) }}
+    {%- endif %}
+    - user: {{ job.user|default("root") }}
     {%- if job.minute is defined %}
     - minute: '{{ job.minute }}'
     {%- endif %}
@@ -23,13 +26,16 @@
     {%- if job.dayweek is defined %}
     - dayweek: '{{ job.dayweek }}'
     {%- endif %}
-    {%- if job.user in system.get('user', {}).keys() %}
+    {%- if job.user|default("root") in system.get('user', {}).keys() %}
     - require:
-      - user: system_user_{{ job.user }}
+      - user: system_user_{{ job.user|default("root") }}
     {%- endif %}
   {%- else %}
   cron.absent:
     - name: {{ job.command }}
+    {%- if job.get('identifier', True) %}
+    - identifier: {{ job.get('identifier', job.get('name', name)) }}
+    {%- endif %}
   {%- endif %}
 
 {%- endfor %}
diff --git a/linux/system/package.sls b/linux/system/package.sls
index 95db674..4f42ec8 100644
--- a/linux/system/package.sls
+++ b/linux/system/package.sls
@@ -33,7 +33,7 @@
   - hold: {{ package.hold }}
     {%- endif %}
     {%- if package.verify is defined %}
-  - skip_verify: {{ true if package.verify else false }}
+  - skip_verify: {{ "False" if package.verify else "True" }}
     {%- endif %}
   {%- else %}
     {%- if package.version is not defined %}
diff --git a/linux/system/sysfs.sls b/linux/system/sysfs.sls
new file mode 100644
index 0000000..fdf1686
--- /dev/null
+++ b/linux/system/sysfs.sls
@@ -0,0 +1,42 @@
+{%- from "linux/map.jinja" import system with context %}
+
+linux_sysfs_package:
+  pkg.installed:
+    - pkgs:
+      - sysfsutils
+    - refresh: true
+
+/etc/sysfs.d:
+  file.directory:
+    - require:
+      - pkg: linux_sysfs_package
+
+{%- for name, sysfs in system.get('sysfs', {}).iteritems() %}
+
+/etc/sysfs.d/{{ name }}.conf:
+  file.managed:
+    - source: salt://linux/files/sysfs.conf
+    - template: jinja
+    - user: root
+    - group: root
+    - mode: 0644
+    - defaults:
+        name: {{ name }}
+        sysfs: {{ sysfs|yaml }}
+    - require:
+      - file: /etc/sysfs.d
+
+  {%- for key, value in sysfs.iteritems() %}
+    {%- if key not in ["mode", "owner"] %}
+      {%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %}
+      {#- Sysfs cannot be set in docker, LXC, etc. #}
+linux_sysfs_write_{{ name }}_{{ key }}:
+  module.run:
+    - name: sysfs.write
+    - key: {{ key }}
+    - value: {{ value }}
+      {%- endif %}
+    {%- endif %}
+  {%- endfor %}
+
+{%- endfor %}
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 %}
diff --git a/tests/pillar/network_extended.sls b/tests/pillar/network_extended.sls
new file mode 100644
index 0000000..19587c9
--- /dev/null
+++ b/tests/pillar/network_extended.sls
@@ -0,0 +1,34 @@
+linux:
+  system:
+    enabled: true
+    domain: ci.local
+    name: linux
+  network:
+    enabled: true
+    hostname: linux
+    fqdn: linux.ci.local
+    network_manager: false
+    interface:
+      eth0:
+        enabled: true
+        type: eth
+        address: 192.168.0.102
+        netmask: 255.255.255.0
+        gateway: 192.168.0.1
+        name_servers:
+        - 8.8.8.8
+        - 8.8.4.4
+        mtu: 1500
+        route:
+          kubernetes_internal:
+            address: 10.254.0.0
+            netmask: 255.255.0.0
+          some_other:
+            address: 10.111.0.0
+            netmask: 255.255.0.0
+            gateway: 1.1.1.1
+      vlan69:
+        enabled: true
+        type: vlan
+        use_interfaces:
+        - interface: ${linux:interface:eth0}
diff --git a/tests/pillar/storage.sls b/tests/pillar/storage.sls
index 17f3b9c..0a92f91 100644
--- a/tests/pillar/storage.sls
+++ b/tests/pillar/storage.sls
@@ -50,12 +50,12 @@
               device: /dev/vg0/lv03
               path: /mnt/lv03
               file_system: xfs
-    disk1:
-      enabled: true
-      device: /dev/loop_dev4
-      path: /tmp/dummy
-      file_system: xfs
-      options: "noatime,nobarrier,logbufs=8"
-      user: nobody
-      group: nogroup
-      mode: 755
+    disk:
+      first_drive:
+        name: /tmp/loop_dev4
+        type: gpt
+        partitions:
+          - size: 5
+            type: fat32
+          - size: 5
+            type: fat32
diff --git a/tests/pillar/system.sls b/tests/pillar/system.sls
index bdb70be..f39fdde 100644
--- a/tests/pillar/system.sls
+++ b/tests/pillar/system.sls
@@ -15,6 +15,15 @@
       default: "linux.ci.local$"
     kernel:
       isolcpu: 1,2,3,4
+    sysfs:
+      scheduler:
+        block/sda/queue/scheduler: deadline
+      power:
+        mode:
+          power/state: 0660
+        owner:
+          power/state: "root:power"
+        devices/system/cpu/cpu0/cpufreq/scaling_governor: powersave
     motd:
       - warning: |
           #!/bin/sh
@@ -67,8 +76,14 @@
         name: testgroup
         gid: 9999
         system: true
+        addusers:
+          - salt_user1
+          - salt_user2
       db-ops:
         enabled: true
+        delusers:
+          - salt_user1
+          - dontexistatall
       salt-ops:
         enabled: true
         name: salt-ops
