>>>
>>>Пробывал, неоднократно. данной проблемы не описывается.
>>
>>нахлая лошь, например:
>>
>
>Сейчас почитаю, но большинство ссылок я уже видел ;-) Там проблемы немного
>другого плана.
>У меня сервак стал виснуть каждую ночь, а когда его ребутишь то
>запускается fsck ессно и на ней он опять виснет
>
>
>>
>>за что? за отключение fsck?! я вас умоляю - все что вы
>>сделаете, исключительно на
>>вашей совести, я вам отключать fsck НЕ СОВЕТОВАЛ!
>
>я хочу сделать это временно. пока не решу проблему с заменой винта
>
>
>я думаю в rc.conf background_fsck="NO" мне поможет??? 1) никогда не использовать fsck в background (вы себе враг?)
2) fsck ну никак не может быть отключен, иначе init остановит загрузку
в single-user mode:
- "/" root-fs останется смонтированной на read-only
- все остальные FS из /etc/fstab останутся несмонтированными и непрочеканными
3) в FreeBSD проверка на bad'ы была выкинута давно из newfs по причине новой
технологии современных ATA-HDD - внутренняя технология ремапинга
4) в FreeBSD есть утилита badsect - но работает она с относительными номерами
секторов, в то время как ATA-драйвер выдает АБСОЛЮТНЫЕ номера секторов (LBA):
- относительные - разбили диск на слайсы, затем каждый слайс на партиции, вот
внутри партиции, например ad1s1a - в ней относительная адресация блоков
- абсолютные - ну тут все понятно
итог: высчитать относительный сектор по абсолютному - проще убиться (dumpfs и
считать-считать-считать... - в итоге плюнуть)
PS. Однажды мне удалось получить относительный номер, но badsect нифига не сделал,
только сообщил мол что создаст файл для fsck, не помню то ли не создал, то ли fsck_ffs
его не подцепил, короче пустая утилита.
5) есть другая утилита в FreeBSD - clri, обнуление инода занимаемого сбойным файлом
6) Итого: программного инструмента в FreeBSD для оформления bad blocks НА УРОВНЕ FS
НЕТ
Но что можно попробовать сделать:
- современные PATA/SATA диски имеют инструмент который САМ должен РЕМАПИТЬ bad blocks,
НО это происходит только при операциях WRITE (очень весело)
а теперь два варианта которые могут помочь:
- известная утилита mhdd32 - последняя версия которую можно найти 4.6 (DOS/Windows),
пользоваться нужно аккуратно, используя серое вещество, НЕ ВСЕГДА может помочь
- вариант средствами FreeBSD, использование dd для создания образа + mdconfig для
>= 5.x и vnconfig для 4.x:
# dd if=/dev/adX of=/path/file conv=noerror,sync bs=512 - это ОБРАЗ сырого диска в файл
на другой диск
# dd if=/dev/adXsY of=/path/file conv=noerror,sync bs=512 - это образ СЛАЙСА Y в файл
# dd if=/dev/adXsY[a,d-h] of=/path/file conv=noerror,sync bs=512 - это образ
партиций a,d-h в файл, b - swap, c - описание всего диска - нафик не нужны, ну партицию
c можно в определенных ситуациях копировать, но это будет копирование в итоге всех
партиций
conv=noerror,sync - копировать не взирая на bad'ы и те ошибки котроллера после которых
он будет работать дальше, sync - дописывать нулями нескопированные части
bs=512 - in/out размер блока 512 байт, будет долго, зато надежно, хоть и утвержается
что чтение-запись производится треками, но если сделать большой bs=64k или больше,
больше информации sync забъет нулями, проверено.
Отсюда bs=512 самый надежный, но можно выставить равный тому что у FS, например:
bs=4k или bs=8k или bs=16k - это будет существенно быстрей
После того как скопировали:
4.x -> man vnconfig
>= 5.x -> man mdconfig
Все.
Теперь о том что вы писали, что значит dump/restore КОПИРУЕТ bad'ы?!
Bad сектора на ДИСКЕ, dump и restore копируют ФАЙЛОВУЮ систему. и ЕСЛИ ВЫ ЕЁ
не ПРОЧИСТИЛИ с помощью FSCK - то dump/restore вам НЕ ПОМОГУТ, потому как FS
not-clean. Сами BAD'ы не копируются :)
Отсюда и задача:
- либо заремапить BAD на физическом уровне - mhdd32 или аналог, либо на уровне FS
используя badsect - нереально
- либо используя dd скопировать сырую информацию НЕВЗИРАЯ на ошибки в файл на другой
диск и потом используя vnconfig или mdconfig - вернуть информацию
После чего тот диск на котором были BAD'ы - переоформить ОДНИМ слайсом и одной
партицией и ПОГОНЯТЬ:
dd if=/dev/random of=/dev/adX bs=512 (или 4k/8k/16k) - это dd на WRITE, после
нескольких часов или суток, возможно BAD'ы будут заремаплены (выше я писал что
внутренний механизм remap работает только при записи/write)
Вот все верхнее я проделывал не один раз.