Running a fsck (file system check) on an EVMS volume.

  • 3930300
  • 27-Apr-2007
  • 12-Dec-2012

Environment


Novell Open Enterprise Server (Linux based)
Novell SUSE Linux Enterprise Server 9

Situation

From the /var/log/messages you see errors indicating that a file system check (fsck) needs to be run.
Possible examples:
Apr 25 12:49:59 server1 kernel: ReiserFS: dm-30: warning: vs-5150: search_by_key: invalid format found in block 32788. Fsck?
Apr 25 12:49:59 server11 kernel: ReiserFS: dm-30: warning: vs-13070: reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [2 5442 0x0 SD]

Other observations that are normal when using EVMS:
  Listing of the partitions with "fdisk -l" gives an invalid partition table on the disk that holds the evms container/volume.
  Running reiserfsck on the /dev/diskdevice gives a invalid super block message.

Resolution

The error message tells you that the block device with the problem is dm-30. Thus /dev/dm-30.
For reiserfs, the vs‑{value} is a marker of the exact location in the reiserfs source code where the warning is generated. vs‑ 5150 is in ..linux/fs/reiserfs/stree.c's search_by_key() function.

Use "dmsetup ls" to match the device mapper object with the evms container and volume. In our example the dm-30 should match the minor number of 30.

# /sbin/dmsetup ls
...
container|volume (253, 30)
...

Now you know the evms container and volume name. /dev/evms/container/volume.
To run fsck the volume needs to be either read only for a check, or unmounted to fix problems.

The problems can also occur on a non-evms device, which would show up with a device name instead of a device mapper link.

Use the "mount" command to find out the mountpoint then unmount it.
# mount
# umount /mountpoint
If it can not umount due to the device being busy you may have to forcefully remove what is making it busy. Run the fuser command to list the processes that are using the filesystem and kill each of those processes.
#fuser -vm /mountpoint
# umount /mountpoint
Now you can run the fsck on the volume, since it is a reiser volume I use reiserfsck
# reiserfsck --check /dev/evms/container/volume
Answer "Yes" to the question "Do you want to run this program"
Follow the instructions from the check to determine what you need to do next to fix the volume.