Полетел винт. В BIOSе винчестер определяется. Но не видятся логические диски или Windows радушно предлагает их отформатировать? А данные ой как нужны. Что делать?
Подключаем его к другому компьютеру как дополнительный винчестер – вполне возможно что у вас капризничает материнка или ОС. В примерах ниже, если это не оговорено, в качестве операционной системы используется линукс. Подключаем, если это возможно, не через usb, а напрямую к материнской плате, через sata/ide разъемы. Если есть несколько шлейфов sata/ide – попробуйте каждый – иногда проблема бывает именно в некачественном шлейфе.
Встречал рекомендации переворачивать винчестер и ставить на него дополнительный кулер. Возможно, в иных случаях, это действительно может помочь успешно подмонтировать винчестер, а вам – сохранить данные без необходимости прибегать к специальным средствам.
Если винчестер внешний и подключается только через USB – подключайте его сзади системника. Если не хватает напряжения – передние usb-порты страдают от этого первыми, в такой ситуации, например, флешки, могут примонтироваться только в read-mode.
Подключили? Проблема все та же? Данные все так же нужны?
Тогда действуем прям по списку:
1. Определяем идентификатор винчестера
Для дальнейшей работы с проблемным винчестером необходимо узнать его идентификатор в системе (это название вида /dev/sd*, где * – буква a-z). Цифры после третьей буквы – номер обнаруженного раздела. Таким образом /dev/sdg – идентификатор винчестера, а /dev/sdg5 – один из его разделов. Определить идентификатор винчестера в системе можно несколькоми способами:
Если разделы винчестера корректно определяются системой – можно воспользоваться утилитой fdisk:
sudo fdisk -l|grep NTFS
/dev/sda1 * 1 1030 8271872 7 HPFS/NTFS
/dev/sda2 1030 6130 40962045 7 HPFS/NTFS
/dev/sda5 6130 91202 683336704 7 HPFS/NTFS
/dev/sdb5 1 807237 1953511424 7 HPFS/NTFS
/dev/sdd1 1 182402 1465135104 7 HPFS/NTFS
Данная команда выведет информацию по всем NTFS разделам всех жестких дисков и вам останется только выбрать диск с проблемным разделом.
Если же система не может распознать что за файловая система расположена на винчестере можно воспользоваться утилитой lshw, выводящей детальную информацию о любой железке:
lshw -C disk -short
H/W path Device Class Description
=============================================================
/0/100/1c.4/0/0.0.0 /dev/sdc disk 320GB ST3320620A
/0/100/1f.2/0.0.0 /dev/cdrom1 disk DVD RW AD-7260S
/0/100/1f.2/0.1.0 /dev/sda disk 750GB WDC WD7501AALS-0
/0/100/1f.5/0.0.0 /dev/sdb disk 2TB WDC WD20EARS-00S
/0/1/0.0.0 /dev/sdd disk 2TB SCSI Disk
/0/2/0.0.0 /dev/sde disk 32GB SCSI Disk
Вывод данной команды будет содержать краткую информацию по всем винчестерам, вам необходимо выбрать идентификатор жесткого диска, данные с которого необходимо восстановить.
С помощью графической утилиты gparted, которая отображает разметку обнаруженных разделов на каждом устройстве также можно определить который из винчестеров нуждается в профилактике.
Если ничего из вышеописанного в системе нет и установить по каким-то причинам невозможно – идем “в лоб”:
cat /proc/partitions и cat /proc/mount
и сравнивая списки успешно примонтированных разделов со списком всех обнаруженных разделов – выбираем идентификатор винчестера при работе с которым возникли трудности.
Зная идентификатор винчестера – мы можем его продиагностировать – какого рода болезнь его одолела – софтверного или хардверного толку.
2. Проверяем винчестер на bad-blocks
Во всех примерах ниже, используемый идентификатор жесткого диска – /dev/sda необходимо заменить на идентификатор вашего винчестера, полученный на предыдущем этапе. Учтите – все подробные проверки могут выполняться долго, конкретное время зависит от объема вашего жесткого диска, оставлять его на ночь – обычная практика и то, не все проверки успевают завершиться.
1) с помощью утилиты badblocks пакета e2fsprogs:
badblocks -nvs /dev/sda
или использовать флаг -e 1 – тогда программа закончить проверку при первом же найденном поврежденном секторе. Проверка осуществляется независимо от SMART. Важно указать флаг -n – в таком случае проверка будет производиться в “мягком” режиме не разрушая данные. флаги -s и -v служат для подробного отображения хода проверки.
2) С помощью утилит пакета smartmontools. Применима только для устройств поддерживающих SMART – т. е. для подавляющего большинства современных жестких дисков.
Быстрая проверка:
smartctl -H /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
К сожалению даже благополучный диагноз PASSED еще не значит, что винчестер механически здоров, потому проверим, были ли ошибки во время работы:
smartctl -l error /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged
Показать общую информацию о жестком диске:
smartctl –all /dev/sda
Атрибуты SMART на которые необходимо обратить внимание. Чем меньше их значение (столбец RAW_VALUE) – тем лучше здоровье нашего винчестера.
Raw Read Error Rate – частота аппаратных ошибок при чтении данных с диска.
Spin Up Time – время раскрутки пакета дисков из состояния покоя до рабочей скорости.
Spin Up Retry Count – число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка провалилась.
Seek Error Rate – частота ошибок при позиционировании блока головок.
Reallocated Sector Count – число операций переназначения секторов.
Reallocated Event Count – число операций переназначения
Current Pending Sector – число подозрительных секторов, кандидатов на переназначение.
В частности, если при выполнении команды
sudo smartctl -a /dev/sda|grep -i reallocated
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always – 0
последняя цифра не равна нулю – у нас на лицо проблемы аппаратного характера.
Перед тем как провести детальное тестирование, полезно знать сколько оно будет продолжаться:
smartctl -c /dev/sda
Вывод будет длинный. Важные для нас строчки:
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 185) minutes.
Если smartctl не выводит нужную нам информацию и не запускает проверки – проверьте – быть может именно у вас тот винчестер что не поддерживате SMART? Проверьте, что в выводе команды smartctl -c /dev/sda в разделе “Offline data collection capabilities” есть отметка о “Self-test supported” – это подтверждает, что проверяемый винчестер поддерживает SMART. Если smartctl не понимает какой у вас винчестер можно ей помочь указав через флаг -d (–device=) его тип. Наиболее распространенные: ata/scsi/sat, полный список в man smartctl.
Запуск краткого тестирования:
smartctl -t short /dev/sda
Запуск подробного тестирования:
smartctl -t long /dev/sda
Вывод результатов тестирования:
smartctl -l selftest /dev/sda
Вот там разобраны некоторые интересные моменты по смарт-технологии:
http://sourceforge.net/apps/trac/smartmontools/wiki/FAQ
3) Программы сканирующие жесткий диск на наличие bad-блоков для Windows:
MHDD, Victoria, Vivard
3.1 Если на винчестере не обнаружено bad-секторов, но файловая система повреждена и ее необходимо восстановить.
То есть нам нужны не только данные, но и их названия, системные файлы, программы, дерево папок и т.п.
Если данные очень-очень важны – настоятельно рекомендуется сделать копию диска и работать с ней. Как это сделать описано в следующем разделе. Все что указано ниже – используется на оригинальном накопителе.
1) для NTFS-разделов запустить из под Windows
chkdsk /f DRIVE-LETTER: (chkdsk /f C:)
/f – этот флаг указывает, что необходимо исправлять ошибки на жестком диске
DRIVE-LETTER – буква диска
2) Под линуксом для NTFS разделов есть утилита ntfsfix из пакета ntfsprogs. Запускать как:
ntfsfix /dev/sda
По моему опыту – родная проверка из под Windows в большинстве случаев оказывается более эффективной.
3) Под линуксом, если файловая система линукс-специфичная, можно попробовать запустить e2fsck с флагом -c (или -cc) будет проведена проверка всего диска. Все найденные поврежденные сектора будут занесены в специальный список и не будут доступны для работы.
4) Под линуксом для других типов разделов необходимо использовать утилиту fsck. Она самостоятельно пробует определить тип файловой системы и соответствующим образом проводит проверку и восстановление структуры файловой системы.
5) Если все вышеописанное не помогло – обратимся к тяжелой “артелерии” – утилите testdisk:
- Запускаете програму testdisk (testdisk.exe под Windows)
- Выбираете создать новый лог-файл (при перезапуске выбирайте пункт “Добавлять к существующему”, это позволит возобновлять остановленные проверки не с начала)
- Выбираете диск для анализа
- Выбираете тип раздела (для обычных бытовых винчестеров скорее всего обычный Intel)
- Выбираем первый пункт – Analyse
- Далее вам будем отображена текущая разметка диска – если вас не устраивает, что вы видете – выбирайте пункт “quick search” при выборе которого запускается быстрая проверка винчестера на предмет поврежденных разделов
- Как правило быстрый поиск ничего не дает и приходится прибегать к deeper search, который занимает существенно больше времени однако, если на винчестере нет механических повреждений способен эффективно восстанавливать структуру файловой системы.
- После завершения поиска полезно проверить содержимое разделов – нажимаем кнопку P и изучаем список обнаруженных на разделе файлов.
- Если результаты нас устраивают – найденным разделам, которые нам нужны, с помощью стрелок “влево-вправо”, необходимо присвоить соответствующий статус. L – логический, * – загрузочный и т.д. Некорректные разделы – помечаем как D – deleted – удаленные.
- Важно после этого записать все изменения разметки диска – выбираем пункт write
- Перезагружаемся
- Если же результаты нас не устраивают – придется вручную указывать характеристики диска – число цилиндров, тип файловой системы и после этого вновь запускать глубокий поиск.
В том случае, если NTFS раздел не определяется после восстановления структуры с помощьюtestdisk, необходимо, после перезагрузки в Windows, запустить “родную” проверку диска – chkdsk.
Вот там прекрасное описание (на английскомй) со скриншотами: http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step
Платные утилиты:
Acronis Disk Director, Active Partition Recovery
3.2 Если винчестер без bad-секторов, файловая система повреждена, но нам нужны только данные и необходимости восстанавливать сам раздел нужды нет.
Для восстановления данных из разделов мы можем использовать следующие утилиты:
Photorec, foremost, scalpel, scrounge-ntfs – детальное описание в разделе 5: Как восстановить данные с жесткого диска или образа диска применительно к созданному образу винчестера. Для восстановления данных непосредственно с устройства, порядок действий тот же, просто вместо файла содержащего побайтовую копию накопителя, необходимо указывать идентификатор устройства.
под Windows:
Recuva
Платные:
Get data back, R-studio
4. Что делать если на винчестере обнаружены bad-блоки?
Для начала, необходимо создать копию всего жесткого диска, чтобы работать с ней и проблемы железа не отражались на скорости анализа, не усугубляли здоровье винчестера и т.д.
Копируем жесткий диск:
1 вариант – с помощью dd:
dd if=/dev/sdg of=/dev/sda bs=8K conv=noerror,sync
/dev/sdg – ЧТО будем зеркалить
/dev/sda – КУДА будем зеркалить
bs=8K – указываем размер блоков данных для считывания/записи.
noerror – флаг указывает что не смотря на ошибки копирование должно быть завершено
sync – флаг указывает, что в проблемные блоки можно понавтыкать нулей, чтоб не возникло смещений на приемнике.
2-ой вариант – делать копию диска с помощью ddrescue. Данная утилита корректно обрабатывает аппаратные ошибки чтения, способна производить реверсивное копирование и может быть гибко настроена с помощью соответствующих ключей. Для копирования диска с механическими повреждениями рекомендуется использовать именно ее – так как многие проверки в ней активизированы по умолчанию и вам нет нужды, заслышав пощелкивание головок, перезапускать реверсивное копирование или явно указывать о необходимости пропустить участок с ошибками.
В общем случае, достаточно такой последовательности команд:
Копируем свободные от ошибок блоки данных:
ddrescue –no-split /dev/sdg /path/to/image-file/image-file /path/to/log-file/log-file
Далее пробуем считывать проблемные сектора добавляя вычитанные данные к существующему образу и используя созданный на предыдущем шаге лог-файл.
ddrescue –direct –max-retries=3 /dev/sdg /path/to/image-file/image-file /path/to/log-file/log-file
ddrescue –direct –retrim –max-retries=3 /dev/sdg /path/to/image-file/image-file /path/to/log-file/log-file
–no-split – указываем заполнять не считанные области нулями (в расчет на то, что при последующей попытке удастся часть данных считать)
–max-retries – максимальное число попыток считывания
–direct -считываем напрямую с устройства, не используя данные считанные на предыдущих этапах из кеша
–retrim – помечаем все битые блоки
Там достаточно подробно описаны детали использования утилиты ddrescue в зависимости от ядра линукс системы, которые вы используете: http://www.forensicswiki.org/wiki/Ddrescue
После того как был создан образ проблемного диска на здоровом носителе, сбойный жесткий диск необходимо от системы отключить.
5. Как восстановить данные с жесткого диска или образа диска.
Нижеописанные приемы подходят не только для использования при восстановлении данных с копии жесткого диска, но и для работы непосредственно с винчестером, однако, настоятельно рекомендуется для сохранности данных и ускорения анализа – все-таки сделать образ жесткого диска и работать с ней.
Итак, у нас есть:
/user/home/badhdd.img – копия винчестера, которую мы побайтово считали на предыдущем (линк) этапе (можно использовать и идентификатор проблемного жесткого диска – /dev/sdw).
/dev/sdz – чистый диск, на который мы будем записывать всю информацию найденную на копии жесткого диска.
Очищаем диск-приемник:
dd if=/dev/zero of=/dev/sdz bs=8K (аккуратней – эта команда удаляет ВСЕ данные на вашем винчестере)
Теперь пришла пора искать данные:
1). Используя утилиту foremost – мощный инструмент для поиска скрытых данных на шифрованных разделах. Общий формат команды:
sudo foremost -i (address of corrupted hard drive) -o (address of external drive) -T -v
в нашем случае будет:
sudo foremost -i /user/home/badhdd.img -o /dev/sdz -T -v
-T – временная метка будет добавлена к имени выходного каталога, что исключает возможность перезатирания восстановленных данных при повторном перезапуске
-v – verbose mode – при работе будет выводиться подробная информация
Можно указать искать файлы определенного типа (флаг -t), указать искать заголовки файлов, пропустив заданное число блоков в начале устройства (флаг -s), для ускорения процесса можно указать флаг -k размер блока данных считываемый в память. Перед началом анализа полезно запускать foremost с флагом -w – будет выведен список обнаруженных файлов, которые foremost может попытаться восстановить.
2) scalpel – аналог foremost, ориентированный на слабые машины.
3) Программа photorec, ее интерфейс очень похож на testdisk:
- Запускаем photorec (photorec.exe под windows)
- Выбираем интересующий нас диск
- Выбираем тип раздела (в большинстве случаев, для бытовых винчестеров – Intel)
- Выбираем раздел диска в котором хотим искать данные
- В разделе FileOpt мы можем выбрать какие типы файлов мы хотим восстанавливать
- Далее мы выбираем в какой файловой системе на выбранном ранее разделе хранятся наши данные
- Выбираем где искать данные – во всем разделе или только в области помеченной как нераспределенная
- Наконец выбираем куда сохранять найденные данные
Подробное описание со скриншотами на английском – там – http://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step
Photorec может быть запущена для анализа образа диска как:
photorec /path/to/my-image/image.dd
6. Ссылки по теме восстановление данных с винчестера
Список утилит для восстановления данных – http://www.forensicswiki.org/wiki/Tools:Data_Recovery
Подробная статья про восстановление данных используя Ubuntu: https://help.ubuntu.com/community/DataRecovery
Неплохие статьи про восстановление информации:
http://www.howtogeek.com/howto/15761/recover-data-like-a-forensics-expert-using-an-ubuntu-live-cd/
http://geekyprojects.com/storage/how-to-recover-data-even-when-hard-drive-is-damaged/
Здесь подробно расписано про восстановление данных с файловых систем ext2/ext3/ReiserFS: http://smartmontools.sourceforge.net/badblockhowto.html
Любопытный пример описания того, как извлечь скрытые данные с помощью foremost: http://mydebianblog.blogspot.com/2007/01/1-foremost.html
В интернетах бродят сборки всяческих средств для восстанавления данных – можно искать по этим словам:
alkid live cd
rescue cd – http://www.sysresccd.org/Main_Page
Записки ремонтника:
http://nnm.ru/blogs/X-Hunter777/zapiski-remontnika-iz-rabochego-zhurnala/
http://nnm.ru/blogs/X-Hunter777/zapiski-remontnika-iz-rabochego-zhurnala-chast-2/