Порятунок hdd із поганими секторами: dd vs gddrescue


11

Десь в інтернетах я прочитав, що gddrescue перевершує dd, принаймні, з точки зору того, що можна розрізнити кількість прочитаних дисків у проблемному секторі. Це справді так?

час dd, якщо = / dev / sda пропустити = 900343967 of = a.bin count = 4 iflag = direct conv = noerror, синхронізація

dd: читання `/ dev / sda ': помилка вводу / виводу
2 + 0 записів у
2 + 0 записах
1024 байтів (1,0 кБ) скопійовано, 18,66057 с, 0,1 кБ / с
3 + 1 записів у
4 + 0 записів із
2048 байтів (2,0 кБ) скопійовано, 18,6707 с, 0,1 кБ / с

реальний
користувач 0m18.672s 0m0.000s
sys 0m0.004s

До речі, прямий прапор дуже допомагає, без нього я зміг прочитати лише 1 сектор із 4 (проти 3/4 з ним). Однак це помітно сповільнює швидкість передачі даних - це принаймні приблизно в 5 разів повільніше для мене: 5 МБ / с проти 25 МБ / с без цього прапора. Так чи інакше, тепер для частини gddrescue (ddrescue) ..

час ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin

Потрібно скопіювати 2048 байт з / dev / sda в b.bin
Початкові позиції: infile = 460976 MB, outfile = 0 B
Розмір копіювання блоку: 1 жорсткі блоки
Розмір жорсткого блоку: 512 байт
Макс_ретри: 0
Прямий: так Розріджений: ні Спліт: немає Магістраль: ні

Натисніть Ctrl-C, щоб перервати
врятований: 1536 B, помилка: 512 B, швидкість струму: 53 B / s
ipos: 460976 MB, помилки: 1, середня швидкість: 53 B / s
opos: 1536 B, час від останнього успішного читання: 0 s
Закінчено

реальний
користувач 0m18.736s 0m0.004s
sys 0m0.000s

Як показано вище, для виконання було потрібно стільки ж часу. Як і очікувалося - та сама статистика: 3/4. Однак, хоча я міг прокладати проблемні сектори з 0x00 для dd (conv = sync), gddrescue, здається, не вистачає цієї функціональності? Натомість він просто пропускає проблемний сектор, не записуючи нічого до своєї позиції, і продовжує наступний наступний сектор (якщо я вже маю дані, записані над цим сектором у вихідному файлі - він не буде перезаписаний: іноді це може бути не бажаним ). Я не впевнений, як буде працювати параметр -t (усікати) для блочного пристрою з gddrescue(я здогадуюсь, він повністю замінить його на 0x00), але у звичайному файлі він буде, як було передбачено, усікати весь файл, не роблячи це лише в розмірах зміщення (тобто -o1). Таким чином, це дещо подібне до синхронізації dd , але далеко не те саме, що це лише імітує функціональність ідентифікатора, якщо Ви готові перезаписати весь вихідний пристрій / файл.

Хоча, завдяки наявності багатослівної опції та можливості реєструвати погані сектори / блоки - gddrescue здається кращим вибором. Важливо зазначити, що обидва додатки були запущені з (в значній мірі) однаковими парамами.

Вихід

різн

порожній (вихід 0), тобто файли точно такі ж.

Тепер це частина Я НЕ розумію:

ДД повільно, навіть якщо немає помилок, оскільки вона робить крихітні читання та записи. Він витрачає багато часу на пережовування помилкових частин накопичувача, а не на читання стільки речей, що не мають помилок, а потім повернутися, щоб зробити важкі речі.

Про що це все? Особливо частина " вона витрачає багато часу, пережовуючи помилкові частини накопичувача, а не читаючи стільки речей, що не мають помилок, ТОГО повертаючись, щоб зробити важкі речі "? Це зайняло стільки ж часу, як показано вище (хоча я перевірив дуже крихітну частину даних, але чи має це значення?).

gddrescue пропонує перемикач -r , який повинен контролювати кількість повторних зчитувань у "поганому секторі", однак, dd, здається, працює з -r0 весь час (як це зайняло той же час). Отже, чи є цей варіант лише для "післяобробки"? Що я отримую, - це те, що спочатку і dd, і gddrescue, здається, працюють з -r0, а DD , схоже, не пережовує помилкові частини більше, ніж gddrescue (вони, здається, зупиняються на поганому блоці протягом 15-18 секунди дають або беруть, так що угода, як швидше gddrescue ???)

Крім того, для чого варіант -D (використовувати синхронний запис для вихідного файлу)? Я не помітив жодної різниці від деяких проведених тестувань.

Хтось може прокоментувати все це? Дякую.

Відповіді:


6

Я не впевнений, як цитований автор прийшов до свого висновку. Я не обговорюю, чи він прав, чи ні, я просто не маю цього досвіду.

З іншого боку, стосовно цієї заяви ...

gddrescue перевершує DD, щонайменше, з точки зору того, що можна розрізнити кількість прочитаних дисків у проблемному секторі.

Справжня "принаймні" причина використовувати gddrescue полягає в тому, що gddrescue не скорочує вихід при повторних спробах читання / запису. gddrescue також є повністю автоматичним, що стосується певних помилок читання, які зупинять dd.

Тож автор, що цитується, може бути правильним, він не може ... але все твердження пропускає точку gddrescue.

ОНОВЛЕННЯ: Детальні відмінності між dd та gddrescue.

dd conv = noerror, продовжуватиметься після помилки, але це просто пропустить поганий блок. навіть додавання параметра синхронізації просто поставить нулі, а не пропустити. Якщо ви використовуєте dd для іншого читання, використовуючи той самий вихід, ви просто перезаписати / втратити все, що ви відновили раніше.

gddrescue, також буде тривати після помилки. Він може відновити частковий вихід з поганого блоку, і повернеться назад і спробує блок-сектор за сектором. gddrescue буде зберігати докладний журнал помилок із хорошим блоком, поганими блоками та сектором за секторами від будь-яких поганих блоків. Якщо ви спробуєте виконати прочитане ще раз, gddrescue відключить (скоротить) і додасть будь-які додатково відновлені дані.

Майте на увазі, навіть з обома інструментами, якщо цілий блок на 100% не читається. Ви все одно не отримаєте даних. gddrescue потенційно може отримати більше даних, якщо деякі сектори в блоці залишаться читабельними.


Я бачу, добре .. Що стосується того, що gddrescue є повністю автоматичним, чи не є також DDD повністю автоматичним з conv = noerror ? Не могли б ви детальніше розібратися з частиною "усікання результатів при повторних спробах читання / запису"? Ви маєте на увазі матеріал "після обробки", коли gddrescue наказано переглядати сектори, які не вдалося прочитати спочатку?
XXL

Я оновив свою відповідь, щоб відобразити ваше запитання.
Дж. М. Бекер

Я багато разів використовував gddrescue на жорстких дисках та оптичних носіях. Його перевага полягає в тому, що він намагається відновити нечитабельні ділянки. Ви також можете зупинити його та повторно запустити пізніше, і він підбере прямо там, де він зупинився.
Кріс Томпсон

1
@TechZilla - gddrescue просто пропускає поганий блок, а, так само , як дд робить. Як я вже писав вище, набивання нулями (conv = синхронізація) - це точний варіант, що gddrescue відсутній і який іноді корисний (з додатковими зусиллями ви можете це зробити вручну з / dev / zero, тому що у вас буде журнал погані сектори, що виробляються за результатами gddrescue ). Там немає ні різниці між gddrescue і дд в плані відновлення, gddrescue не робить нічого іншого в цьому відношенні. Чому? Тому що при однаковому розмірі блоку вони відновлять однаковий обсяг даних.
XXL

@TechZilla - єдина фактична різниця, коли кількість секторів для обробки вибирається вище розміру блоку . Це дасть вам можливість помітно прискорити роботу порівняно з dd , оскільки dd може працювати лише зі статичним незмінним розміром сектора. gddrescue , з іншого боку, спочатку прочитає стільки секторів, скільки ви йому доручили, але він також визначить ці шматки поганими, якщо один блок всередині є сумнівним, і як тільки це буде зроблено - переключиться на пост-режим, оглядаючи заплутані області поступово зменшується розмір сектору, поки він не досягне мінімального розміру блоку
XXL

2

Залежно від того, коли ваш hdd був виготовлений, а також від виробника, і якою версією прошивки він працює, із сучасними hdds, коли виявлені погані сектори, вони вилучаються з використання прошивкою, і накопичувач знає пропустити погані сектори. Отже, поняття "рятування" hdd від поганих секторів може бути спірним у цьому плані. Питання про те, чи мали колись погані сектори дійсні дані, здається, випадок, який ви шукаєте - не призначено каламбур!

На grc.com є якесь програмне забезпечення під назвою spinrite 6, яке стверджує, що може виправити hdds з поганими секторами. Це платне програмне забезпечення, і я його ніколи не пробував. Про це варто прочитати, особливо якщо хтось намагається "воскресити" hdd і він насправді працює так, як описано. Поширені запитання на grc.com щодо спинриту 6 вказують на те, що існує 30-денна гарантія повернення грошей (а також немає пробної чи безкоштовної версії). Примітка. Я не пов'язаний з grc.com, і не рекомендую його для вашої ситуації. Я просто знаю, що воно існує і може працювати як рекламоване, тільки не візьміть на це моє слово - застереження емптора.

Що стосується оцінки того, чи gddrescue "перевершує" dd принаймні з точки зору того, щоб можна було розрізнити кількість прочитаних дисків у проблемному секторі, будь-яку кількість прочитаних на поганому секторі (оскільки вона позначена як не- Функціональний сектор у списку поганих секторів, що міститься у списку прошивки), мені не здається корисним для якісного використання або gddrescue, або dd.

Вам може бути корисно читати веб-сторінку, dd (Unix) за адресою: https://secure.wikimedia.org/wikipedia/en/wiki/Gddrescue#Recovery-oriented_variants_of_dd

Також вам може бути корисним ознайомитися з тим, як створити зображення розбитого жорсткого диска за допомогою UBCD, dd-рятувальників та P2 eXplorer за адресою: http://www.myfixlog.com/fix.php?fid= 21

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.