|
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 : |
### 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