The OpenNET Project / Index page

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

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

"Утилита DD и ошибка LBA"  
Сообщение от ALUM on 24-Апр-07, 09:32 
копирую диск:
/bin/dd if=/dev/ad4 of=/dev/ad5 bs=1M

через пару минут работы ошибка:
INPUT/OUTPUT ERROR in LBA #12702592

ок, делаем так:
/bin/dd if=/dev/ad4 of=/dev/ad5 bs=1M conv=noerror

больше ошибок нет, всё скопировалось

основываясь на том что, ошибка в начале диска, есть предположение, что это SWAP-раздел. Да и хер бы с ним!

ВОПРОС:
КАК УЗНАТЬ ПО НОМЕРУ LBA-блока, ЧТО ТАМ ЗА ФАЙЛЫ?

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

 Оглавление

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


1. "Утилита DD и ошибка LBA"  
Сообщение от DN (ok) on 24-Апр-07, 14:09 
>копирую диск:
>/bin/dd if=/dev/ad4 of=/dev/ad5 bs=1M
>
>через пару минут работы ошибка:
>INPUT/OUTPUT ERROR in LBA #12702592
>
>ок, делаем так:
>/bin/dd if=/dev/ad4 of=/dev/ad5 bs=1M conv=noerror
>
>больше ошибок нет, всё скопировалось
>
>основываясь на том что, ошибка в начале диска, есть предположение, что это
>SWAP-раздел. Да и хер бы с ним!
>
>ВОПРОС:
>КАК УЗНАТЬ ПО НОМЕРУ LBA-блока, ЧТО ТАМ ЗА ФАЙЛЫ?

Может лучше по томам копировать dump/restore ?

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

2. "Утилита DD и ошибка LBA"  
Сообщение от lavr email on 24-Апр-07, 14:17 
>копирую диск:
>/bin/dd if=/dev/ad4 of=/dev/ad5 bs=1M
>
>через пару минут работы ошибка:
>INPUT/OUTPUT ERROR in LBA #12702592
>
>ок, делаем так:
>/bin/dd if=/dev/ad4 of=/dev/ad5 bs=1M conv=noerror
>
>больше ошибок нет, всё скопировалось

кто это вам сказал что ошибок нет?! Если была I/O ошибка, то тут уж лучше копировать
с маленьким bs=512 и conv=noerror,sync

noerror - означает НЕ останавливать dd операцию при ошибках.

>основываясь на том что, ошибка в начале диска, есть предположение, что это
>SWAP-раздел. Да и хер бы с ним!
>
>ВОПРОС:
>КАК УЗНАТЬ ПО НОМЕРУ LBA-блока, ЧТО ТАМ ЗА ФАЙЛЫ?

много считать - скока секторов в LBA, затем для каждой FS высчитывать какому относительному начальному и конечному секторам FS соответствует абсолютный
короче убиться можно

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

3. "Утилита DD и ошибка LBA"  
Сообщение от ALUM on 25-Апр-07, 09:25 
>тут уж лучше копировать
>с маленьким bs=512 и conv=noerror,sync

А что делает "SYNC" ? Переводил, переводил - ничего не понял. Заметил, что сильно замедляет копирование.

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

4. "Утилита DD и ошибка LBA"  
Сообщение от lavr email on 25-Апр-07, 11:50 
>>тут уж лучше копировать
>>с маленьким bs=512 и conv=noerror,sync
>
>А что делает "SYNC" ? Переводил, переводил - ничего не понял. Заметил,
>что сильно замедляет копирование.

раздел conv, подраздел noerror - если задана опция sync, то при ошибках, все кривые
или отсутствующие данные во входном буфере, будут заменены на Null в выходном, в ином
случае в выходном буфере будет чехарда, точнее "жопа"

dd читает из устройства во входной буфер и затем пишет данные в выходной буфер и из него
на выходное устройство. Итого, допустим у нас blocksize=1m - возникает ошибка, что
будет в выходном записанном 1m - токма богу известно.
Отсюда, первое копирование можно делать в /dev/null для проверки на BAD block:

dd if=dev1 of=/dev/null bs=1m - только чтобы убедиться в целостности устройства dev1
если ошибки, некорректируемые, то следующее копирование производим в образ с маленьким
blocksize и conv=noerror,sync
Чем меньше blocksize - тем больше уцелевших данных мы сможем сохранить на выходе.
Долго?! Да. Но более надежно, правда если диск посыпался и тьма bad'ов - то тут уж
ниче не поможет. :(

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

5. "Утилита DD и ошибка LBA"  
Сообщение от ALUM on 25-Апр-07, 13:01 
Спасибо за мегаответ!

Мысли вот какие:
Поскольку при копированиии с bs=1M ошибка вылетала только 1 раз на весь диск (по прикидке - в SWAP разделе):

# /bin/dd if=/dev/ad4 of=/dev/ad5 bs=1M
dd: /dev/ad4: Input/output error
6202+0 records in
6202+0 records out
6503268352 bytes transferred in 114.375235 secs (56859060 bytes/sec)
#

на сис. консоль в этот момент вылезает ошибка ЯРКИМ БЕЛЫМ шрифтом:
"kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=12702592"

Хочу теперь этот мегабайтный кусок посекторно пройтись, что вытащится - то и хорошо. И на том забить на это БОЛД.

ВОПРОСЫ:
Как понять, что такое LBA и с как его курить? Когда-то во времена ДОС 6.22 увлекался АСМом - ловко умел вычислять всякие сектора-цилиндры, сейчас всё похерено.

Надо вычислить начальное смещение и кол-во секторов, ну хотя б примерно. А то при bs=512 весь диск мурыжить тоскливо, 160 Гигов, один гиг почти 30 минут копируется. Ошибка где-то в районе 4..5..6 гига от начала.

Мегабайтный битый кусок посекторно по 512 байт пройдусь, что вытащится - то и хорошо. И на том забъю на это БОЛД.

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

6. "Утилита DD и ошибка LBA"  
Сообщение от ALUM on 25-Апр-07, 13:41 
подобрал смещение и длину, при которой битый диапазон перекрывается:

# /bin/dd if=/dev/ad4 of=/dev/ad5 bs=512 iseek=12000000 oseek=12000000 count=1024000 conv=noerror,sync

kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=12702677
kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702678
kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702678
kernel: ad4: FAILURE - READ_DMA timed out
kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702680
kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702680
kernel: ad4: FAILURE - READ_DMA timed out
kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702682
kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=1<ILLEGAL_LENGTH> LBA=12702682
kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=1<ILLEGAL_LENGTH> LBA=12702683
kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702684
kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702684
kernel: ad4: FAILURE - READ_DMA timed out
kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702686
kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702686
kernel: ad4: FAILURE - READ_DMA timed out
kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702688
kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702688
kernel: ad4: FAILURE - READ_DMA timed out
kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=1<ILLEGAL_LENGTH> LBA=12702690

Итого, не так уж и много битых...

12702677
12702678
12702680
12702682
12702684
12702686
12702688
12702690

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

7. "Утилита DD и ошибка LBA"  
Сообщение от lavr email on 25-Апр-07, 15:12 
>подобрал смещение и длину, при которой битый диапазон перекрывается:
>
># /bin/dd if=/dev/ad4 of=/dev/ad5 bs=512 iseek=12000000 oseek=12000000 count=1024000 conv=noerror,sync
>
>kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=12702677
>kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702678
>kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702678
>kernel: ad4: FAILURE - READ_DMA timed out
>kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702680
>kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702680
>kernel: ad4: FAILURE - READ_DMA timed out
>kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702682
>kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=1<ILLEGAL_LENGTH> LBA=12702682
>kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=1<ILLEGAL_LENGTH> LBA=12702683
>kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702684
>kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702684
>kernel: ad4: FAILURE - READ_DMA timed out
>kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702686
>kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702686
>kernel: ad4: FAILURE - READ_DMA timed out
>kernel: ad4: TIMEOUT - READ_DMA retrying (2 retries left) LBA=12702688
>kernel: ad4: TIMEOUT - READ_DMA retrying (1 retry left) LBA=12702688
>kernel: ad4: FAILURE - READ_DMA timed out
>kernel: ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=1<ILLEGAL_LENGTH> LBA=12702690
>
>Итого, не так уж и много битых...
>
>12702677
>12702678
>12702680
>12702682
>12702684
>12702686
>12702688
>12702690

печально, хотя и не все uncorrectable, мб контроллер с диском неудачно в UDMA общаются,
например понизить режим UDMA для этого диска или проверить кабель, а то и бывает мощности
БП не хватает.

LBA - это абсолютная нумерация, а в FS - используется относительная, относительно начала,
те никакой формулы для однозначного перевода нет

PS. Все это уже здесь не раз расписывалось, попробуйте поиск

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

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

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




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

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