История такова.
Имеется дохлый диск на 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 таким образом? о_О
Религия не позволяет? =\
Разделить процесс на 2 части
1. losetup
2. mount.Дело в том, что option при монтировании зависит от типа файловой системы и возможно это является проблемой.
Дело в том, что лично я не пробовал монтировать ntfs....
но с losetup ему просто будет некуда деться :)
>Разделить процесс на 2 части
>1. losetup
>2. mount.
>
>Дело в том, что option при монтировании зависит от типа файловой системы
>и возможно это является проблемой.
>Дело в том, что лично я не пробовал монтировать ntfs....
>но с losetup ему просто будет некуда деться :)Я кажется понял в чём проблема. но пока не знаю с помощью чего её решить. ПОхоже при копировании инфы с помощью dd блоками по 64кб, данные частично теряются в случае ошибки чтения на любом секторе в этих 64 кб, то есть всего 128 секторов. Если в каком-то из них имеются ошибки чтения, то dd весь блок 64 кб забиваем нулями.
При копировании имеются ошибки данных в районе 3гб.
MFT распологается с 786432 по 8445921 сектор, соответственно как раз находится в области повреждённых данных.Если dd частично не копирует данные, то видимо важный кусок MFT повреждён.
Пытался копировать по 512 байт, но на 61 гигабайте скорость сильно снижается либо не копируется, либо отключается прерывание о_О по непонятой причине и система виснет.От этого всего становится немного грустно и хочется написать самому прогу, но может быть всё же есть такая прога. Нужно чтоб умела копировать большими блоками данных, но в случае нечитаемости сектора, зануляла только этот сектор, а не весь блок.
нашёл прогу ddrescue буду пробывать. если не отвечу значит всё ок)