Tryag File Manager
Home
-
Turbo Force
Current Path :
/
usr
/
lib
/
python2.4
/
site-packages
/
sos
/
plugins
/
Upload File :
New :
File
Dir
//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