diff --git a/tcp_tests/managers/envmanager_devops.py b/tcp_tests/managers/envmanager_devops.py
index 4cd6c93..f776221 100644
--- a/tcp_tests/managers/envmanager_devops.py
+++ b/tcp_tests/managers/envmanager_devops.py
@@ -94,39 +94,6 @@
             )
         self.__devops_config = conf
 
-    def lvm_storages(self):
-        """Returns a dict object of lvm storages in current environment
-
-        returned data example:
-            {
-                "master": {
-                    "id": "virtio-bff72959d1a54cb19d08"
-                },
-                "slave-0": {
-                    "id": "virtio-5e33affc8fe44503839f"
-                },
-                "slave-1": {
-                    "id": "virtio-10b6a262f1ec4341a1ba"
-                },
-            }
-
-        :rtype: dict
-        """
-        result = {}
-        for node in self.__env.get_nodes(role__in=ext.UNDERLAY_NODE_ROLES):
-            lvm = filter(lambda x: x.volume.name == 'lvm', node.disk_devices)
-            if len(lvm) == 0:
-                continue
-            lvm = lvm[0]
-            result[node.name] = {}
-            result_node = result[node.name]
-            result_node['id'] = "{bus}-{serial}".format(
-                bus=lvm.bus,
-                serial=lvm.volume.serial[:20])
-            LOG.info("Got disk-id '{}' for node '{}'".format(
-                result_node['id'], node.name))
-        return result
-
     @property
     def _d_env_name(self):
         """Get environment name from fuel devops config
diff --git a/tcp_tests/managers/envmanager_empty.py b/tcp_tests/managers/envmanager_empty.py
index c4bb57e..39fd126 100644
--- a/tcp_tests/managers/envmanager_empty.py
+++ b/tcp_tests/managers/envmanager_empty.py
@@ -30,26 +30,6 @@
         """
         self.__config = config
 
-    def lvm_storages(self):
-        """Returns data of lvm_storages on nodes in environment
-
-        It's expected that data of self.__config.lvm_storages will be
-        like this:
-            {
-                "node1": {
-                    "device": "vdb"
-                },
-                "node2": {
-                    "device": "vdb"
-                },
-                "node3": {
-                    "device": "vdb"
-                },
-            }
-        :rtype: dict
-        """
-        return self.__config.underlay.lvm
-
     def get_ssh_data(self, roles=None):
         raise Exception("EnvironmentManagerEmpty doesn't have SSH details. "
                         "Please provide SSH details in config.underlay.ssh")
diff --git a/tcp_tests/managers/underlay_ssh_manager.py b/tcp_tests/managers/underlay_ssh_manager.py
index ee23654..5e7995c 100644
--- a/tcp_tests/managers/underlay_ssh_manager.py
+++ b/tcp_tests/managers/underlay_ssh_manager.py
@@ -75,7 +75,6 @@
     """
     __config = None
     config_ssh = None
-    config_lvm = None
 
     def __init__(self, config):
         """Read config.underlay.ssh object
@@ -86,9 +85,6 @@
         if self.config_ssh is None:
             self.config_ssh = []
 
-        if self.config_lvm is None:
-            self.config_lvm = {}
-
         self.add_config_ssh(self.__config.underlay.ssh)
 
     def add_config_ssh(self, config_ssh):
@@ -191,42 +187,6 @@
                 names.append(ssh['node_name'])
         return names
 
-    def enable_lvm(self, lvmconfig):
-        """Method for enabling lvm oh hosts in environment
-
-        :param lvmconfig: dict with ids or device' names of lvm storage
-        :raises: devops.error.DevopsCalledProcessError,
-        devops.error.TimeoutError, AssertionError, ValueError
-        """
-        def get_actions(lvm_id):
-            return [
-                "systemctl enable lvm2-lvmetad.service",
-                "systemctl enable lvm2-lvmetad.socket",
-                "systemctl start lvm2-lvmetad.service",
-                "systemctl start lvm2-lvmetad.socket",
-                "pvcreate {} && pvs".format(lvm_id),
-                "vgcreate default {} && vgs".format(lvm_id),
-                "lvcreate -L 1G -T default/pool && lvs",
-            ]
-        lvmpackages = ["lvm2", "liblvm2-dev", "thin-provisioning-tools"]
-        for node_name in self.node_names():
-            lvm = lvmconfig.get(node_name, None)
-            if not lvm:
-                continue
-            if 'id' in lvm:
-                lvmdevice = '/dev/disk/by-id/{}'.format(lvm['id'])
-            elif 'device' in lvm:
-                lvmdevice = '/dev/{}'.format(lvm['device'])
-            else:
-                raise ValueError("Unknown LVM device type")
-            if lvmdevice:
-                self.apt_install_package(
-                    packages=lvmpackages, node_name=node_name, verbose=True)
-                for command in get_actions(lvmdevice):
-                    self.sudo_check_call(command, node_name=node_name,
-                                         verbose=True)
-        self.config_lvm = dict(lvmconfig)
-
     def host_by_node_name(self, node_name, address_pool=None):
         ssh_data = self.__ssh_data(node_name=node_name,
                                    address_pool=address_pool)
diff --git a/tcp_tests/settings_oslo.py b/tcp_tests/settings_oslo.py
index 0361835..b3a3013 100644
--- a/tcp_tests/settings_oslo.py
+++ b/tcp_tests/settings_oslo.py
@@ -118,8 +118,6 @@
     ct.Cfg('upstream_dns_servers', ct.JSONList(),
            help="IP addresses of upstream DNS servers (dnsmasq)",
            default=[]),
-    ct.Cfg('lvm', ct.JSONDict(),
-           help="LVM settings for Underlay", default={}),
     ct.Cfg('address_pools', ct.JSONDict(),
            help="""Address pools (dynamically) allocated for the environment.
                    May be used to determine CIDR for a specific network from
