Personally I run a smartctl conveyance test if available or a long test . I then run badblocks . Copypasta from the ArchWiki readwrite Test warningdestructive This test is primarily for testing new drives and is a readwrite test . As the pattern is written to every accessible block the device effectively gets wiped . Default is an extensive test with four passes using four different patterns 0 xaa 10101010 , 0 x 55 01010101 , 0 xff 11111111 and 0 x 00 00000000 . For some devices this will take a couple of days to complete . # badblocks wsv devdevice Checking for bad blocks in readwrite mode From block 0 to rrn Testing with pattern 0 xaa done Reading and comparing done Testing with pattern 0 x 55 done Reading and comparing done Testing with pattern 0 xff 22 . 93 % done , 40955 elapsed . 000 errors Testing with pattern 0 x 00 done Reading and comparing done Pass completed , 0 bad blocks found . 000 errors Options w do a destructive write test s show progressbar v be verbose and output bad sectors detected to stdoutOnce complete I run another long smart test . Don ' t run badblocks on an ssd though . EDIT uHittingSmoke has made some very against the use of badblocks . Very much worth a read .