The answer to this should be simple, I initiated the test with
badblocks -nsv /dev/sdb
, first, interrupt bad blocks with ctrl+c, the output should be
Checking for bad blocks in non-destructive read-write mode From block 0 to 1953514583 Checking for bad blocks (non-destructive read-write test) Testing with random pattern: 0.92% done, 49:38 elapsed. (0/0/0 errors) 21.32% done, 18:49:24 elapsed. (0/0/0 errors) Interrupted at block 416437376 Interrupt caught, cleaning up
Okay, so we know what blocks it was supposed to check (1 through 1953514583), and where it was interrupted (416437376)
So i will ask it to resume testing from where it finished (-1), up to the end
badblocks -nsv /dev/sdb 1953514583 416437375 n = Non destructive s = Show progress v = tell us about what you find !
The new run should tell you the percentage correctly, but the time counter will be reset to zero, as it is only counting how long this run has been running for
One thing to note is that bad blocks can be used to instruct the filesystem to avoid the bad blocks, but it also allows the disk’s firmware to substitute bad blocks with spare blocks, so that the disk works again with no intervention from your end !
So for my 2TB hard drive…
416437375 = 21% (13 hours) 619014719 = 31.6% (+23:22) 627995199 = 32.15% (+1:04) 667782398 = 34.18% (+4:46) 715469885 = 36.62% (+5:44) 827834875 = 42.38%
While running the tests, you might want to keep an eye on the hard drive temperature with a command like
hddtemp /dev/sdb
To create a log file of the bad blocks, every run should have it’s own file !
badblocks -nsv -o /root/badblocks3.txt /dev/sdb 1953514583 627995198
The concatenation of those files you are creating is very useful in creating a file system if you ever decide to format the drive later !, but the recommended way is using badblocks with the other disk tools directly
while the test is running, you will see 3 numbers that correspond to readerror/writeerror/corruptionerror