KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /proc/22697/root/usr/lib/python2.4/site-packages/sos/plugins/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/22697/root/usr/lib/python2.4/site-packages/sos/plugins/devicemapper.py
### This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

import sos.plugintools
import os
from sos.helpers import sosGetCommandOutput

class devicemapper(sos.plugintools.PluginBase):
    """device-mapper related information (dm, lvm, multipath)
    """

    optionList = [("lvmdump", 'collect raw metadata from PVs', 'slow', False)]
    dmraidOptions = ['V','b','r','s','tay','rD']

    def do_lvmdump(self):
        """Collects raw metadata directly from the PVs using dd
        """
        sosGetCommandOutput("lvmdump -d %s" % os.path.join(self.cInfo['dstroot'],"lvmdump"))

    def setup(self):
        # use locking_type 0 (no locks) when running LVM2 commands, from lvm.conf:
        # Turn locking off by setting to 0 (dangerous: risks metadata corruption
        # if LVM2 commands get run concurrently).
        # None of the commands issued by sos ever modify metadata and this avoids
        # the possibility of hanging lvm commands when another process or node
        # holds a conflicting lock.
        lvm_opts = '--config="global{locking_type=0}"'

        self.collectExtOutput("/sbin/dmsetup info -c")
        self.collectExtOutput("/sbin/dmsetup table")
        self.collectExtOutput("/sbin/dmsetup status")

        self.collectExtOutput(
            "/usr/sbin/vgdisplay -vv %s" % lvm_opts,
            symlink = "vgdisplay"
        )
        self.collectExtOutput("/usr/sbin/vgscan -vvv %s" % lvm_opts)
        self.collectExtOutput("/usr/sbin/pvscan -v %s" % lvm_opts)
        self.collectExtOutput("/usr/sbin/lvs -a -o +devices %s" % lvm_opts)
        self.collectExtOutput("/usr/sbin/pvs -a -v %s" % lvm_opts)
        self.collectExtOutput("/usr/sbin/vgs -v %s" % lvm_opts)
        self.collectExtOutput("/sbin/mdadm -D /dev/md*")

        self.addCopySpec("/etc/lvm")

        self.addCopySpec("/etc/multipath.conf")
        self.addCopySpec("/var/lib/multipath/bindings")
        self.collectExtOutput("/sbin/multipath -v4 -ll")

        self.collectExtOutput("/usr/bin/systool -v -c -b scsi")

        self.collectExtOutput("/bin/ls -laR /dev")
        self.collectExtOutput("/bin/ls -laR /sys/block")

        if self.isOptionEnabled('lvmdump'):
            self.do_lvmdump()

        for disk in os.listdir("/sys/block"):
            if disk in [ ".",  ".." ] or disk.startswith("ram"):
                continue
            self.collectExtOutput("/usr/bin/udevinfo -ap /sys/block/%s" % (disk))
        for opt in self.dmraidOptions:
            self.collectExtOutput("/sbin/dmraid -%s" % (opt,))

        return

Anon7 - 2021