копирую диск:
/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-блока, ЧТО ТАМ ЗА ФАЙЛЫ?
>копирую диск:
>/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 ?
>копирую диск:
>/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,syncnoerror - означает НЕ останавливать dd операцию при ошибках.
>основываясь на том что, ошибка в начале диска, есть предположение, что это
>SWAP-раздел. Да и хер бы с ним!
>
>ВОПРОС:
>КАК УЗНАТЬ ПО НОМЕРУ LBA-блока, ЧТО ТАМ ЗА ФАЙЛЫ?много считать - скока секторов в LBA, затем для каждой FS высчитывать какому относительному начальному и конечному секторам FS соответствует абсолютный
короче убиться можно
>тут уж лучше копировать
>с маленьким bs=512 и conv=noerror,syncА что делает "SYNC" ? Переводил, переводил - ничего не понял. Заметил, что сильно замедляет копирование.
>>тут уж лучше копировать
>>с маленьким 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'ов - то тут уж
ниче не поможет. :(
Спасибо за мегаответ!Мысли вот какие:
Поскольку при копированиии с 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 байт пройдусь, что вытащится - то и хорошо. И на том забъю на это БОЛД.
подобрал смещение и длину, при которой битый диапазон перекрывается:# /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
>подобрал смещение и длину, при которой битый диапазон перекрывается:
>
># /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. Все это уже здесь не раз расписывалось, попробуйте поиск