I have gone through the manual and also quite a bit of googling. I have the following situation:
1. I have 3 partitions on my hard disk -
/dev/sda1 - "/" partition
/dev/sda2 - Consisting of 4 logical partitions:
        logvol /home --fstype ext3 --name=LogVol03 --vgname=VolGroup00 --size=15104
        logvol /var --fstype ext3 --name=LogVol01 --vgname=VolGroup00 --size=19968
        logvol /opt --fstype ext3 --name=LogVol02 --vgname=VolGroup00 --size=24960 
        logvol /usr --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=19968

/dev/sda3 - swap

2. I think that there are some bad blocks on Logical volumes.
3. How do I use badblocks to check for bad blocks - shall I use badblocks on the partition or on individual logical volumes?
i.e. badblocks /dev/sda2
or badblocks /dev/VolGroup00/LogVol00     ?
This is pretty important to me. If the disk does indeed have badblocks, I will replace the disk. But I still have to retrieve the data.

4. What is the output of badblocks? i.e. If the program finds badblocks, what does it do? Will it print them to screen or will it mark them? Are the badblocks automatically marked some place so that those blocks are not used? Do I have to do something special to mark the badblocks on my hard disk? This is not very clear in the man page.

5. I already have data on the Logical volumes. How do  I use the volumes  so that bad-blocks are  transparent to me? I do not know if 'Check for bad blocks' was selected when
formatting the file system.

6. I tried the LVM stuff mentioned in the Howto: http://smartmontools.sourceforge.net/BadBlockHowTo.txt
but the smartctl self test feature (or similar) was turned off. I couldn't turn it on. Can somebody help me out? I am slightly nervous fiddling with stuff as this is totally new to me.

K. C. Ramakrishna