Если диск или раздел уже упал, то Вам понадобится загрузочный дистрибутив Linux.
Рекомендую System Rescue CD т.к он создан именно для этого.
Главное ничего не делать с диском.
Приступим:
1) Вставляем Ваш Flash, Live CD в реанимируемый ПК
Грузимся… Первое что потребуется - это определить файловые системы диска.
Для этого есть команда sfdisk -l
Подробнее можно посмотреть командой file -s
Пример:
localhost root ~ # sfdisk -l /dev/sda
Диск /dev/sda: 9729 цилиндров, 255 головок, 63 секторов/дорожку
Предупреждение: Таблица разделов выглядит так,
словно она была создана для C/H/S=*/240/63
(вместо 9729/255/63).
Для листинга будет подразумеваться эта геометрия.
Единицы = цилиндры по 7741440 байт, блоки по 1024 байт, начиная с 0Устр-во Загр Нач Конец #цил #блоки Id Система
/dev/sda1 0+ 516 517- 3908488+ 82 Linux своп / Solaris
/dev/sda2 517 555 39 294840 83 Linux
/dev/sda3 556 5722 5167 39062520 83 Linux
/dev/sda4 5723 10336 4614 34881840 83 Linuxlocalhost root ~ # file -s /dev/sda1
/dev/sda1: Linux/i386 swap file (new style) 1 (4K pages) size 977121 pageslocalhost root ~ # file -s /dev/sda2
/dev/sda2: ReiserFS V3.6 block size 4096 num blocks 73696 r5 hash
Посмотрели? Выбрали что нужно восстановить.
2) Создаём образ диска/раздела с помощью команды dd и ложем его на другой целый накопитель /dev/sdb1
Это нам даст шанс на ошибку, если что-то пойдёт не так. С образом Мы и будем работать, дабы не насиловать и без того порченный HDD.
Пример:
mount /dev/sdb1 /mnt/temp
dd if=/dev/sda1 of=/mnt/temp/disk.ima conv=noerror
Опция conv=noerror говорит о том, что dd следует продолжить считывание несмотря на ошибки чтения, которые, в большинстве случаев, присутствуют на поврежденных дисках.
Так-же можно поиграться с параметром bs для ускорения копирования
И ещё, образ можно скинуть по сети:
dd conv=noerror if=/dev/sd1 | ssh user@host ‘cat >
recover.img’
И сжать в добавок
dd conv=noerror if=/dev/sda1 | gzip | ssh user@host
‘gunzip > recover.img’
3) Образ получили. Теперь его нужно ассоциировать с виртуальным устройством, что-бы с ним работать как с обычным разделом/накопителем
Делается это командой losetup
Пример:
losetup /dev/loop1 /mnt/temp/disk.ima
И получим свой раздел, в качестве полноценного устройства.
Его можно просто смонтировать и работать. Или приступать к восстановлению.
Правда он доступен только для чтения.
Обойти это можно. Для этого нам понадобится создать файл, который будем использовать как виртуальный накопитель.
Делается это командой dd
Пример:
Создать файл размером 30мб
Размер задаётся тут count=30720
dd if=/dev/zero of=/tmp/virtualfs.ima bs=1024 count=30720
Затем его ассоциируем с /dev/loop2
losetup /dev/loop2 /tmp/virtualfs.ima
И просто форматируем, в какую FS хотите.
mkfs.ext3 /dev/loop2
После можно командой dd накатить на него образ раздела/диска или смонтировать и работать.
dd if=/mnt/temp/disk.ima of=/dev/loop2
4) А как-же быть если мы сняли образ целого HDD с его разделами?
Очень просто.
После того, как Вы смонтировали/ассоциировали образ нужно посмотреть его разделы
Делается это с помощью команды fdisk
Пример:
Даём команду fdisk [имя диска или утройства]
Затем жмём ключ p для просмотра разделов
$ fdisk -u /dev/loop3Command (m for help): p
Disk /dev/loop1: 4194 MB, 4194816000 bytes
128 heads, 63 sectors/track, 1015 cylinders, total 8193000 sectors
Units = sectors of 1 * 512 = 512 bytesDevice Boot Start End Blocks Id System
/dev/loop3p1 * 63 8176895 4088416+ 7 HPFS/NTFSCommand (m for help): q
Здесь нам нудны след. значения.
а) Units = sectors of 1 * 512 = 512 bytes т.е размер сектора 512 bytes
б) Начальный сектор раздела. В примере 63
Дальше всё просто. умножаем 63 на 512 и получаем число 32256
Даём команду :
losetup -o 32256 /dev/loop4 /mnt/temp/disk_full.ima
И получаем на /dev/loop4 выбранный раздел.
Затем монтируем его и пользуемся.
Удалить все ассоциации можно командой
losetup -d /dev/loop[0,1,2,3,4 и т.д]
5) Вроде всё.
После восстановления можно накатить образ обратно на диск или скопировать нужные файлы.
Про утилиты восстановления писать нет смысла, да и я ими пользовался то 1 раз в жизни когда раздел упал.
Комментариев нет:
Отправить комментарий