[Solved!] Восстановить таблицу разделов
ubuntu:~$ sudo dd if=/dev/sda4 of=/media/hdd/linuxextended.img 2+0 records in 2+0 records out 1024 bytes (1.0 kB) copied, 0.00048386 s, 2.1 MB/sна сколько я понимаю dd не умеет копировать разделы диска рекурсивно. По сути он у тебя скопировал таблицу разделов этого девайса. Чем можно скопировать неразмеченое пространство это интересно. Я бы для начала создал там раздел. Ничего кроме первых 512 байт это не должно задеть. Правда если там 2 раздела, то границу между ними хз как найти.
P.S. поддерживаю предыдущего автора. Я тоже страюсь не иметь дел - мне есть чем заняться, кроме ковыряния компьютера.
Можно воспользоваться оберткой для dd - clonezilla. Ну или посмотреть, какую команду она выдаст для dd
Я бы для начала создал там раздел.Есть шанс, что после этого станет видно данные ?
Видимо, мне надо узнать побольше про устройство разделов и иже с ними.
А если ничего не изменится, то откат назад будет таким же безболезненным ?
В начале у тебя мог затереться суперблок той же виндой (кто знает что она там творит?)
Поэтому возможно придётся его поискать
fsck.ext4 -b 8193 /dev/sdчё-то-там
Ну или на этом месте не будет, то ищи ближайший.
lde --superscan -t ext2fs /dev/sdчё-то-там
на ХиренБутЦД в свое время была софтина, которая неплохо искала утерянные разделы, названия только щас не помню
ЕМНИП (а она вполне может И), то в конец раздела никакие данные не дописываются. так что если ты не будешь создавать там файловой системы (!), то откат будет просто dd if=/dev/zero of=/dev/sdтакой-то bs=512 count=1Если я всё правильно понял, то
В начале у тебя мог затереться суперблок той же виндой (кто знает что она там творит?)
Поэтому возможно придётся его поискать
fsck.ext4 -b 8193 /dev/sdчё-то-там
Ну или на этом месте не будет, то ищи ближайший.
lde --superscan -t ext2fs /dev/sdчё-то-там
Сначала я создаю там partition, без файловой системы (empty или unformatted), и потом уже ищу суперблок ? fsck.ext4 -b 8193 /dev/sdчё-то-там
тред не читал, но, насколько я помню, testdisk умеет находить удаленные разделы и как-то их восстанавливать, попробуй.
Спасибо, в интернетах тоже видел, что его советовали, взял на заметку. Я просто боюсь, как бы в случае фейла какой-нибудь из прог не произошли необратимые изменения.
Я просто боюсь, как бы в случае фейла какой-нибудь из прог не произошли необратимые изменения.Сделай полный dd на другой диск, и там экспериментируй, наживую нельзя, конечно, точно в один прекрасный момент все просрешь
Сделай полный dd на другой диск, и там экспериментируй, наживую нельзя, конечно, точно в один прекрасный момент все просрешьВот, да,
я выше писал, что неразмеченную область dd не копирует
На что, как я понял, мне посоветовали создать раздел без фс, который уже можно будет скопировать. но я буду делать это утром в любом случае, т.к. утро вечера мудренее
к тому же тестдиск в режиме анализа ничего не делает, поэтому посмотрю, что он скажет для начала. + если создать раздел, то тестдиск может и не сработать, похоже придётся выбирать. но опять же утром
Вдруг за это время ещё кто-нибудь ответит
я выше писал, что неразмеченную область dd не копируетТы не extended-раздел копируй, а весь sda — его он скопирует. Можешь даже посчитать смещение и скопировать только ту часть, что нужна.
На что, как я понял, мне посоветовали создать раздел без фс, который уже можно будет скопировать.При создании раздела на этом неразмеченном месте, туда ничего записываться не будет, изменения будут только в таблице разделов, записанной в extended-разделе. Так что мне кажется можно без опасения создавать там раздел, если только он extended-разделы не делает рекурсивно.
к тому же тестдиск в режиме анализа ничего не делает, поэтому посмотрю, что он скажет для начала.parted, кстати, вроде тоже умеет искать разделы:
rescue start end
Rescue a lost partition that was located somewhere
between start and end. If a partition is found, parted
will ask if you want to create an entry for it in the
partition table.
а "data" это метка раздела твоя была на линуксе или проставлена была тем, кто винду ставил?
data - метка с винды, а что ?
раздел вероятно также был отформатирован в нтфс. форматирование было наверное быстрым и данные не затронуты, но я бы не мучался с восстановлением раздела и натравил на раздел какой-нибудь сканер типа рстудии для восстановления данных. сделать копию для сканирования можно и под виндой средствами самой р-студии.
хотя конечно странно, что занято так много на этом диске.
тьфу, не туда посмотрел.
Если я всё правильно понял, тону почти. кроме того, что fsck.ext4 -b 8193 /dev/sd не ищет супер блок, а чинит ФС на основании данных суперблока, адрес которого ты передаёшь -b 8193.
Сначала я создаю там partition, без файловой системы (empty или unformatted), и потом уже ищу суперблок ? fsck.ext4 -b 8193 /dev/sdчё-то-там
файловая система делает несколько таких суперблоков в разныч участках раздела. вторая команда, что я дал, как раз ищет но не чинит.
Ну а так, в треде уже все правильные советы прозвучали.
Во-первых я бы сделал fdisk -lu /dev/sda, чтобы посмотреть, с каких точно секторов начинаются разделы и пустое место.
Во-вторых backup с помощью dd if=/dev/sda bs=512 skip=xxx of=extended.backup, где xxx номер сектора, с которого начинается sda4.
При создании раздела перед sda5 с вероятностью 90% будет сделана запись ровно в два сектора, причем в последние 66 байт каждого. Если эти сектора окажутся не внутри структуры файловой системы, то проблем не возникнет.
На мой взгляд более безопасное решение – удалить сначала sda5 из таблицы разделов, а потом добавить нужного размера новый раздел на месте утерянного. В этом случае запись будет только в первый сектор раздела sda4, и вероятность испортить файловую систему будет почти нулевая.
dd if=/dev/sda bs=512 skip=xxx of=extended.backupя бы только посоветовал bs ставить не 512 байт, а кусочками побольше. а то можно долго копировать
home:~# dd if=/dev/sda of=/root/temp.dump bs=512 count=80000
80000+0 records in
80000+0 records out
40960000 bytes (41 MB) copied, 0.365788 s, 112 MB/s
home:~# dd if=/dev/sda of=/root/temp.dump bs=4096 count=10000
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 0.0892464 s, 459 MB/s
Номер сектора только внимательно вычислять.
# dd if=/dev/sda of=/dev/null bs=4096 count=10000
10000+0 записей получено
10000+0 записей отправлено
скопировано 40960000 байт (41 MB), 0,469714 c, 87,2 MB/c
# dd if=/dev/sda of=/dev/null bs=512 count=80000
80000+0 записей получено
80000+0 записей отправлено
скопировано 40960000 байт (41 MB), 0,0883628 c, 464 MB/c
Это кэшь:Кышь!
Буду неторопясь совершать сии действа
Начитавшись в нете про testdisk, который тут тоже советовали, подумал, что ничего плохого в анализе диска нет, и запустил его на анализ, он смог найти линуксовые разделы, большая часть данных цела и невредима. Очень приятно, что он умеет копировать файлы с исходными именами в исходных папках. Да даже даты создания-изменения верные. Потом подробнее опишу пару нюансов.
Скопирую, посмотрю, порадуюсь и начну веселье.
апд:
dd if=/dev/sda bs=512 skip=561825241 of=/media/hdd/extended.backup
63317207+0 records in
63317207+0 records out
32418409984 bytes (32 GB) copied, 6671.48 s, 4.9 MB/s
копировалось долго, действительно
я не торопился
ну почти. кроме того, что fsck.ext4 -b 8193 /dev/sd не ищет супер блок, а чинит ФС на основании данных суперблока, адрес которого ты передаёшь -b 8193.Раздел swap я удалил, на свободном месте создал новый раздел sda5 в 30 гб без фс.
файловая система делает несколько таких суперблоков в разныч участках раздела. вторая команда, что я дал, как раз ищет но не чинит.
/dev/sda4 34973 38913 31656052 5 Extended
/dev/sda5 34973 38913 31656051 83 Linux
Но дальше дело не пошло:
ubuntu:~$ sudo fsck.ext4 -v -n -f -b 8193 /dev/sda5
e2fsck 1.41.11 (14-Mar-2010)
fsck.ext4: Bad magic number in super-block while trying to open /dev/sda5
The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
В других числах, которые он в мане предлагает, тоже поискал, но результат тот же.
lde не хочет работать пока.
Приплыли ?
Хотя сейчас ещё parted почитаю.
апд:
Parted тоже молчит
(parted) print
Model: ATA WDC WD3200BEVT-2 (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 106MB 105MB primary ntfs boot
2 106MB 105GB 105GB primary ntfs
3 105GB 288GB 183GB primary ntfs
4 288GB 320GB 32.4GB extended
5 288GB 320GB 32.4GB logical
(parted) rescue
Start? 288GB
End? 320GB
(parted)
Программа-максимум выполнена.
В конце концов со всем справился testdisk.
Последовательность действий была примерно следующая, если кто вдруг столкнётся с той же проблемой:
—
Бэкап с помощью dd, как советовал :
Во-первых я бы сделал fdisk -lu /dev/sda, чтобы посмотреть, с каких точно секторов начинаются разделы и пустое место.-
Во-вторых backup с помощью dd if=/dev/sda bs=512 skip=xxx of=extended.backup, где xxx номер сектора, с которого начинается sda4.
Всё просто, fdisk -u даёт адрес как раз в секторах
Копируется долго, однако.
-
После того, как не помогли fsck.ext4 и parted, я решил посмотреть, что ещё интересного умеет testdisk.
—
Во-первых, нужно было проделать deep search, который на моих 320 гб делался 1,5-2 часа. Он находил недостающие разделы и позволял посмотреть файлы на них. Прямо здесь можно сделать бэкап, но для этого нужно "скрыть удалённые файлы" в меню тестдиска, чтобы он скопировал только хорошие файлы. Он не просто их прячет от взора пользователя, но ещё и не копирует, что очень приятно. Иначе это может привести к каким-то безумным вложенным папкам с удалёнными когда-то частями файлов. После копирования миллиона с лишним файлов на 50 ГБ я пристрелил его и начал заново. До конца вложения я так и не дошёл, хотя путь занимал уже 3 строчки в консоли
Далее я сделал скрин всей этой кухни, запомнив, из каких разделов я копировал файлы.
Вообще тут нужно было запомнить _все_ хорошие разделы, которые надо сохранить, но я осознал это не с первого раза, увы.
После этого можно вручную вбить, какие разделы мы хотим видеть на диске.
Для уже готовых - вроде data можно просто поставить тип: primary я ставил, т.к. всего 4 штуки было, было бы больше - не знаю тут, что делать, возможно аналогично бы всё решилось - extended+logical. Но я решил все сделать основными.
Потом можно просто добавить разделы, ткнув А - там вводим адрес в C/H/S, который в табличке на скрине, тип и всё остальное - и вуаля, раздел готов.
Хотя, похоже, что можно было просто сделать их зелёненькими, чтобы буква стояла и этого было бы достаточно. Но в виду неинформативности меню я тупил.
Тут главное ничего не забыть, а то придётся ещё раз всё это делать.
—
После перезагрузки все 4 раздела стали видны с лайвсиди, что уже было победой.
Потом переставил граб и всё, готово, линух загрузился.
Данные на месте.
Для уже готовых - вроде data можно просто поставить тип: primary я ставил, т.к. всего 4 штуки былоНа будущее - только Primary или GPT. Никаких MBR+extended.
На будущее - только Primary или GPT. Никаких MBR+extended.Почему ? А если я хочу больше 4 разделов ?
На досуге почитаю про GPT...
Как ты загрузчи к поставил? Это груб? Загрузился в консоль восстановления с убунтовского дистриба и оттуда набрал команду? Или для этого GUI есть?
Это много где описано, в принципе, уже доводилось делать
Вот, например, чтоб не вдаваться в детали, восстановление используя chroot.
Почему ?Чтобы не ловить такие глюки как сейчас.
А если я хочу больше 4 разделов ?
GPT.
А первый груб умеет с него бутиться?
Точно умеет загрузчик фри и grub2, а первого груба у меня уже давно нигде нет.
мне он больше нравится, потому что конфигурируется напрямую. А разделы я создаю lvm, а не gpt.
потому что конфигурируется напрямуюЧто ты имеешь в виду?
А не генератор конфигов как в новом.
GPTА икспишка ТС умеет с него бутиться?
/boot/grub/Я в новом генератором не пользуюсь. Существенное отличие только в том, что на GPT grub2 хочет себе отдельный маленький раздельчик.grub.confmenu.lst
А не генератор конфигов как в новом.
на mbr тоже, /boot называется. У меня 3 mbr раздела: lvm, swap и boot. Без последнего никак не обойтись, ни при первом, ни при втором грубе. Ну есть ещё вариант, когда груб ставится в специально оставленную ему неразмеченную область диска, но это по сути тот же отдельный раздел.
Может мне тут ssd-шник перепадёт гигов на 60, буду кроить и перекраивать.
Думаю, на ssd можно поставить /, винду, может ещё что-нить эдакое (своп?). На харде раздел для данных в нтфс, /home, "my documents" или что там в винде вместо хоум, может отдельно /boot ?
на mbr тоже, /boot называется. У меня 3 mbr раздела: lvm, swap и boot. Без последнего никак не обойтись, ни при первом, ни при втором грубе. Ну есть ещё вариант, когда груб ставится в специально оставленную ему неразмеченную область диска, но это по сути тот же отдельный раздел.Ну не совсем так. Для MBR grub 1 и 2 записывают себя куда-нибудь и драйвер файловой системы. Т.е. если нет извращений, то можно и без /boot обойтись. Возможно для grub2 в определённых рамках (по размеру кода) можно и с извращениями. Но в случае GPT, grub2 раньше тоже встраивался куда-то, но последние версии обязательно требуют себе маленький неразмеченный раздельчик, в котором конфиг и прочее нельзя записать, этим он от /boot всё же отличается.
А икспишка ТС умеет с него бутиться?Судя по появлению нового раздела в 100Mb в начале диска - это не XP.
Т.к. "икспишка" устанавливается на один раздел.
Судя по появлению нового раздела в 100Mb в начале диска - это не XP.Да, сначала пытались поставить семёрку, она вроде поставилась, но до конца не настроилась.
Т.к. "икспишка" устанавливается на один раздел.
Потом уже поверх воткнули xp.
Оставить комментарий
stm7922213
Всем привет !История проблемы:
На диске имелись следующие разделы:
1) с winXp (возможно с ещё одним маленьким boot-разделом, не помню), -> ntfs
2) с данными -> ntfs
3) extended с тремя (или двумя, точно не помню) логическими подразделами для линукса:
3.1 / -> ext4
3.2 /home -> ext4
3.3 swap
Что делали:
На 1 раздел переставляли винду,
после чего ситуация стала следующая (вывод fdisk -l):
(загрузился с liveCD убунты 10)
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 102400 7 HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/sda2 13 12748 102294528 7 HPFS/NTFS
/dev/sda3 12749 34971 178506247+ 7 HPFS/NTFS
/dev/sda4 34973 38913 31656052 5 Extended
/dev/sda5 38392 38913 4192933+ 82 Linux swap / Solaris
т.е. линуксовский основной раздел стараниями винды благополучно превратился в неразмеченную область
Не понимаю, как это произошло - то ли руки совсем кривые, то ли карма плохая
Как я понимаю, данные там все остались, но поломалась таблица вот этого самого раздела.
Либо просто эта убунта не видит этот раздел почему-то (надежда), ещё проверю это.
Программа максимум - восстановить "всё как было", т.е. чтобы вернулись линуксовские разделы, там я уж граб поправлю как-нибудь
Программа минимум - вытащить оттуда все данные, коих немного, но жалко терять.
Перед всеми манипуляциями хотелось бы всё же сделать бекап всего этого раздела (dd что-то не сработал). Ведь лучше поздно, чем никогда.?
Господа телепаты, помогите, пожалуйста, хоть в какую сторону копать надо, потому что я, в принципе, нуб )
----
Итак, программа-максимум выполнена. Много интересного прочитал, спасибо всем
Краткий итог для тех, кому интересно, и для тех, кто может быть столкнётся с подобной проблемой:
—
Бэкап с помощью dd, как советовал :
-
Всё просто, fdisk -u даёт адрес как раз в секторах
Копируется долго, однако.
-
После того, как не помогли fsck.ext4 и parted, я решил посмотреть, что ещё интересного умеет testdisk.
—
Во-первых, нужно было проделать deep search, который на моих 320 гб делался 1,5-2 часа. Он находил недостающие разделы и позволял посмотреть файлы на них. Прямо здесь можно сделать бэкап, но для этого нужно "скрыть удалённые файлы" в меню тестдиска, чтобы он скопировал только хорошие файлы. Он не просто их прячет от взора пользователя, но ещё и не копирует, что очень приятно. Иначе это может привести к каким-то безумным вложенным папкам с удалёнными когда-то частями файлов. После копирования миллиона с лишним файлов на 50 ГБ я пристрелил его и начал заново. До конца вложения я так и не дошёл, хотя путь занимал уже 3 строчки в консоли
Далее я сделал скрин всей этой кухни, запомнив, из каких разделов я копировал файлы.
Вообще тут нужно было запомнить _все_ хорошие разделы, которые надо сохранить, но я осознал это не с первого раза, увы.
После этого можно вручную вбить, какие разделы мы хотим видеть на диске.
Для уже готовых - вроде data можно просто поставить тип: primary я ставил, т.к. всего 4 штуки было, было бы больше - не знаю тут, что делать, возможно аналогично бы всё решилось - extended+logical. Но я решил все сделать основными.
Потом можно просто добавить разделы, ткнув А - там вводим адрес в C/H/S, который в табличке на скрине, тип и всё остальное - и вуаля, раздел готов.
Хотя, похоже, что можно было просто сделать их зелёненькими, чтобы буква стояла и этого было бы достаточно. Но в виду неинформативности меню я тупил.
Тут главное ничего не забыть, а то придётся ещё раз всё это делать.
—
После перезагрузки все 4 раздела стали видны с лайвсиди, что уже было победой.
Потом переставил граб и всё, готово, линух загрузился.
Данные на месте.