Восстановление поврежденного раздела NTFS, если его уменьшили до минимального размера (0 байт свободно)

в 14:52, , рубрики: ntfs, Восстановление данных, восстановление жесткого диска, восстановление разделов hdd, ошибка монтирования NTFS, хранение данных

При перераспределении разделов жесткого диска на ноутбуке, я, по невнимательности, совсем не оставил свободного места под раздел с файловой системой NTFS. Система на тот момент стояла Linux Mint 18, хотя, по сути, это не имеет значения. После перераспределения места, я ужаснулся. При попытке примонтировать этот раздел, мне выдавало ошибку:

Не удалось присоединить Том 101 ГБ

Error mounting /dev/sda4 at /media/dashka/B490E48B90E45600: Command-line `mount -t «ntfs» -o «uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000» "/dev/sda4" "/media/dashka/B490E48B90E45600"' exited with non-zero exit status 13: Failed to load runlist for $MFT/$DATA.
highest_vcn = 0x204f, last_vcn — 1 = 0x263f
Failed to load $MFT: Ошибка ввода/вывода
Failed to mount '/dev/sda4': Ошибка ввода/вывода
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.

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

Если на пострадавшем компьютере достаточно места

В этом случае качаем утилиту testdisk.

Далее желательно сделать точный бэкап поврежденного раздела на внешний носитель, как это правильно сделать, я более подробно опишу во втором способе, когда нам не хватает места. С этой утилитой все понятно, мне даже компилировать ее не пришлось. Я просто запустил исполняемый файл testdisk_static. Далее можно и самому разобраться. Если же не сработало, то следует использовать утилиту photorec. Запускается она так же, и идет в комплекте с утилитой testdisk, в той же папке. Минусы утилиты photorec — неполное восстановление, то есть все файлы будут вперемешку и утеряются дата создания, изменения, название и прочее. Максимум, что можно — это отсортировать, что куда.

mv /путь/к/восстановленным/файлам/*.{jpg,png} ./Photo
mv /путь/к/восстановленным/файлам/*.mov ./Видео Нокия
mv /путь/к/восстановленным/файлам/*.mp4 ./Фильмы

И т.п.

Если на пострадавшем компьютере недостаточно места

В целом, все аналогично первому варианту, НО: для начала нужно сделать точную копию битого раздела с пострадавшего компьютера на компьютер, где достаточно памяти для проделывания операций выше. Это можно сделать, подключив компьютеры проводом USB-на-USB, по локальной сети, или через интернет. Я не особый умелец, поэтому для второго варианта я додумался только использовать ssh.

Как сделать этот бэкап

sudo dd if=/dev/sdaX bs=8192 | ssh hostname 'dd of=/home/user/backup.iso bs=8192' && echo 'all right' > ~/DD.log || echo 'Неудача' > ~/DD.log; ssh hostname poweroff; sudo shutdown

X — номер поврежденного раздела, смотреть в программах по типу GParted или в описании самой ошибки. ssh hostname — заменяется на вашу конфигурацию ssh(в моем случае это 'ssh -p 31182 -i .ssh/id_rsa nikitosios@192.168.1.10'). Бэкап 100 ГБ у меня занял всю ночь, около 10-11 часов.

Пояснение к коду выше и некоторые полезности

Самое важное, что стоит сказать: чтобы отслеживать процесс бэкапа, нужно:

1) Запустить еще один терминал.

2) Прописать ps -a и найти PID утилиты dd.

3) Прописать while true; do sudo kill -USR1 [PID утилиты dd] ; sleep 10; done и ввести пароль.

4) Смотреть на процесс выполнения в терминале, где работает утилита dd.

&& echo 'all right' > ~/DD.log || echo 'Неудача' > ~/DD.log — команда, чтобы утром глянуть, все ли нормально cкопировалось, или нет. Результат будет записан в файле DD.log в домашней папке.

ssh hostname poweroff; sudo shutdown — выключить компьютеры.

Хорошо, у нас есть точная копия раздела. Что дальше с ней делать-то? А тут мне пришлось сделать довольно хитрый ход. Поскольку testdisk и photorec ищут только устройства, подключенные к ПК, нужно выставить наш образ как устройство. Для этого я создал вот такую символическую ссылку:

 ln -s /dev/sdv /home/user/backup.iso

Хитро, не правда ли? Теперь можно смело восстанавливать наш /dev/sdv по примеру, описанному под заголовком «Если на пострадавшем компьютере достаточно места».

P.S. С тестдиском придется потанцевать, так что для начала лучше восстановить все photorec'ом, и, если результат вас не устроит, то можно танцевать с testdisk'oм.

Ну, вот и все. Надеюсь, кому-то поможет этот пост.

Автор: Nikitosios

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js