![]() |
|
|
![]()
|
|
| Горо |
|
|||
|
Unregistered |
ПРоблема! На винте куча soft-bad-ов, и некоторое количество их на файловой таблице. Для того чтобы попытаться восстановить тома на винте, я хочу сначала слить образ диска один-в-один на здоровый винт, а уже там восстанавливать тома стандартным Acronis-ом или еще чем! Так проблема в том, что сливать не получается. Бэды не дают. Надумал я написать небольшую прогу, которая бы могла БЭДы абы как считать, пусть неправильно, пусть с ошибками, но чтобы перелилось это на другой девайс. Стандартные же проги на БЭДАх зависают пытаясь прочесть. Я бы прошелся по бэдам ремапером, но они именно в файловой таблице, которую ремапер исправлять не желает.
Так можно ли считать сектор в любом случае, или содержимое сектора мне доступно только когда не произошло ошибок чтения? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Ты, похоже, плохо понимаешь, что означают применяемые тобой термины.
Soft-bad - это сектор (кластер, блок), помеченный в файловой системе как поврежденный, но не имеющий повреждений. Соответственно ошибка CRC или дефект поверхности - это НЕ soft-bad. Кстати, на ФАТ12/16/32 софт-бэд по определению не может быть в таблице ФАТ или (для ФАТ12/16) корневом каталоге. Впрочем, неважно. По сабжу. Хард-бэды прекрасно игнорирует например Norton Ghost. Просто копию надо делать даже по смыслу процедуры не логического раздела, а физической области на винте. Ну и сказать что вместо дефектных секторов надо писАть нули - см. настройки. Софт, читающий остатки данных из физически дефектных секторов винта, существует. Однако об этом забудь - рядовому (и не очень) юзеру он просто недоступен. Это сообщение отредактировал(а) Akina - 22.6.2004, 12:44 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Guest |
|
||||||||
|
Unregistered |
Я ОЧЕНЬ ХОРОШО ПОНИМАЮ. ЕСТЬ HARD-BAD - это плохой сектор, который обусловлен повреждением поверхности. ЕСТЬ SOFT-BAD - это "плохой" сектор, который появляется в тех случаях, когда в время записи сектора, от головка теряет питание, и сектор не дописывается. В итоге начало сектора новое, окончание старое и соответственно контрольное число не соответствует сектору. Потеря питания головкой может быть: отвалились сигналы от контроллера (например иголки в винтах IBM), отвалилось питание вообще. А вот файловая система метит у себя сектора плохими, не взирая на то, hard это или soft. Почему называется HARD: это не лечится. Почему называется SOFT: это лечится. сектор просто форматируется на низком уровне, функциональностьюсамого контроллера.
В связи с вышеизложенным ты глубоко ошибаешься. Может. И никто ему не помешает. Кстати прочитай свое сообщение и поймешь, что сам себе противоречишь.
За это спасибо. Может быть поможет!
Ой! Ну не смешите ви мои тапочки! Если существует софт, то и Я могу его написать! Соответственно вернемся к моему сообщению: Как я могу в своей программе получить доступ к данным в поврежденном секторе? ВИ МЕНЯ ПОНЯТЬ |
||||||||
|
|||||||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
через порты контролера
читая всю дорожку вместе с межсекторными метками (raw data) -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Так в чем проблема? Команда "считывание без контроля" класс 7 опкод 5. Выдает сырые данные без обработки, многократное чтение позволяет рассчитать область повреждения и слабые биты. Удачи! -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
такимже макаром и записать можно
совсем однако нестандартный формать будет -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Ruterian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 9.1.2004 Где: Вязьма, Минск Репутация: нет Всего: нет |
Блин, вот усложнили-то!!!
Есть 4 стандартных АТА-команды для чтения сектора/блока из HDD. 20h - чтение с повторами при ошибке 21h - чтение без повторов 22h - длинное чтение с повторами 23h - длинное чтение без повторов Команду 20h использует ОС и BIOS при стандартной работе с диском (ее генерирует соответствующая функция int13, или драйвер HDD). Команды длинного чтения в настоящее время устарели и поддерживаются не всеми дисками. Т.е. формально они поддерживаются (возвращают блок данных), но его содержимое ПРИ ОШИБКЕ (!!!) НЕ ОБЯЗАНО соответствовать содержимому сектора. Тут все зависит от модели винчестера. Например, на винчестерах IBM, некоторых моделях Quantum, оно работает, а на старых ноутбучных HITACHI - нет (выдает мусор). Для спасения информации с винта, у которого в секторах имеется нарушение CRC блока данных, нужно: 1) Узнать модель HDD и провести эксперимент - посмотреть, как винт будет читать блок, если его "испортить" - например, длинной записью (32h). 2) Если команда длинного чтения не работает на данном типе HDD - замещать БЭДы нулями или сигнатурой. 3) Если работает - писать софт, читающий трек обычным чтением (20h), а при обнаружении БЭДа - читать (только) его через 22h несколько раз и статистически обрабатывать. Процесс этот очень длительный (обычно от 0.5 до нескольких сек на ОДИН сектор). 4) Если винчестер зависает на бэд-блоках (не снимает бит BUSY) - посылать в контроллер софт-ресет (через порт 3х6 в соответствии со стандартом АТА), по таймауту, затем читать следующий блок. 5) Если возиться влом - отдать винт грамотному ремонтнику, у которого этот софт уже есть. |
|||
|
||||
| Jin X |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 5.3.2004 Репутация: 1 Всего: 1 |
Он имеет в виду то, что если в FAT появится плохой сектор, то его негде будет отмечать как плохой, и никто никогда не узнает об этом (о том, что он плохой), пока ни попытается его прочитать --------------------
Бойся своей мечты, ибо она осуществима! |
||||
|
|||||
| BAHO |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.8.2004 Репутация: нет Всего: нет |
Мужики, помогите ламеру! т.е. мне. Киньте ссылочку или татейку про АТА команды и как общаться с большими дисками (~80Gb) через порты контроллера.
Заранее спасибо |
|||
|
||||
| Jin X |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 5.3.2004 Репутация: 1 Всего: 1 |
См. соседнюю тему.
--------------------
Бойся своей мечты, ибо она осуществима! |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |