Is badblocks in read-write mode as effective with a solid state hybrid drive (SSHD) as with a hard disk drive (HDD)?

More specifically:

  • if all blocks of the device are written in that mode, will it allow the controller to identify any bad blocks?


Ubuntu Manpage: badblocks - search a device for bad blocks

I assume that a non-destructive read-only test of blocks of an SSHD:

  • would read some blocks from the SSD level alone
  • and so, might produce a misleading overview of the state of things at the HDD level.

I expect a read-write test to be more effective. This assumes that all writes will eventually flush to HDD.


With option -n for non-destructive read-write mode:

ubuntu@ubuntu:/dev$ sudo badblocks -n -s -v /dev/sda
Checking for bad blocks in non-destructive read-write mode
From block 0 to 732574583
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern:   0.23% done, 1:47 elapsed
                               0.92% done, 7:09 elapsed
                               1.00% done, 7:46 elapsed
                              25.13% done, 3:49:32 elapsed
                              25.13% done, 3:49:33 elapsed
                              25.13% done, 3:49:34 elapsed
                              25.13% done, 3:49:35 elapsed


In Ask Different:


Apologies for the thread necromancy, but I stumbled across this question while searching for a similar answer.

According to a review from AnandTech, SSHD drives like Seagate's Momentus and FireCuda do not use the SSD cache for write operations; just reads. The SSD read cache should only populate for sectors that have been requested from the platters multiple times, and thus should not be in use during a badblocks pass. Therefore, a destructive read/write badblocks test should operate in exactly the same fashion as one would expect from a plain mechanical drive.

My only concern would be the unlikely scenario in which a sector does fail, but is cached in the NAND layer. Read requests for that sector would not hit the spindle, and would be fetched from the SSD cache. Again, though, I do not believe this to be feasible during a badblocks run.

I would still pair it with a S.M.A.R.T. extended or conveyance test and check for reallocated sectors, just to be on the safe side. If you were not already aware, please note that on Seagate drives, the seek error rate, raw read error rate, and hardware ECC recovered attributes only indicate problems if the uppermost 16 bits are used; fluctuations in the lower 32 bits are normal, and indicate usage values for the drive (e.g., number of seeks and reads performed).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.