Search code examples
pythonlinuxsuperblock

Find the superblock on disk


i have to write python script in my work. My script must print all devices which meet some conditions. One of this conditions is superblock. Device must have superblock.

other conditions:

  1. any partitions is not mounted - DONE
  2. any partition is not in raid - DONE
  3. uuid is not in fstab - DONE
  4. arr uuid is in mdadm.conf - DONE
  5. device has superblock - ?????

is there anyone who has some idea how to do it? I have to confess that i dont have any. It's not necessary to manage it by python. Is there ANY way how to check it ? :)

Thank you very much.


Solution

  • You can grep the output of dumpe2fs device_name for existance of "superblock at".

    Here's an example on my Centos 5 linux system:

    >>> import shlex, subprocess
    >>> filesystems = ['/dev/mapper/VolGroup00-LogVol00', '/dev/vda1', 'tmpfs']
    >>> for fs in filesystems:
    ...     command = '/sbin/dumpe2fs ' + fs
    ...     p = subprocess.Popen(shlex.split(command),stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    ...     output = p.communicate()[0]
    ...     if 'superblock at' in output:
    ...             print "{fs} has superblock".format(fs=fs)
    ...     else:
    ...             print "No superblock found for {fs}".format(fs=fs)
    ...
    /dev/mapper/VolGroup00-LogVol00 has superblock
    /dev/vda1 has superblock
    No superblock found for tmpfs
    

    More information on dumpe2fs:

    http://linux.die.net/man/8/dumpe2fs