Посыпался жёсткий диск, восстановил данные с помощью ddrescue

Оставлю здесь на память для самого себя. Возможно, кому-нибудь ещё пригодится, а также кто-нибудь пожелает поделиться советом.
По материалам.
Итак, давненько уже на один из моих трёхтеррабайтников S.M.A.R.T. жаловался, мол, много битых секторов. Да всё как-то руки не доходили заменить жёсткий диск. Просто перекинул с него наиболее важную информацию, а оставил то, что потерять не особо жалко, в случае чего. Несколько дней назад попытался было скинуть с этого диска сотню гигабайт информации, на этом всё и кончилось :) ФС резко перемонтировалась в ro. Попытки монтировать её в rw ни к чему не привели: не смог ни отмонтировать диск (lsof утверждал, что он занят), ни примонтировать его после перезагрузки. S.M.A.R.T. вообще не распознавал диск, помечал его как "неизвестный", mount выдавал фатальное:
reiserfs bread: Cannot read the block (2): (Input/output error).
Быстренько был куплен такой же по объёму жёсткий диск, на который была восстановлена информация с убитого диска. Делал это в три прохода.
1-й проход:
ddrescue --no-split --verbose --force /dev/убитый_раздел /dev/раздел_на_который_восстанавливаем_инфу /media/любой_примонтированный_диск/rescue.log
В моём случае это выглядело вот так:
sudo ddrescue --no-split --verbose --force /dev/sdc1 /dev/sda1 /media/Library/rescue.log
Здесь не указывалось применять --force, но у меня, почему-то, ddrescue потребовал это сделать. Оба раздела (и тот, который восстанавливаем, и тот, на который восстанавливаем данные, были отмонтированы).
Уже после первого прохода удалось примонтировать раздел на новом диске и восстановить практически все данные (пишу "практически все", а не "все" только потому, что все данные не проверял; они мне все попросту были не нужны). Но решил довести дело до конца и пройти оставшиеся два прохода.
2-й проход:
sudo ddrescue --direct --max-retries=2 --verbose --force /dev/sdc1 /dev/sda1 /media/Library/rescue.log
У меня опять ddrescue потребовал --force, хотя, вроде бы, этого быть не должно.
3-й проход:
sudo ddrescue --retrim --max-retries=2 --verbose --force /dev/sdc1 /dev/sda1 /media/Library/rescue.log
Результат: все нужные данные восстановлены (а их было без малого террабайт). Времени на это затрачено около 2-х с половиной суток. Возможно, кто-нибудь знает более эффективные способы восстановления данных и поделится им в этом топике? Видимо, со старым диском придётся попрощаться? Или можно его использовать как долговременное хранилище редко используемых данных, отформатировав, скинув на него данные и просто отключив от компьютера? Или лучше, всё же, не рисковать? Возможно, второго шанса судьба уже не даст? :)
konstantinov-ms
Видимо, со старым диском придётся попрощаться? Или можно его использовать как долговременное хранилище редко используемых данных, отформатировав, скинув на него данные и просто отключив от компьютера? Или лучше, всё же, не рисковать? Возможно, второго шанса судьба уже не даст? :)

Думаю всё упирается в то насколько плох жёсткий диск, а именно в расположение его повреждённых секторов.
У меня имеется старенький(лет 6 если не больше) самсунговский диск на 400 гиг ещё с ATA интерфейсом. Так вот, проработав некоторое время он начал "стучать", S.M.A.R.T показал что запасные сектора уже все задействованы. Благо файловая система ещё держалась и важные данные небыли затронуты повреждёнными секторами. В общем перенёсши все необходимые данные на другой жёсткий диск стал вопрос что делать с умирающим hdd.
Первым делом решил посмотреть на поле брани и визуально оценить масштаб катастрофы, мой выбор тогда пал на программу Victoria с помощью которой я и проанализировал ситуацию. Оказалось что хоть диск и находится на грани пропасти(мусорной корзины) но не всё так печально. Дело в том что повреждённых секторов хоть было и много но все они не были размазаны по диску а находились в относительно узкой области, где то между 80 и 82 гигами. Поэтому когда дело дошло до переразбивки диска я просто напросто не включал эту область в разделы диска плюс ещё добавил по пару гиг с каждой стороны как буфер. И так исключив порядка 6 гиг из 400 гигового диска и переведя его в щадящий режим (используя как файлопомойку для аудио и видео) удалось отсрочить его гибель. После операции прошло больше года. Диск работает и по сей день.

п.с.
Victoria работает под виндой либо под голым досом.
Случись такая ситуация с винтом сейчас наверное бы воспользовался ddrescueview(жаль в AUR еще не запилил никто) для визуального анализа жёсткого диска.
red
Случись такая ситуация с винтом сейчас наверное бы воспользовался ddrescueview(жаль в AUR еще не запилил никто) для визуального анализа жёсткого диска.
Хм... Спасибо! Судя по всему, весьма неплохая программа. Правда, x86_64, видимо, нет. Будем разбираться, спасибо за совет.
P.S. В readme написано, что это log viewer к ddrescue. То есть, тот лог, что программа сделала при проходах винта, теперь можно посмотреть этим вьвером. Очень даже неплохо.
red
Victoria работает под виндой либо под голым досом.
Появился некий аналог под линукс - whdd (новость на opennet).

red
ddrescueview(жаль в AUR еще не запилил никто)
Посмотрел, из чего сделан ddrescueview. Можно сделать PKGBUILD для AUR, но вот в чём вопрос. Если собирать из исходников, то нужен lazarus и fpc. Ставить около гиг-а для сборки маленькой программки (это не беспокойство о себе, а мысли вслух)?
Сделать пакет типа ddrescueview-bin?

konstantinov-ms
Правда, x86_64, видимо, нет.
Как это нет? Под линукс есть и i386, и x86_64. Нет разве что вин-64.

sirocco
Появился некий аналог под линукс - whdd (новость на opennet).

Кстати, да, я читал эту новость. Надо будет пощупать.

sirocco
Сделать пакет типа ddrescueview-bin?

Было бы неплохо.

sirocco
Как это нет? Под линукс есть и i386, и x86_64. Нет разве что вин-64.

Хм... Действительно, невнимательно глянул. Есть и x86_64 под Linux.
ddrescueview-bin
Отзывы приветствуются. Десктоп-файл делать не стал, запуск из командной строки (ланчера) ddrescueview.
sirocco
ddrescueview-bin
Отзывы приветствуются. Десктоп-файл делать не стал, запуск из командной строки (ланчера) ddrescueview.
Всё собралось и работает, спасибо! Программка, как и предполагалось, весьма примитивна: она просто визуализирует лог ddrescue. Но это, собственно, как раз то, что было нужно. И печальная для меня новость: бэд-блоки разбросаны по всему диску, поэтому вырезать "больную" часть и продолжить использовать "здоровую", как предлагал red, видимо, не получится. Попробую пройтись программой, исключающей бэд-блоки. Помнится, была какая-то программулина, позволявшая пометить эти блоки раз и навсегда. Может быть, badblocks? А потом следить за "здоровьем" диска: если количество бэд-блоков не увеличивается, то всё нормально.
 
Зарегистрироваться или войдите чтобы оставить сообщение.