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

При перерозподілі розділів жорсткого диска на ноутбуці, я, по неуважності, зовсім не залишив вільного місця під розділ з файловою системою 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 в 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 under the device /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
— команда, щоб вранці глянути, чи все нормально скопировалось, чи ні. Результат буде записаний у файлі DD.log в домашній папці.

ssh hostname poweroff; sudo shutdown
— вимкнути комп'ютери.

Добре, у нас є точна копія розділу. Що далі з нею робити? А тут мені довелося зробити досить хитрий хід. Оскільки testdisk і photorec шукають тільки пристрої, підключені до ПК, потрібно виставити наш образ як пристрій. Для цього я створив ось таку символічну посилання:

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

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

p.s. З тестдиском доведеться потанцювати, так що для початку краще відновити всі photorec'ом, і, якщо результат вас не влаштує, то можна танцювати з testdisk'ом.

Ну, ось і все. Сподіваюся, кому-то допоможе цей пост.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.