LINUX.ORG.RU

проблемы с жестким диском


0

1

короче получилось так что содержимое /home оказалось на краю винта (на отдельном разделе). цель была записать все на единственный раздел, но проблема в том что та часть ЖД на которую я временно переписал содержимое /home оказалась 'битая' и теперь я не могу копировать ее оттуда так как, при попытке чтения некоторых файлов возникает input/output error (утилита cp), система почти полностью зависает (думаю потому что не может считать с ЖД), а консоль засыпает исключениями (ctrl+f1)

цель копировать максимально возможное количество инфы из раздела sda7 на раздел sda6 в папку home. советовали утилиту dd но я не знаю как с помощью нее копировать в папку. также желательно получить список поврежденных файлов

и как отменить чтения из раздела? я не могу отмонтировать раздел потому что то что-то пробует читать его в фоне (в консоли выбивает исключение... я о ctrl + f1)

зарание спасиба;)



Последнее исправление: ADR (всего исправлений: 2)

Тёзка, поисправляй орфографические ошибки, пожалуйста.

dd делает посекторный образ раздела.
man dd гласит, что будучи запущенным с опцией conv=sync,noerror, dd посекторно скопирует твой битый раздел, вместо нечитаемых блоков вставляя нули, тем самым сохраняя суммарный размер образа.
Затем ты смонтируешь образ раздела на петлевом устройстве и унесёшь, что сможешь.

# dd if=/dev/sda7 of=/mnt/destination_dir/sda7_img conv=sync,noerror bs=512
# mount -t ext3 /mnt/destination_dir/sda7_img /mnt/loop_mount_point -o ro,loop
Как-то так. /mnt/destination_dir/, /mnt/loop_mount_point - должны уже существовать. Если чё забыл, исправляйте.

adriano32 ★★★
()
Ответ на: комментарий от adriano32

а диск виртуалбокса можно смонтировать? и как узнать хэш файла? (для проверки целостности) или может есть какой-нибуть другой способ получить список файлов записанных с ошібкой?

ADR
() автор топика
Ответ на: комментарий от ADR

а диск виртуалбокса можно смонтировать?

Разрешаю:[code=bash]# mount -t <filesystem> /home/<user>/.VirtualBox/VDI/someone_virtual_disk.vdi /mnt/loop_mount_point -o ro,loop,offset=49152[/code]49152 = 96секторов*512байт на сектор. 96 потому что формат дисков виртуалбокса предполагает первые 32 сектора под нужды виртуалюокса (таблицы символов вроде), затем 64 сектора смещения раздела (если дефолтно размечено). В общем случае на месте 49152 будет стартовый сектор раздела при нумерации с единицы(или с нуля и прибавить один) * 512.
<filesystem> - ext3|ext2|vfat|ntfs-3g или что там у тебя. /mnt/loop_mount_point должен быть создан заранее.

adriano32 ★★★
()
Ответ на: комментарий от ADR

и как узнать хэш файла? (для проверки целостности) или может есть какой-нибуть другой способ получить список файлов записанных с ошібкой?

А с чем сравнивать будешь чексумму-то?

Как смонтируешь образ раздела, снятый при помощи dd, прогони по смонтированномe fsck с исправлением ошибок, МБ укажет на неверные чексуммы.

А так md5sum, sha**sum итп

adriano32 ★★★
()
Ответ на: комментарий от adriano32

[code]root@ubuntu:/home/ubuntu# mount -t ntfs-3g '/media/Home/home/adr/.VirtualBox/HardDisks/WinXP2.vdi' /virtual -o ro,loop,offset=49152 NTFS signature is missing. Failed to mount '/dev/loop1': Invalid argument The device '/dev/loop1' doesn't seem to have a valid NTFS. Maybe the wrong device is used? Or the whole disk instead of a partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?[/code]

ADR
() автор топика
Ответ на: комментарий от adriano32

root@ubuntu:/mnt/home/adr# dd if=/media/Home/home/adr/.VirtualBox/HardDisks/WinXP2.vdi of='/mnt/home/adr/.VirtualBox/HardDisks/WinXP2.vdi' это выполняется уже более чем 2 часа ... (файл весит 10гиг) там есть несколько важных текстовых файлов .. можно их как-то достать оттуда?

ADR
() автор топика
Ответ на: комментарий от ADR

root@ubuntu:/home/ubuntu# sudo mount -o loop,offset=34304,umask=000 '/mnt/root/home/adr/.VirtualBox/HardDisks/WinXP2.vdi' /mnt/vbox mount: could not find any free loop device

ADR
() автор топика
Ответ на: комментарий от ADR
# lsmod | grep loop

Петлевого устройства вообще подгружен модуль?

34304 - ты уверен? Запусти hexedit -s /media/Home/home/adr/.VirtualBox/HardDisks/WinXP2.vdi и найди где начинается раздел (EB 52 90 4E 54 46 53)-(.R.NTFS)

>>dd if=/media/Home/home/adr/.VirtualBox/HardDisks/WinXP2.vdi of=/mnt/home/adr/.VirtualBox/HardDisks/WinXP2.vdi

Это ещё что???!! У тебя с винтом реальным или виртуальным проблемы? И почему WINXP??? И на винте виртуалбокса один раздел или несколько?

adriano32 ★★★
()
Ответ на: комментарий от adriano32

dd далеко не лучший способ, и более того - иногда (пруф не дам, но по работе сталкивался) при наличии дефектов на источнике данные в образе таки уезжают. Для таких задач специально есть ddrescue, которая практически на автомате сперва копирует живое по максимуму (после первого дефекта пропуск заданного количества секторов с записью в лог), на втором и третьем проходах вычитывает пропущенное исходя из лога по одному сектору, чтоб возможно полнее добыть данные. А непрочитанные сектора можно по тому же логу залить сигнатурой, чтоб знать, где были дефекты. Есть только один нюанс - но это уже с ядром, щас спрошу заодно.

angus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.