Восстановление информации с умирающего диска с разделами NTFS — используя Линукс

У знакомого (как позже выяснилось - уже давно) медленно и верно умирал жёсткий диск в нотике, унося в небытиё всю его необъятную почту (32Гб!) и бизнес документы. Вопрос про backup - не ко мне, пожалуйста 😉 Настал день, когда винда просто перестала загружаться и вываливалась с голубым экраном. И неудивительно: на диске оказалось более 5 тысяч битых блоков!
В Сети есть множество "howto" рассказывающих о том, как сделать что-либо с NTFS разделом (с помощью gparted), а после заставить винду грузиться при помощи Windows Repair, который надо запускать с фирменного диска. А что делать, когда винда лицензионная, а фирменный диск давно исчез в межъящичном пространстве? Рассказываю о том, что сработало у меня "на ура" c Windows XP Pro и было успешно перепроверено Win7 Pro 64bit:
  • Сохранить образ диска со всеми дырками
  • Залить его на бОльший диск
  • Винда загрузилась! => checkdisk; regedt32...
  • Ужать раздел, чтобы наверняка влез на новенький SSD
  • Скопировать на SSD
  • Создать раздел заново,  на весь диск под завязку
  • ntfsresize
  • Винда грузится снова! => checkdisk

На тот момент у меня на домашнем компьютере была установрлена Ubuntu 11.10. Позже проделывал тот же трюк из-под Ubuntu 13.10 и Linux Mint 16. Уверен, что и на других дистрибутивах описанная последовательность действий - возможно наиболее эффективный способ восстановления NTFS разделов с битых дисков.

Осторожно! Программа - подделка!

Ненужная, да просто вредная утилита, поставляемая в наборе убунту:

dd_rescue -v
dd_rescue Version 1.23, garloff@suse.de, GNU GPL

Эта недоделка может лишь вычитывать диск так же тупо, как это делает

dd conv=sync,noerror

то есть, стоит её прервать - и всё поехало заново, или надо руками высчитывать, где остановились и откуда запускаться, и потом опять же вручную как-то слеплять полученные файлы... Зачем некто Гарлофф накатал сие - лишь чтобы смущать неопытных пользователей убунты и сьюзи.

Внимание! Очень нужная программа

Правильная, очень полезная, грамотная утилита для спасения умирающих дисков:

ddrescue --help
GNU ddrescue - Data recovery tool.
Copies data from one file or block device to another,
trying hard to rescue data in case of read errors.
Usage: ddrescue [options] infile outfile [logfile]
You should use a logfile unless you know what you are doing.
....
Report bugs to bug-ddrescue@gnu.org
Ddrescue home page: http://www.gnu.org/software/ddrescue/ddrescue.html
General help using GNU software: http://www.gnu.org/gethelp

Виват Antonio Diaz Diaz!!!
Тянем отсюда: http://www.gnu.org/s/ddrescue/ddrescue.html

Поехали!...

Чтобы всё было под рукой, сразу устанавливаем:

sudo apt-get install dkms build-essential
sudo apt-get install smartmontools screen sysstat
sudo apt-get install xz-utils lzip
sudo apt-get install ntfsprogs

Далее следуем тому, что описано в файлике INSTALL от ddrescue:

tar xlvf ddrescue-1.17-rc1.tar.lz
cd ddrescue-1.17/
./configure
make
make check
sudo make install

 

Полезно бывает взглянуть на то, что докладывает S.M.A.R.T. об умирающем диске. Для общего образования. Ибо делу вся эта информация вряд ли поможет.

# smartctl -a /dev/sdX

Обычно когда Reallocated_Sector_Ct  RAW_VALUE хотя бы 1, а часто много больше - диску осталось жить недолго.

Вычитывание диска рекомендую запускать из-под screen, и на машине, которая не шумит или находится не в спальне. Ибо процесс может растянуться на часы и дни - диски жутко тормозят на битых секторах и никакими программными ухищрениями это дело не ускорить. Я запускал вычитывание на сервере, который у меня крутился в подвале и никому не мешал.

Внимание:всевозможные USB адаптеры и прочие подключалки дисков крайне не рекомендуется использовать для работы с больными дисками! Подключайте диск прямиком к SATA контроллеру. Вы предупреждены.

ddrescue -d /dev/sdX ddr_image ddr_log

Следует лишь иметь в виду, что /var/log/syslog может распухнуть до невообразимых размеров из-за жалоб системы на битый диск.

Мне надоело ждать уже через три дня. К тому времени 300Мб нечитаемого пространства сократилось до одной сотни мегабайт... Всего там было чуть больше 5000 (!) битых секторов. Я прервал ddrescue по Ctrl-C, скопировал образ на рабочую машинку и запустил дырявый диск вычитываться дальше - на всякий случай. Замечательная утилитка этот ddrescue от Antonio Diaz Diaz!

Получившийся образ заливаем на точно такой же или бОльший по размеру диск. Ничего форматировать и подготавливать ненужно. Убедитесь только, что на диске не оставалось ничего ценного!

dd if=ddr_image of=/dev/sdY

Теперь можно подключить этот, возможно временный, диск к восстанавливаемой машине. В моём случае винда загрузилась без проблем. Тут же был запущен полный checkdisk с перезагрузкой.

Следующая операция (возможно) необходима для того, чтобы винда вдруг не решила, что её нелегально скопировали и не отказалась работать самым неожиданным способом начиная от отказа загружаться до прекращения реагирования на пользовательский ввод через какое-то время после казалось бы успешной загрузки.

Запускаем regedt32 из командной строки и стираем напрочь всё содержимое
Computer\HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

Ужимаем раздел

NTFS раздел был вторым и последним. Для начала запускаем ntfsresize "в сухую", чтобы ничего реально на диске не делал и пожаловался, если что пошло не так:

ntfsresize -n -s 150G /dev/sdX2

Если всё прошло нормально - теперь можно уменьшать раздел:
ntfsresize -s 150G /dev/sdX2

Раздуваем раздел на весь диск - fdisk

fdisk /dev/sdX

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

Раздуваем раздел на весь диск - ntfsresize

umount /dev/sdX2

ntfsresize -f -n /dev/sdX2
ntfsresize -f /dev/sdX2

Подключаем, загружаем

Checking filesystem on C:

 

Поделитесь опытом!

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

Комментарии ВКонтакте

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *