If the zero fill succeeded, and the short test passed, can I still use the whole drive?
Seatools said it has some bad sectors, so obviously you can't use the whole drive. By the way, most drives happily write the data without checking that it was really written correctly, which can lead to silent data corruption. Also some of them manage to relocate (remap) the bad sectors when you write to them again, but in your case it seems it didn't work.
if not, since I'm using LVM on top of RAID, is there a way to tell either of these to just skip the bad area?
If you're willing to take the risk of losing your data, you can try moving the affected physical extents (PEs) with pvmove, but figuring out which PEs correspond to the bad sectors is going to take some grunt work. After moving them, you could allocate a logical volume (LV) on the affected PEs to make sure they don't get used again.
If not the above, can I just create partitions before and after the part of the drive with the bad LBAs?
Yes, if you're willing to take the risk of losing your data. The disk isn't reliable.
You can also pass a list of bad blocks when you format the disk (partition). For example mkfs.ext4 has these parameters:
-c
Check the device for bad blocks before creating the file system. If this option is specified twice, then a slower read write test is used instead of a fast read-only test.
-l filename
Read the bad blocks list from filename. Note that the block numbers in the bad block list must be generated using the same block size as used by mke2fs. As a result, the -c option to mke2fs is a much simpler and less error-prone method of checking a disk for bad blocks before formatting it, as mke2fs will automatically pass the correct parameters to the badblocks program.
Personal anecdotes
I had a Seagate Barracuda 7200 RPM 1 TB drive with a couple of bad sectors (Linux reported I/O errors). I run badblocks -w
on it which means it scans for bad blocks by writing some patterns on every block of the device, reading every block and comparing the contents. Because the bad sectors were probably relocated when the write was done, it didn't report any bad blocks. I kept using the disk for unimportant data and I had no obvious issues with it (some files even had checksums, so I can be sure they were intact).
I also had another Seagate Barracuda 5900 RPM 1 TB drive with a couple of bad sectors reported by SMART, but no obvious issues. Since I didn't have important data on it and I also couldn't run badblocks -w
on it, I kept just using it for about a year until I got a replacement. Again I had no obvious issues with it (some files even had checksums, so I was sure they were intact).