Ситуация следующая:Есть FreeBSD 5.2.1 на HDD WD 80 GB SATA. На этом винте bad block.
Хочу перенести на новый винт. пытался перености и при помощи dump/restore и при помощи pax
результат один - система виснет с таким сообщениемad4 TIMEOUT - READ_DMA retrying (2 retries left) LBA = 125704384
пробывал перености и в обычном режиме и в single-user. результат один и тот же.
внимание вопрос. Чем вычислить где именно bad block и чем их прикрыть чтобы при переносе системы эти блоки обходились стороной. или может ключи какие есть для dump/restore или pax чтобы он bad block не трогал.
и еще при попытки запустить fsck система виснет с такой же ошибкой как выше указано.
еще вопросы: как отключить проверку fsck_ufs при перезагрузке системы и какие скрепты в /etc/periodic/daily запускают проверку диска?
>Ситуация следующая:
>
>Есть FreeBSD 5.2.1 на HDD WD 80 GB SATA. На этом винте
>bad block.
>Хочу перенести на новый винт. пытался перености и при помощи dump/restore и
>при помощи pax
>результат один - система виснет с таким сообщением
>
>ad4 TIMEOUT - READ_DMA retrying (2 retries left) LBA = 125704384
>
>пробывал перености и в обычном режиме и в single-user. результат один и
>тот же.
>
>внимание вопрос. Чем вычислить где именно bad block и чем их прикрыть
>чтобы при переносе системы эти блоки обходились стороной. или может ключи
>какие есть для dump/restore или pax чтобы он bad block не
>трогал.поиск по форуму здесь и на http://forum.sysadmins.ru/2/
>и еще при попытки запустить fsck система виснет с такой же ошибкой
>как выше указано.
>еще вопросы: как отключить проверку fsck_ufs при перезагрузке системы и какие скрепты
>в /etc/periodic/daily запускают проверку диска?вот это номер, но для ГЕРОЕВ, наводка:
# grep fsck /etc/rc.d/*
:-Q
>
>поиск по форуму здесь и на http://forum.sysadmins.ru/2/
>Пробывал, неоднократно. данной проблемы не описывается.
>
>вот это номер, но для ГЕРОЕВ, наводка:
># grep fsck /etc/rc.d/*
>:-QСпасибо!!!
>>
>>поиск по форуму здесь и на http://forum.sysadmins.ru/2/
>>
>
>Пробывал, неоднократно. данной проблемы не описывается.нахлая лошь, например:
http://www.opennet.me/search.shtml?words=freebsd+hdd+bad&con...
http://www.opennet.me/search.shtml?words=freebsd+badsect&con...
http://www.opennet.me/openforum/vsluhforumID1/66138.html
http://www.opennet.me/openforum/vsluhforumID1/63328.html
http://www.opennet.me/openforum/vsluhforumID1/57553.html
http://www.opennet.me/openforum/vsluhforumID1/68514.html
http://www.opennet.me/openforum/vsluhforumID1/63571.html
http://www.opennet.me/openforum/vsluhforumID1/54645.htmlостальные запросы придумаете сами
http://forum.sysadmins.ru/0/83180/?highlight=
http://forum.sysadmins.ru/viewtopic.php?p=7021600жаль на forum.sysadmins.ru убрали локальный поиск и сделали через google/yahoo,
там много было написано полезного
>>
>>вот это номер, но для ГЕРОЕВ, наводка:
>># grep fsck /etc/rc.d/*
>>:-Q
>
>Спасибо!!!за что? за отключение fsck?! я вас умоляю - все что вы сделаете, исключительно на
вашей совести, я вам отключать fsck НЕ СОВЕТОВАЛ!
>>
>>Пробывал, неоднократно. данной проблемы не описывается.
>
>нахлая лошь, например:
>Сейчас почитаю, но большинство ссылок я уже видел ;-) Там проблемы немного другого плана.
У меня сервак стал виснуть каждую ночь, а когда его ребутишь то запускается fsck ессно и на ней он опять виснет
>
>за что? за отключение fsck?! я вас умоляю - все что вы
>сделаете, исключительно на
>вашей совести, я вам отключать fsck НЕ СОВЕТОВАЛ!я хочу сделать это временно. пока не решу проблему с заменой винта
я думаю в rc.conf background_fsck="NO" мне поможет???
>>>
>>>Пробывал, неоднократно. данной проблемы не описывается.
>>
>>нахлая лошь, например:
>>
>
>Сейчас почитаю, но большинство ссылок я уже видел ;-) Там проблемы немного
>другого плана.
>У меня сервак стал виснуть каждую ночь, а когда его ребутишь то
>запускается 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)Вот все верхнее я проделывал не один раз.
>
>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 и
>считать-считать-считать... - в итоге плюнуть)прикольно. я про нее почитал man - такая фигата ;-)
>
>PS. Однажды мне удалось получить относительный номер, но badsect нифига не сделал,
>
>только сообщил мол что создаст файл для fsck, не помню то ли
>не создал, то ли fsck_ffs
>его не подцепил, короче пустая утилита.хм. интересно а нафига ее тогда поместили в систему???
>6) Итого: программного инструмента в FreeBSD для оформления bad blocks НА УРОВНЕ
>FS
>НЕТмда. весело.
>
>Но что можно попробовать сделать:
>
>- современные PATA/SATA диски имеют инструмент который САМ должен РЕМАПИТЬ bad blocks,
>
>НО это происходит только при операциях WRITE (очень весело)т.е. с уничтожением данных проще говоря.
>
>а теперь два варианта которые могут помочь:
>
>- известная утилита mhdd32 - последняя версия которую можно найти 4.6 (DOS/Windows),да нашел. только версия DOS. помойму ее нет под винды??? или я не прав.
>
>пользоваться нужно аккуратно, используя серое вещество, НЕ ВСЕГДА может помочьвообщем RTFM сначала ;-)
>- вариант средствами FreeBSD, использование dd для создания образа + mdconfig для
>
>>= 5.x и vnconfig для 4.x:
>попробую.
>
>Теперь о том что вы писали, что значит dump/restore КОПИРУЕТ bad'ы?!
>
>Bad сектора на ДИСКЕ, dump и restore копируют ФАЙЛОВУЮ систему. и ЕСЛИ
>ВЫ ЕЁ
>не ПРОЧИСТИЛИ с помощью FSCK - то dump/restore вам НЕ ПОМОГУТ, потому
>как FS
>not-clean. Сами BAD'ы не копируются :)я понимаю. просто не совсем верно выразился.
>
> Отсюда и задача:
>- либо заремапить BAD на физическом уровне - mhdd32 или аналог, либо
>на уровне FSбеды где то в районе /usr
ибо остальные разделы нормально себе ведут при проверке и dump
сейчас проверяю таким образом
dd if=/dev/ad4s1g of=/dev/null
если не повиснит то пойду путем через dd и mdconfig
еще вопросы:
1) если грузануться с frenzy или любого live cd freebsd
и натравить fsck -y
в принципе может помочь если fsck исправит ошибки
2) А если тривиально сделать копию каким- нибудь acronis true image
или не стоит давать винты с freebsd винде (покусает) ;-))
Спасибо большое!
>>
>>1) никогда не использовать fsck в background (вы себе враг?)
>>
>
>Это вопрос или утверждение??? ;-)п1 - утверждение, а "вы себе враг?" - вопрос тем кто запускает fsck в BG
>>PS. Однажды мне удалось получить относительный номер, но badsect нифига не сделал,
>>
>>только сообщил мол что создаст файл для fsck, не помню то ли
>>не создал, то ли fsck_ffs
>>его не подцепил, короче пустая утилита.
>
>хм. интересно а нафига ее тогда поместили в систему???
>
>
>>6) Итого: программного инструмента в FreeBSD для оформления bad blocks НА УРОВНЕ
>>FS
>>НЕТ
>
>мда. весело.где-то в районе 4.2-5 из newfs убрали проверку на BAD если не ошибаюсь
И в 4.x долго до какого-то момента ATA драйвер выдавал в логи ОТНОСИТЕЛЬНЫЕ
номера секторов, потом изменили драйвера и стали абсолютные - отсюда "никчемность"
badsect :(>да нашел. только версия DOS. помойму ее нет под винды??? или я
>не прав.значит только под DOS
>беды где то в районе /usr
/usr - понятие растяжимое, если /usr и /usr/local - одна FS, то dd+mdconfig,
если FS==/usr содержит ТОЛЬКО /usr без local (только /usr)
то снять ее с дистрибутива КАК ДВА ПАЛЬЦА>ибо остальные разделы нормально себе ведут при проверке и dump
>
>сейчас проверяю таким образом
>
> dd if=/dev/ad4s1g of=/dev/null
>
>если не повиснит то пойду путем через dd и mdconfig
>
>еще вопросы:
>1) если грузануться с frenzy или любого live cd freebsd
>и натравить fsck -y
>в принципе может помочь если fsck исправит ошибки
>2) А если тривиально сделать копию каким- нибудь acronis true image
>или не стоит давать винты с freebsd винде (покусает) ;-))
>
>
>Спасибо большое!Не на чем
>>
>>сейчас проверяю таким образом
>>
>> dd if=/dev/ad4s1g of=/dev/null
>>
>>если не повиснит то пойду путем через dd и mdconfigповис. в чем может быть еще проблема. контроллер??? попробывать на других машинах.
>>
>>еще вопросы:
>>1) если грузануться с frenzy или любого live cd freebsd
>>и натравить fsck -y
>>в принципе может помочь если fsck исправит ошибки
>>2) А если тривиально сделать копию каким- нибудь acronis true image
>>или не стоит давать винты с freebsd винде (покусает) ;-))вопросы в силе. только почему fsck под frenzy проверяет с no write сообщением.
хотя винты подмонтированы в rw (смотрел в fstab)
>
>>>
>>>сейчас проверяю таким образом
>>>
>>> dd if=/dev/ad4s1g of=/dev/null
>>>
>>>если не повиснит то пойду путем через dd и mdconfig
>
>повис. в чем может быть еще проблема. контроллер??? попробывать на других машинах.дык ты не добавил conv=noerror,sync
Всегда нужно в чем-то сомневаться, в том числе и в контроллере, у меня была ситуация
когда я пол-года не мог просечь в чем дело, а всего лишь помирал один из каналов
на контроллере, а всего их было 4'еБывает что на другой матери контроллер получше...
Пробуй на другой машине.
Попробуй mhdd32 - дискетку, загрузись, запусти mhdd32 - выбери этот диск и запусти
сканирование с ремапингом (без write разумеется, ну там не промахнешься), если у диска
есть СЕРЬЕЗНО проблемное место, то ВСЕ повиснет и программа и контроллер.
Если у тебя будет такое - дело швах, спасай другие FS, боюсь смена контроллера
не поможет.
Но попробовать на другой машине или с другим контроллером - все равно следует>>>
>>>еще вопросы:
>>>1) если грузануться с frenzy или любого live cd freebsd
>>>и натравить fsck -y
>>>в принципе может помочь если fsck исправит ошибкиесли диску хана или контроллер дурит - ЧТО изменится? железо не изменится, алгоритм
работы fsck не изменится :)>>>2) А если тривиально сделать копию каким- нибудь acronis true image
>>>или не стоит давать винты с freebsd винде (покусает) ;-))ерунда все эти acronis'ы применительно к unix'овым FS, близко не советую, потом
не будешь знать ЧТО ДЕЛАТЬ с этим образом.>вопросы в силе. только почему fsck под frenzy проверяет с no write
я просто забыл на них ответить, sorry
>сообщением.
>
>хотя винты подмонтированы в rw (смотрел в fstab)хто жа проверяет fsck НА СМОНТИРОВАННЫХ FS (это НОНСЕНС), сколько раз уже отписано,
fsck -y /dev/adXsY
или
fsck -y /mount_point (из fstab)необходимо запускать ЛИБО на НЕСМОНТИРОВАННЫЕ FS, либо на смонтированные READ-ONLY
(как в случае с root-fs)
>Попробуй mhdd32 - дискетку, загрузись, запусти mhdd32 - выбери этот диск и
>запусти
>сканирование с ремапингом (без write разумеется, ну там не промахнешься), если у
>дискаПомогло. Спасибо. часа за 4 пофиксил. потом fsck и вроде все ок. сейчас переношу при помощи pax на другой винт.
>
>>Попробуй mhdd32 - дискетку, загрузись, запусти mhdd32 - выбери этот диск и
>>запусти
>>сканирование с ремапингом (без write разумеется, ну там не промахнешься), если у
>>диска
>
>Помогло. Спасибо. часа за 4 пофиксил. потом fsck и вроде все ок.
>сейчас переношу при помощи pax на другой винт.после переноса попробуй этот винт ПОГОНЯТЬ на RW используя dd:
- сперва dd на сырой диск:
# dd if=/dev/random of=/dev/adX conv=noerror,sync bs=512 (8k или 16k)
ну скажем раза три, затем размечай
- fdsik - сделай ОДИН слайс
- затем ОДНУ партицию на весь слайс (например FS=/chkdisk
- затем ddсперва на запись в файл [пару-тройку раз с bs=512]:
# dd if=/dev/random of=/chkdisk/myfile conv=noerror,sync bs=512 [можешь count например
задать]затем на чтение - посмотреть сбои:
# dd if=/chkdsk/file of=/dev/null bs=16k
потом пару тройку раз: ЗАПИСЬ и ЧТЕНИЕ можно побольше bs
Вполне может ВСЕ исправиться и диск еще поработает!