The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как при переносе системы на другой HDD пометить bad block"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как при переносе системы на другой HDD пометить bad block"  
Сообщение от artemii (ok) on 31-Авг-06, 10:40 
Ситуация следующая:

Есть 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 запускают проверку диска?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от lavr email on 31-Авг-06, 10:47 
>Ситуация следующая:
>
>Есть 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

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от artemii (ok) on 31-Авг-06, 11:24 
>
>поиск по форуму здесь и на http://forum.sysadmins.ru/2/
>

Пробывал, неоднократно. данной проблемы не описывается.

>
>вот это номер, но для ГЕРОЕВ, наводка:
># grep fsck /etc/rc.d/*
>:-Q

Спасибо!!!


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от lavr email on 31-Авг-06, 12:23 
>>
>>поиск по форуму здесь и на http://forum.sysadmins.ru/2/
>>
>
>Пробывал, неоднократно. данной проблемы не описывается.

нахлая лошь, например:

http://www.opennet.me/search.shtml?words=freebsd+hdd+bad&config=&restrict=forum
http://www.opennet.me/search.shtml?words=freebsd+badsect&config=htdig_forum&restrict=forum
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 НЕ СОВЕТОВАЛ!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от artemii (ok) on 31-Авг-06, 13:46 
>>
>>Пробывал, неоднократно. данной проблемы не описывается.
>
>нахлая лошь, например:
>

Сейчас почитаю, но большинство ссылок я уже видел ;-) Там проблемы немного другого плана.
У меня сервак стал виснуть каждую ночь, а когда его ребутишь то запускается fsck ессно и на ней он опять виснет


>
>за что? за отключение fsck?! я вас умоляю - все что вы
>сделаете, исключительно на
>вашей совести, я вам отключать fsck НЕ СОВЕТОВАЛ!

я хочу сделать это временно. пока не решу проблему с заменой винта

я думаю в rc.conf background_fsck="NO" мне поможет???


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от lavr email on 31-Авг-06, 14:40 
>>>
>>>Пробывал, неоднократно. данной проблемы не описывается.
>>
>>нахлая лошь, например:
>>
>
>Сейчас почитаю, но большинство ссылок я уже видел ;-) Там проблемы немного
>другого плана.
>У меня сервак стал виснуть каждую ночь, а когда его ребутишь то
>запускается 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)

Вот все верхнее я проделывал не один раз.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от artemii (ok) on 31-Авг-06, 15:21 
>
>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 винде (покусает) ;-))


Спасибо большое!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от lavr email on 31-Авг-06, 15:46 
>>
>>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 винде (покусает) ;-))
>
>
>Спасибо большое!

Не на чем

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от artemii (??) on 01-Сен-06, 15:32 

>>
>>сейчас проверяю таким образом
>>
>> 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)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от lavr email on 01-Сен-06, 16:06 
>
>>>
>>>сейчас проверяю таким образом
>>>
>>> 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)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от artemii (??) on 05-Сен-06, 17:52 

>Попробуй mhdd32 - дискетку, загрузись, запусти mhdd32 - выбери этот диск и
>запусти
>сканирование с ремапингом (без write разумеется, ну там не промахнешься), если у
>диска

Помогло. Спасибо. часа за 4 пофиксил. потом fsck и вроде все ок. сейчас переношу при помощи pax на другой винт.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "Как при переносе системы на другой HDD пометить bad block"  
Сообщение от lavr email on 05-Сен-06, 18:29 
>
>>Попробуй 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

Вполне может ВСЕ исправиться и диск еще поработает!

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру