URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 80680
[ Назад ]

Исходное сообщение
"Монтирование образа ntfs диска под linux"

Отправлено Mafet , 09-Июн-08 23:45 
История такова.
Имеется дохлый диск на 250 гигов. При обращении к нему - жосткие маты на тему битых секторов.
Возникла мысль скопировать его на локальную систему и курочить локально, но.
ось gentoo 2.6.24-gentoo-r8
Хард:
Model Family:     Maxtor MaXLine Plus II
Device Model:     Maxtor 7Y250P0
User Capacity:    251000193024 bytes
-----
fs ~ # fdisk -lu /dev/hdc

Диск /dev/hdc: 251.0 ГБ, 251000193024 байт
255 heads, 63 sectors/track, 30515 cylinders, всего 490234752 секторов
Units = секторы of 1 * 512 = 512 bytes
Disk identifier: 0x5f8f3408

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/hdc1           16065   490223474   245103705    f  W95 расшир. (LBA)
/dev/hdc5           16128   490223474   245103673+   7  HPFS/NTFS
-----
Снимал образ так:
dd if=/dev/hdc of=/mnt/disk2/hdd200.img conv=sync,noerror bs=64k
dd if=/dev/hdc of=/mnt/disk2/hdd200.img conv=sync,noerror seek=490233728 skip=490233728 bs=512

Вторая команда нужна была для того чтоб докачать оставшиеся байты.
В итоге получился такой файлик:
-----
-rw-r--r-- 1 root root 251000193024 Июн  9 22:54 /mnt/disk2/hdd200.img
-----
Файл является образом всего диска а не только раздела с ntfs, поэтому вычисляем offset.
Он равен 16128*512=8257536байт (начало раздела ntfs)
Пытаемся смотрировать его:
-----
fs ~ # mount -t ntfs -o loop,ro,offset=$((512*16128)) /mnt/disk2/hdd200.img /mnt/loop/  
mount: wrong fs type, bad option, bad superblock on /dev/loop2,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде
-----
Для проверки делаем то же самое на живом диске:
-----
fs ~ # mount -t ntfs -o loop,ro,offset=$((512*16128)) /dev/hdc /mnt/loop/
fs ~ # umount /mnt/loop/
-----
Монтируется о_О
Сравниваем несколько первых байт образа и диска:
-----
fs ~ # dd if=/dev/hdc count=$((16128+100000)) > /tmp/1
116128+0 записей считано
116128+0 записей написано
скопировано 59457536 байт (59 MB), 1,80629 c, 32,9 MB/c
fs ~ # dd if=/mnt/disk2/hdd200.img count=$((16128+100000)) > /tmp/2
116128+0 записей считано
116128+0 записей написано
скопировано 59457536 байт (59 MB), 0,963791 c, 61,7 MB/c
fs ~ #
-----
Сравниваем md5 сумму
-----
fs ~ # md5sum /tmp/2
454eb61b71055ffe236bc0fdb9877cbe  /tmp/2
fs ~ # md5sum /tmp/1
454eb61b71055ffe236bc0fdb9877cbe  /tmp/1
-----
Логично видим что она одинаковая.
Для успокоения души берём раздел ext3
-----
fs ~ # fdisk -lu /dev/hda

Диск /dev/hda: 80.0 ГБ, 80026361856 байт
255 heads, 63 sectors/track, 9729 cylinders, всего 156301488 секторов
Units = секторы of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/hda1   *          63      128519       64228+  83  Linux
...
fs ~ # df
Файловая система     1K-блоков      Исп  Доступно  Исп% смонтирована на
...
/dev/hda1                62193     13018     45964  23% /boot
...
-----
fs ~ # dd if=/dev/hda of=/mnt/disk2/hda-test.img count=2000 bs=64k
2000+0 записей считано
2000+0 записей написано
скопировано 131072000 байт (131 MB), 1,53633 c, 85,3 MB/c
fs ~ # mount -o loop,offset=$((63*512)) /mnt/disk2/hda-test.img /mnt/loop/
fs ~ # mount -o loop,offset=$((63*512)) /dev/hda /mnt/loop/
fs ~ # df
...
/dev/hda1                62193     13018     45964  23% /boot
/mnt/disk2/hda-test.img  62193     13018     45964  23% /mnt/loop
/dev/hda                 62193     13018     45964  23% /mnt/loop
------------
Почему оно не хочет упорно монтировать ntfs таким образом? о_О
Религия не позволяет? =\


Содержание

Сообщения в этом обсуждении
"Монтирование образа ntfs диска под linux"
Отправлено vbv , 16-Июн-08 00:47 
Разделить процесс на 2 части
1. losetup
2. mount.

Дело в том, что option при монтировании зависит от типа файловой системы и возможно это является проблемой.
Дело в том, что лично я не пробовал монтировать ntfs....
но с losetup ему просто будет некуда деться :)


"Монтирование образа ntfs диска под linux"
Отправлено Mafet , 17-Июн-08 00:06 
>Разделить процесс на 2 части
>1. losetup
>2. mount.
>
>Дело в том, что option при монтировании зависит от типа файловой системы
>и возможно это является проблемой.
>Дело в том, что лично я не пробовал монтировать ntfs....
>но с losetup ему просто будет некуда деться :)

Я кажется понял в чём проблема. но пока не знаю с помощью чего её решить. ПОхоже при копировании инфы с помощью dd блоками по 64кб, данные частично теряются в случае ошибки чтения на любом секторе в этих 64 кб, то есть всего 128 секторов. Если в каком-то из них имеются ошибки чтения, то dd весь блок 64 кб забиваем нулями.

При копировании имеются ошибки данных в районе 3гб.
MFT распологается с 786432 по 8445921 сектор, соответственно как раз находится в области повреждённых данных.

Если dd частично не копирует данные, то видимо важный кусок MFT повреждён.
Пытался копировать по 512 байт, но на 61 гигабайте скорость сильно снижается либо не копируется, либо отключается прерывание о_О по непонятой причине и система виснет.

От этого всего становится немного грустно и хочется написать самому прогу, но может быть всё же есть такая прога. Нужно чтоб умела копировать большими блоками данных, но в случае нечитаемости сектора, зануляла только этот сектор, а не весь блок.


"Монтирование образа ntfs диска под linux"
Отправлено Mafet , 17-Июн-08 00:28 
нашёл прогу ddrescue буду пробывать. если не отвечу значит всё ок)