The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Как при переносе системы на другой HDD пометить bad block"
Отправлено lavr, 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)

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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