meta data for this page
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| datarecovery:bad_sectors [2020/04/23 08:27] – niziak | datarecovery:bad_sectors [2020/12/16 13:19] (current) – niziak | ||
|---|---|---|---|
| Line 21: | Line 21: | ||
| ====== Repair sector ====== | ====== Repair sector ====== | ||
| + | <code bash> | ||
| + | smartctl -a /dev/sdb | ||
| + | |||
| + | SMART Self-test log structure revision number 1 | ||
| + | Num Test_Description | ||
| + | # 1 Short offline | ||
| + | # 2 Short offline | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | #Try to read bad sector: | ||
| + | hdparm --read-sector 974041815 /dev/sdb | ||
| + | |||
| + | /dev/sdb: | ||
| + | reading sector 974041815: SG_IO: bad/missing sense data, sb[]: 70 00 03 00 00 00 00 0a 40 51 e0 01 11 04 00 00 a0 d7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
| + | succeeded | ||
| + | |||
| + | hdparm --yes-i-know-what-i-am-doing --repair-sector 974041815 | ||
| + | |||
| + | # Test rest of disk: | ||
| + | smartctl -t select, | ||
| + | |||
| + | smartctl -l selftest /dev/sdb | ||
| + | === START OF READ SMART DATA SECTION === | ||
| + | SMART Self-test log structure revision number 1 | ||
| + | Num Test_Description | ||
| + | # 1 Selective offline | ||
| + | # 2 Short offline | ||
| + | |||
| + | hdparm --yes-i-know-what-i-am-doing --repair-sector 974041843 | ||
| + | |||
| + | # Test rest of disk: | ||
| + | smartctl -t select, | ||
| + | |||
| + | </ | ||
| + | |||
| + | Ready script to automate above: | ||
| + | [[https:// | ||
| + | Fixed version: | ||
| + | <code bash> | ||
| + | #!/bin/bash -u | ||
| + | baddrive=/ | ||
| + | badsect=974041815 | ||
| + | while true; do | ||
| + | echo Testing from LBA $badsect | ||
| + | smartctl -t select, | ||
| + | |||
| + | echo " | ||
| + | while [ " | ||
| + | echo -n . | ||
| + | sleep 5 | ||
| + | done | ||
| + | echo | ||
| + | |||
| + | echo " | ||
| + | while [ " | ||
| + | echo -n . | ||
| + | sleep 5 | ||
| + | done | ||
| + | echo | ||
| + | |||
| + | badsect=$(smartctl -l selftest ${baddrive} | awk '/# 1 Selective offline | ||
| + | [ $badsect = " | ||
| + | |||
| + | echo Attempting to fix sector $badsect on $baddrive | ||
| + | hdparm --repair-sector ${badsect} --yes-i-know-what-i-am-doing $baddrive | ||
| + | echo Continuning test | ||
| + | done | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | For ZFS with RAIDZ filesytem, SCRUB is needed to replace bad data: | ||
| + | <code bash> | ||
| + | zpool scrub poolname | ||
| + | zpool status -v poolname | ||
| + | </ | ||
| + | |||
| [[https:// | [[https:// | ||