Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Файловая система —> badsect

badsect - программа для перемещения bad-блоков в файлы.

Автор: lissyara.


    Badsect - программа, создаёт файл с дефектным сектором. (вернее сказать, она помещает дефектные секторы в отдельные файлы - каждый в свой.) Нужно это в том случае, если посыпался диск, заменить его прямо сейчас нельзя, а работать надо. Обычная, в общем-то ситуация...
   Итак. У программы всего два параметра - директория, где должны размещаться файлы с бэд-блоками и номер битого сектора.
/usr/home/lissyara/>su
/usr/home/lissyara/>df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    248M    115M    113M    51%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad0s1e     14G    5.2G    7.3G    42%    /usr
/dev/ad0s1f    3.5G    593M    2.7G    18%    /var
/dev/ad8s1      73G     63G    5.0G    93%    /usr/local/smb
/dev/ad0s1d    989M    1.4M    909M     0%    /tmp
/usr/home/lissyara/>mkdir /tmp/bad-sect
/usr/home/lissyara/>badsect /tmp/bad-sect 104100
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104101
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104102
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104103
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104104
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>badsect /tmp/bad-sect 104105
Don't forget to run ``fsck /dev/ad0s1d''
/usr/home/lissyara/>ls -lah /tmp/bad-sect
ls: 104100: Bad file descriptor
ls: 104101: Bad file descriptor
ls: 104102: Bad file descriptor
ls: 104103: Bad file descriptor
ls: 104104: Bad file descriptor
ls: 104105: Bad file descriptor
ls: 104448: Bad file descriptor
ls: 104449: Bad file descriptor
total 4
drwxr-xr-x   2 root  wheel   512B  1 янв 02:22 .
drwxrwxrwt  12 root  wheel   1,0K  1 янв 01:58 ..
/usr/home/lissyara/>umount -f /tmp
/usr/home/lissyara/>fsck /dev/ad0s1d
** /dev/ad0s1d
** Last Mounted on /tmp
** Phase 1 - Check Blocks and Sizes

HOLD BAD BLOCK? [yn] y

INCORRECT BLOCK COUNT I=8 (0 should be 4)
CORRECT? [yn] y

26112 DUP I=9
UNEXPECTED SOFT UPDATE INCONSISTENCY


HOLD BAD BLOCK? [yn] y

26112 DUP I=16
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=16 (0 should be 4)
CORRECT? [yn] y


HOLD BAD BLOCK? [yn] y

INCORRECT BLOCK COUNT I=17 (0 should be 4)
CORRECT? [yn] y


HOLD BAD BLOCK? [yn] y

26025 DUP I=18
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=18 (0 should be 4)
CORRECT? [yn] y


HOLD BAD BLOCK? [yn] y

26025 DUP I=19
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=19 (0 should be 4)
CORRECT? [yn] y


HOLD BAD BLOCK? [yn] y

26025 DUP I=20
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=20 (0 should be 4)
CORRECT? [yn] y


HOLD BAD BLOCK? [yn] y

INCORRECT BLOCK COUNT I=21 (0 should be 4)
CORRECT? [yn] y


HOLD BAD BLOCK? [yn] y

26026 DUP I=22
UNEXPECTED SOFT UPDATE INCONSISTENCY

INCORRECT BLOCK COUNT I=22 (0 should be 4)
CORRECT? [yn] y

INTERNAL ERROR: dups with -p
UNEXPECTED SOFT UPDATE INCONSISTENCY
** Phase 1b - Rescan For More DUPS
26112 DUP I=8
UNEXPECTED SOFT UPDATE INCONSISTENCY

26025 DUP I=17
UNEXPECTED SOFT UPDATE INCONSISTENCY

26026 DUP I=21
UNEXPECTED SOFT UPDATE INCONSISTENCY

** Phase 2 - Check Pathnames
DUP/BAD  I=9  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 01:53 2006
FILE=/lost+found/#000009

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=8  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:21 2006
FILE=/bad-sect/104448

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=16  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:21 2006
FILE=/bad-sect/104449

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=17  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104100

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=18  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104101

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=19  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104102

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=20  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104103

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=21  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104104

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

DUP/BAD  I=22  OWNER=root MODE=100600
SIZE=2048 MTIME=Jan  1 02:22 2006
FILE=/bad-sect/104105

UNEXPECTED SOFT UPDATE INCONSISTENCY

REMOVE? [yn] n

** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? [yn] y

SUMMARY INFORMATION BAD
SALVAGE? [yn] y

ALLOCATED FRAGS 26025-26026 MARKED FREE
BLK(S) MISSING IN BIT MAPS
SALVAGE? [yn] y

253 files, 714 used, 505773 free (77 frags, 63212 blocks, 0.0% fragmentation)

***** FILE SYSTEM MARKED DIRTY *****

***** FILE SYSTEM WAS MODIFIED *****

***** PLEASE RERUN FSCK *****
/usr/home/lissyara/>mount /tmp
/usr/home/lissyara/>ls -lah /tmp/bad-sect
total 20
drwxr-xr-x   2 root  wheel   512B  1 янв 02:22 .
drwxrwxrwt  12 root  wheel   1,0K  1 янв 01:58 ..
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104100
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104101
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104102
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104103
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104104
-rw-------   1 root  wheel   2,0K  1 янв 02:22 104105
-rw-------   1 root  wheel   2,0K  1 янв 02:21 104448
-rw-------   1 root  wheel   2,0K  1 янв 02:21 104449
/usr/home/lissyara/>

Вот так.

P.S. Кстати - не советую ставить опыты на рабочей машине, либо очень аккуратно выбирайте номера блоков для опытов - блок 104449, он был в /var - и в нём я увидел кусок одной из моих БД :( Было не очень обидно - я сделал дамп перед экспериментами, но всё же...



размещено: 2005-12-31,
последнее обновление: 2006-01-01,
автор: lissyara


Толик, 2007-04-13 в 15:55:04

Хорошая статья, но есть вопрос.
Откуда были взяты первоначальные значения битых секторов? Подозреваю, что из того же fsck.
Я попробовал произвести те же операции и система сказала, что мои значения блоков не входят в диапазон файловой системы.
Соответственно не получается от них избавиться.

lissyara, 2007-04-13 в 18:52:57

значит ты находился не в том разделе файловой системы.

ОЛОЛО, 2010-12-16 в 5:17:59

Если не врубать SOFT UPDATE шанс появления бед блоков равен нулю!!!!!!!!!!!!!!

Alex Keda, 2010-12-16 в 8:55:55

та вы батенько, наркоман...
какая связь SU c аппаратными ошибками диска?

Smelter, 2015-11-25 в 12:51:24

Та же фигня, где взять номера битых секторов? К mhdd не посылать, а то я тоже посылать начну :)



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0501 секунд
Из них PHP: 37%; SQL: 63%; Число SQL-запросов: 77 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 27853