LINUX.ORG.RU

Уронил ext4, потерялся суперблок

 , , ,


0

1

В общем, имеем диск на 500 (ну по факту 460 с хвостиком) Гб. На нем есть /home размером 450 Гб. Возникла необходимость отрезать от этого чрезмерно толстого раздела кусок, сделать /home 400 Гб, остаток отдать / и /boot.

Сказано — сделано. Покурил мануалы немножко, далее resize2fs ужал ФС /home до желаемых 400 ГБ. Хорошо, дальше посчитал, что раздел должен будет начинаться с сектора 135775167, а заканчиваться, как и раньше, в конце диска - 976773119, тогда выходит 401 Гб, 1 лишний спецом прибавил на всякий случай (может быть зря?).

Удалил старый /dev/sda3, создал новый с параметрами выше, перезапуск, пробую e2fsck -f — не находит суперблок. Пробую с ключом -b несколько разных номеров суперблоков, все равно не находит. Начинаю сомневаться, может быть я был должен разметить диск байт в байт с размером ФС? Хорошо, удалил, создал заново, уже начиная с 137872319 - ровно 400 Гб выходит. Все равно суперблок протерялся куда-то.

Захотел найти суперблоки с помощью dump2fs - а такой команды вообще система не знает, мне казалось, что это входит в состав e2fsprogs, ну, видимо, нет. Загрузился сейчас с liveusb вот.

Если у вас, господа, есть какие-то мысли по этому поводу, то подскажите, чо делать?

Ответ на: комментарий от BattleCoder

Никогда с ним не работал. Он, как я понимаю, восстанавливает старую рабочую таблицу разделов?

Сейчас займусь, но все равно вопрос остается — а что я сделал не так и как, собственно, мне уменьшить размер раздела, чтобы все было нормально?

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

testdisk умеет восстанавливать таблицу разделов на основе целой или полуцелой структуры - не всегда на 100% успешно, но может помочь.

photorec может восстановить данные - можно их вытащить куда-нибудь на внешний НЖМД, а потом заново отформатировать и разметить всё.

Что не так - честно, не уверен... не думал, что resize2fs может быть опасным...

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

можно их вытащить куда-нибудь на внешний НЖМД

Нет. Я ведь, конечно же, не стал бы изобретать велосипед, просто бы вытянул все данные, снес таблицу разделов и заново бы разметил диск как нужно, дело двух минут. Но у меня, увы, нет ни свободного жесткого диска, ни знакомого, который мог бы одолжить свой. Залить данные в облако я тоже не могу, хотя облако есть на терабайт.

Я вот уже недели две по вечерам, когда свободное время выдается, ковыряюсь с этой гентой и с этим диском проклятым, подробнее в оп-посте тут: Сломанная кодировка и parted

Проблема, надо сказать, так и не решилась.

Flagitio
() автор топика

Захотел найти суперблоки с помощью dump2fs - а такой команды вообще система не знает, мне казалось, что это входит в состав e2fsprogs, ну, видимо, нет. Загрузился сейчас с liveusb вот.

Таки вы имели ввиду dumpe2fs ?

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

Таки да, опечатался. Он точно так же гневается, что magic number не тот, и вообще.

Flagitio
() автор топика

Тестдиск не всегда точно восстанавливает таблицу, но может помочь. Основная задача - найти начало раздела. Количество блоков можно высчитать по размеру раздела. Дальше - пересоздать таблицу разделов по данным (старую лучше сохранить). Насколько я помню - fdisk это умеет. (на самом деле тестдиск может сразу залить то что нашел, но опять же, не всегда точно).

как, собственно, мне уменьшить размер раздела

Ну есть же gparted. Много раз им ресайзы делал и разделы двигал, ни разу не подвел. Что за любовь к хардкорным утилитам, где один промах по клавише может затереть все к дьволу

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

Я привел несколько выше ссылку на свой старый тред. Гпартед не работает, даже скрины выкладывал с ошибкой. Обычный партед или фдиск работают. Я, собственно, имею не очень много опций, работаю с тем, что есть.

Я могу выяснить начало раздела - оно будет таким же, как конец у предыдущего раздела (а этот предыдущий раздел лежит себе, целый). Сейчас попробую удалить этот раздел и создать новый по старой мерке.

Но все равно не отпадает главный вопрос: как мне ресайзнуть /home, мать его за ногу?

Flagitio
() автор топика

имеет смысл поискать какой-нибудь далекий суперблок, мне как-то помогло.

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

124000000 - это достаточно далеко? Если нет, то я даже не знаю уже.

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

как мне ресайзнуть /home

рекомендую сначала разобраться почем гпартед не работает. Если хочется данные сохранить, конечно.

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

Тоже интересно. Знать бы. Открой, если не лень, предыдущий тред и прочти шапку, там есть фото с ошибками. Тамошние знатоки мне не смогли помочь.

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

Вообще первое, что _всегда_ советуют при подобных экспериментах даже с надеждой на успех - полная резервная копия всего, что сейчас есть. Так что всё-таки рекомендую поискать другой НЖМД, прежде чем колдовать.

BattleCoder ★★★★★
()

Хорошо, дальше посчитал, что раздел должен будет начинаться с сектора 135775167, а заканчиваться, как и раньше, в конце диска - 976773119

Откуда вы взяли, что resize2fs вам сдвинет начало ФС, а не конец?

anonymous
()

2 мысли 1 бэкапы, 2 убрать тэг gentoo. про вытаскивания инфы вагон и восстановить в твоем случае можно. Удачи

deity ★★★★
()

Таблицу разделов надо было предварительно забекапить.
Раз этого не было сделано, пробуйте найти свой раздел testdisk-ом.

Либо пересоздайте его руками от стартового блока прежнего раздела, не от хвостового.

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

будет начинаться с сектора 135775167, а заканчиваться, как и раньше, в конце диска - 976773119

Ой дебилы... Хотя нет - не дебилы, а ДЕБИЛЫ!!!

no-dashi ★★★★★
()
Ответ на: комментарий от Flagitio

C livecd делаешь? Ибо хомяк отмонтировать надо было, перед ресайзом.

FIL ★★★★
()

Пересозданием раздела таким способом пространство можно освобождать только со стороны конца раздела. А так ты топу сдвинул границу и затёр начало раздела.

Radjah ★★★★★
()

заканчиваться, как и раньше, в конце диска - 976773119, тогда выходит 401 Гб, 1 лишний спецом прибавил на всякий случай (может быть зря?). Удалил старый /dev/sda3, создал новый с параметрами выше

Мне кажется, или ты забыл передвинуть данные, и твои данные остались где-то перед 135775167?

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

Да там вообще все триаиально у ТС. Удалить все созданные после котострофы разделы и создать старый на все место.

no-dashi ★★★★★
()
Ответ на: комментарий от bormant

Прошу прощения за молчание. Я понял просчет, создал раздел на старом месте, все окей, файлы не пострадали. С раскладкой и локалью вопрос решился через правку /etc/env. d/02locale.

Я понял, что resize2fs сжимает раздел с конца. Я ужал раздел до необходимых мне 400 Гб, уменьшил в parted до тех же самых 400 Гб. Теперь надо передвинуть раздел в хвост диска и мои мытарства будут окончены.

Вопрос дня: как передвинуть раздел в конец диска?

Кто-то советует move внутри parted, но мой партед такой команды не знает. Кто-то предлагает адски изъёбистые способы с dd и какими-то махинациями с копированием ФС, все очень мутно.

Будут какие-то мысли по поводу этого вопроса? Спасибо.

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

Ты совершенно прав, и мне это дошло задним умом только через несколько дней размышлений. Как я могу передвинуть данные? Курение манов не помогло, задача какая-то нетривиальная, видимо. Передвинуть (пересоздать) раздел легко, но как быть с данными?

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

Единственный вариант сдвига 400 ГБ вправо на 50 ГБ — это копировать от конца данных на новое место кусами не более 50 ГБ, иначе перекрывающиеся данные будут затерты:

****************--
**************__**
************__****
**********__******
********__********
******__**********
****__************
**__**************
__****************

При этом заранее нужно рассчитать, чтобы начало перемещённых данных попало на начало будущего раздела (т.е. fdidk способен создать раздел, начинающийся именно там, где будет начало данных после перемещения).

Вопрос в том, стоит ли этим заниматься, отдельный. Проще всего уменьшить раздел по размеру ФС справа, на пустом месте создать новый 50 ГБ раздел и использовать его без риска повредить данные при переносе. Чем не устраивает этот вариант?

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от Flagitio

это дошло задним умом только через несколько дней размышлений.

Можешь извиниться за свое говно-хамство, я прощу.

futurama ★★★★★
()

Хорошо, дальше посчитал, что раздел должен будет начинаться с сектора 135775167, а заканчиваться, как и раньше, в конце диска - 976773119

Как бы нет. Файловая система будет начинаться как и раньше с сектора, с которого начинался раздел, а заканчиваться на секторе на 50 Гб ближе к началу. При уменьшении размера файловой системы, точнее просто при изменении размера файловой системы, всегда изменяется верхняя граница, т.е. конечный сектор, начало файловой системы как и раньше остаётся в начале раздела.

Создавай раздел со старыми параметрами, а затем, если тебе действительно нужно, двигай его посредством dd.

Ну либо используй графические утилиты, что бы не запороть ничего, например gparted, либо Acronis.

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

Согласен, это выглядит достаточно сложно и неуместно трудоемко. Просто меня мучает какой-то перфекционизм что ли, шило в пятой точке, ну некрасиво, нескладно, фу. Наверное, следует перестать старадть ерундой и сделать / на освободившихся 50 гигабайтах в конце диска. Правда, тогда останется кусок пустого места в 12 Гб в начале диска.

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

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

Почему линукс не имеет удобного инструмента для таких операций

GParted, наглядно и в графике.

почему я вынужден побайтово копировать данные кусками вручную?

Экономия на флешках?

почему gparted, запущенный с liveusb, не хочет двигать раздел

Не видел от вас описания этой проблемы, проглядел?
В любом случае, стоило взять SystemRescueCD:
http://www.system-rescue-cd.org/SystemRescueCd_Homepage

GParted отказывается модифицировать диск обычно, если на нем есть аномалии в разметке, ошибки в ФС и т.п. После устранения подобных косяков обычно проблем нет.

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

Экономия на флешках?

Скорее студенческая нищета (а еще скорее - неумение удерживать положительное сальдо, но это малозначимо в рамках обсуждения). Так или иначе, есть всего одна флешка, и исходить прошу именно из этого. Жесткий диск у меня тоже один.

Не видел от вас описания этой проблемы, проглядел?

Да, проглядели, описание проблемы было, и даже со скриншотами. Я, если позволите, не буду копировать ссылки и текст. Гляньте оп-пост вот этого треда: Сломанная кодировка и parted

Раньше все нормально было, но в какой-то момент gparted расхотел работать с моим диском. Ошибок e2fsck не находит (да и сам gparted всегда делает проверку перед операциями). Данные целы, даже могу получить к ним доступ из терминала (ls), хотя графический файловый менеджер не видит содержимое папок, полагаю, дело в кодировке.

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

Ещё.

https://www.gnu.org/software/parted/manual/html_node/move.html - тут все выглядит удобно, но мой parted не знаком с командой move. Может, я как-то не так работаю? Может, надо не в интерактивном режиме? Бог знает.

Ага! Хитрый гпартед двигает разделы через e2image. Будем пробовать.

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

Полагаю, мой вопрос решен. Впереди несколько часов ожидания, но все выглядит кошерно. Не зря ковырялся две недели. Теперь я доволен и результатом, и новообретенными знаниями.

Хотя ладно, может еще и не выйдет сейчас ничего, не буду спешить.

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

Самое главное — не прерывайте процесс ни в коем случае, вероятность разрушения данных при этом слишком велика.

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

Насчет e2image для переноса ФС — вы уверены? Это возможно, только если есть свободное место для образа используемых данных, но это не всегда так.

Какова подсмотренная/использованная команда?

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

Завтра запущу машину, напишу в точности, если нужно. Да, принцип был, как я понял, именно такой.

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