При перераспределении разделов жесткого диска на ноутбуке, я, по невнимательности, совсем не оставил свободного места под раздел с файловой системой 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.img 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.img

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

Для начала советую попробовать метод пользователя S-trace:
Поставить VirtualBox, в него поставить windows (идеологическую сторону отбросим — вопрос стоИт чисто технический), затем (после установки windows) пробросить физический диск в виртуалку при помощи команды vboxmanage internalcommands createrawvmdk -filename ~/sda.vmdk -rawdisk /dev/sda (возможно придётся немного пободаться с несущей системой за право прямого доступа к /dev/sda).
a) Из под windows попробовать провести chkdsk этому разделу
b) Или же расширить его обратно при помощи стандартных средств работы с диском
c) Если раздел смонтировался, но не доступен для записи — можно провести копирование данных через «общую папку» VirtualBox или по сети между виртуалкой и несщуей системой.

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

Ну, вот и все. Надеюсь, кому-то поможет этот пост.
Поделиться с друзьями
-->

Комментарии (36)


  1. alltiptop
    14.11.2016 18:04
    +1

    понимаю, то «так исторически сложилось», но зачем ntfs раздел на ноутбуке вовсе без венды?


    1. AllexIn
      14.11.2016 18:21

      Был NTFS — винду убрали, раздел остался.
      Зачем его убирать? Просто чтобы не было?


      1. equeim
        16.11.2016 21:13

        Хотя бы потому, что NTFS в GNU/Linux работает чрезвычайно медленно.


        1. Nikitosios
          16.11.2016 21:15

          Была винда, поставил линукс, а раздел не монтируется. Ну а дальше при первой же возможности следует убрать NTFS и перенести всю инфу с него на раздел Ext4.


  1. dartraiden
    14.11.2016 18:17

    Минусы утилиты photorec — неполное восстановление, то есть все файлы будут вперемешку и утеряются дата создания, изменения, название и прочее. Максимум, что можно — это отсортировать, что куда.

    Я бы сначала попробовал загрузиться с Windows LiveCD (тысячи их) и пройтись R-Studio/UFS Explorer/DMDE. Впрочем, эти утилиты (они платные) есть и для Linux. Сталкивался с ситуацией, когда там, где photorec предлагал восстановить лишь файлы по типам, R-Studio запросто восстанавливала полную структуру каталогов.


    1. AllexIn
      14.11.2016 18:22

      R-Studio очень хорошо. Покупал их и активно пользовался. Лучше софта для восстановления не видел. Единственный минус — не развиваются уже лет пять. Новые фс вообще не видит и не понимает. :(


      1. dartraiden
        14.11.2016 18:27
        +1

        Так получилось, что я слежу за актуальностью варёзного топика по этой утилите на ру-борде. Обновления выходят регулярно под все платформы (Windows/Linux/Mac), как для самой R-Studio, так и для её агента, позволяющего подключаться к удалённым машинам, где он запущен. Загрузочный диск обновляется реже, но тоже от 2016 года.

        Список поддерживаемых ФС: NTFS, NTFS5, ReFS, FAT12/16/32, exFAT, HFS/HFS+ (Macintosh), Little and Big Endian variants of UFS1/UFS2 (FreeBSD/OpenBSD/NetBSD/Solaris) и Ext2/Ext3/Ext4 FS (Linux).

        Есть, как видно, даже поддержка достаточно новой ReFS. Не хватает Btrfs и F2FS, согласен.


        1. AllexIn
          14.11.2016 18:31

          ZFS, XFZ, Btrfs… нету
          ReFS — как разу же пять лет почти.
          R-Studio обновляют минорно ИМХО. Добавляют новые модификации уже поддерживаемых фс и всё(ReFS единственное исключение).


  1. Fedcomp
    14.11.2016 19:24

    Ну и все же не .iso, а уж тогда .img


    1. Nikitosios
      15.11.2016 17:28

      В данном случае особой разницы нет, но да, согласен.


  1. kesn
    14.11.2016 19:24

    dd имеет ключ status=progress


    1. Prototik
      15.11.2016 02:32

      Справедливости ради стоит заметить, что ключ status относительно новый в dd и ещё не все дистрибутивы имеют в своём составе подходящую версию.


      1. Tihon_V
        15.11.2016 09:39

        dd_rescue.


    1. sadon
      15.11.2016 17:15

      Если имеется Linux скажем 2012года, то — да, ключа 'status' нет.
      В этом случае я предпочитаю открывать во втором терминале такую команду:

      sudo watch 'kill -USR1 <PID_dd>'
      


    1. crazylh
      15.11.2016 17:15

      Если соотвествующая версия CoreUtils. В Busybox такого ключа например нет


  1. DanXai
    15.11.2016 09:17
    +1

    Я не понял вот этого:

    подключив компьютеры проводом USB-на-USB
    . Это как?


    1. Nikitosios
      15.11.2016 17:16

      Есть провод USB-на-MicroUSB, это обычный USB для смартфона. И есть провод, где с обоих сторон стандартный USB. Об этом проводе и написано в цитате.


      1. DanXai
        15.11.2016 17:47
        +1

        Угу. «Стандартный». Хотите сказать, если я раздраконю два кабеля Usb-MicroUSB и соберу USB-USB, то смогу передавать информацию с компа на комп? Ерунда какая! Без специального контроллера и драйверов на него в системе это невозможно.


        1. Nikitosios
          16.11.2016 21:18

          Нет, не хочу я так сказать. Вы правы, но суть та же. Это кабель USB-на-USB, я не стал подробно писать, что за кабель


  1. orthanner
    15.11.2016 11:50

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

    losetup же


  1. rrrav
    15.11.2016 13:21

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

    — здесь не перепутаны случаем TARGET и DIRECTORY?


    1. Nikitosios
      15.11.2016 17:17

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


  1. crlam0
    15.11.2016 17:18

    Не совсем в тему топика, но все же может кому-нибудь будет полезно: неделю назад столкнулся с такой проблемой: надо было изменить размер раздела NTFS в большую сторону, с 64гб до 128гб. Дело элементарное: LiveCD->GParted->Resize, но! Раздел был до этого склонирован CloneZilla с бэдового HDD, и заодно скопировались данные о bad секторах исходного NTFS раздела. GParted отказался изменять размер раздела. Не долго думая я попробовал изменить размер с помощью Acronis Disk Director. В конце операции он выдал ошибку, но размер раздела изменил. Казалось бы победа, но Win7 увидела только исходные 64гб, хотя в диспетчере дисков раздел нужного размера. Помог опять же LiveCD, в котором я сделал ntfsfix -b -d /dev/sdaX: -b очищает список bad секторов (жесткий уже новый), -v помечает партицию как проверенную (после клонирования раздел неоднократно проверялся виндовым chkdsk, тот ошибок не выдавал). После этого я спокойно в Acronis DD изменил размер раздела в меньшую, а потом и в большую сторону.

    Способ костыльный, но время у меня было ограничено. Если бы времени было больше, скорее всего без всякого ntfsfix можно было обойтись chkdsk /R, хотя вряд ли бы он пометил фантомные bad сектора как рабочие.

    P.S. В качестве LiveCD был использован SystemRescueCD 4.7.0.

    P.P.S. Я сначала попробовал способ, найденный на StackOverflow: Консоль восстановления с установочного DVD -> diskpart -> select disk # -> select partition #-> expand, не было ни ошибок, ни толку :( Вместо # понятное дело были актуальные номера.


    1. Angel2S2
      16.11.2016 12:32

      Не знаю, на сколько актуально будет в вашем случае… Мне бывает нужно увеличить размер диска на виртуальных машинах (win 7 — 2012)… После загрузки винды (в ВМ) открываю администрирование -> управление компьютером -> управление дисками и там выбираю «расширить том» («на горячую»). Никаких проблем не возникает. Хотя, перед этим, все равно делаю снапшот ВМ.


      1. crlam0
        16.11.2016 13:23

        Вы не совсем поняли: флаги bad секторов скопировались на раздел, с ним ни одна нормальная система не должна позволить что-то сделать, но Acronis DD позволил, в итоге и возникла странная ситуация. В этом и посыл моего комментария, ntfsfix -b -d решил проблему.

        На счет резервных копий у меня проблем небыло: КлонЗиллой скопированный бэдовый винт был перед глазами. Если бы ничего не получилось то тогда тяжелая артиллерия в виде ddrescue,


        1. Angel2S2
          16.11.2016 14:05

          На счет бэдов упустил. Впредь буду внимательнее.

          Честно сказать, я всегда считал, что информация о bad секторах заносится в контроллер диска или что-то такое (в тонкости не вдавался) и никак не связана с ФС. Все же bad сектор располагается на более низком уровне, чем ФС и разделы. А значит, и клонзила не должна была бэды скопировать, все же она уровнем выше, нежели бэды. Не знаю как сейчас, но раньше в клонзилле был набор утилит для разных ФС, которые и запускались, в зависимости от того, какая ФС на разделе диска. Помню в expert mode можно было выбрать, что использовать для клонирования, что-то типа ntfsclone, dd, partclone и т.п.


          1. crlam0
            16.11.2016 17:29

            На счет КлонЗиллы Вы абсолютно правы: она ntfclone использует. Но NTFS, да и FAT я думаю, на своем уровне хранят данные о BAD секторах, просто для того чтобы к ним больше не обращаться. На уровне контроллера жесткого REMAP умеют не все, но он делается прозрачно для ФС. Иногда с помощью той же Виктории можно заставить его сделать, но отнюдь не всегда. В любом случае если пошли ремапы — винт кладется на полку.


            1. Angel2S2
              16.11.2016 18:13

              Я изначально и говорил о remap'ах. Хотя выразился не ясно, да.

              Теперь понял… Вы говорили об уровне ФС, а я сразу о железном уровне подумал, про remap'ы, т.к. прочно забыл, что ФС тоже умеет избегать бэдов.

              Спасибо, освежили мне память :)


  1. S-trace
    15.11.2016 17:20
    +1

    Жаль, что в статье абсолютно не раскрыта её тема.

    Нет ни одного упоминания о восстановлении повреждённого раздела NTFS, если его уменьшили до минимального размера, вся суть статьи сводится к фразе «используйте программы для восстановления данных чтобы вытащить свои данные оттуда».

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

    Что ещё можно было бы попробовать, прежде чем применять testdisk:
    0. Попробовать увеличить раздел обратно через gparted, к примеру.
    1. Попробовать смонтировать раздел на чтение при помощи ядерного драйвера NTFS
    2. Поставить VirtualBox, в него поставить windows (идеологическую сторону отбросим — вопрос стоИт чисто технический), затем (после установки windows) пробросить физический диск в виртуалку при помощи команды vboxmanage internalcommands createrawvmdk -filename ~/sda.vmdk -rawdisk /dev/sda (возможно придётся немного пободаться с несущей системой за право прямого доступа к /dev/sda).
    2a. Из под windows попробовать провести chkdsk этому разделу
    2b. Или же расширить его обратно при помощи стандартных средств работы с диском
    2c. Если раздел смонтировался, но не доступен для записи — можно провести копирование данных через «общую папку» VirtualBox или по сети между виртуалкой и несщуей системой.


    1. Nikitosios
      15.11.2016 17:20

      0 и 1 в данном случае не сработает. 2 — годный вариант, добавил в пост.


    1. Nikitosios
      15.11.2016 17:27

      Про раскрытие темы: я в файловых системах особо не разбираюсь, поэтому предоставляю это другим людям.


  1. Vevin
    15.11.2016 17:24

    Live CD и Active Recovery File (Partition), мне обычно помогали в восстановлении разделов, либо файлов.


  1. davydt
    15.11.2016 17:24

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


  1. Repairkomp
    15.11.2016 17:24

    А не проще ли было воспользоваться программой R.saver?


    1. Nikitosios
      15.11.2016 17:26

      Когда имелась эта проблема, не знал о такой программе. Не могу точно утверждать, поможет или нет.


  1. Radjah
    16.11.2016 21:21

    Ставить винду было совсем неохота

    Загружаем установщик с диска/флешки
    Нажимаем Shift+F10
    ?????
    PROFIT!