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

Обновлено: 05.07.2024

Для администратора Linux важным моментом при установке системы является планирование и организация дискового пространства. Правильное планирование способствует успешному поддержанию работоспособности системы в дальнейшем. Программа-установщик, кроме стандартных средств, поддерживает технологии, повышающие гибкость работы с жёстким диском.

Рекомендации по разбиению диска

Доступное Linux дисковое пространство, как правило, разбивается на несколько логических областей, или томов в терминологии программы установки. Том — это дополнительный уровень между разделом и файловой системой, который создаётся для унифицированного представления в операционной системе различных типов устройств (аналогичен логическому тому LVM).

Разбивка на тома может быть организована с помощью разных технологий: самое простое — создавать тома, привязанные непосредственно к физическим дискам или областям дисков, т. е. занимать под том целиком жёсткий диск или раздел жёсткого диска. При использовании одного из стандартных профилей разбиения диска применяется именно эта схема: создаётся несколько разделов на свободном месте жёстких дисков.

Программа установки позволяет создавать на диске и более сложную разметку с использованием технологий LVM и Linux Software RAID. Технология LVM предоставляет возможность более гибко распределять логические тома по физическим устройствам. Интерфейс управления логическими томами доступен при выборе пункта LVM в дереве устройств.

Помимо этого, программа установки позволяет устанавливать Linux на поддерживаемые аппаратные и программные RAID-массивы (в том числе создавать программные RAID уровней 0, 1, 4/5). Интерфейс для создания RAID доступен при выборе в дереве устройств пункта RAID .

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

Работа с диском

В дереве устройств представлены доступные жёсткие диски и разделы на них (в том числе здесь могут оказаться съёмные USB-носители, подключённые к компьютеру в момент установки), а также в дерево включены отдельные ветки для управления/отображения устройств LVM и RAID. Узнать, каким устройствам вашего компьютера соответствуют названия в списке, можно в разделе Именование дисков и разделов в Linux.

Если на жёстком диске присутствует таблица разделов, в ветке дерева, начинающейся от этого диска, будет отображено текущее расположение разделов, кроме случаев, когда раздел входит в состав устройств LVM или RAID — такие разделы в составе диска не о отображаются. Для каждого раздела указаны его размер и тип файловой системы (в колонке «Файловая система»). Возможно удалить существующую таблицу разделов диска. Для этого понадобится поочерёдно удалить с него все разделы, после чего, выбрав диск в дереве устройств, нажать «Удалить таблицу разделов».

Для каждого вновь создаваемого раздела предлагается выполнить стандартную последовательность операций: от создания раздела до назначения точки монтирования.

  • Создать раздел
  • Создать том
  • Создать файловую систему
  • Назначить точку монтирования

Для создания нового раздела выберите свободное место на диске (выбрав в списке значок диска или свободную область на нем) и нажмите «Создать раздел». Если свободного места нет и оно не было освобождено заранее, это нужно сделать сейчас, удалив один или несколько из существующих разделов или, если есть возможность, уменьшив их размер.

При создании раздела прежде всего нужно указать его размер и определить его расположение на диске. Для этого используются регуляторы «Размер» и «Смещение». Можно изменить размер уже созданного раздела, для этого выберите раздел и нажмите кнопку «Увеличить» или «Уменьшить». При увеличении раздела пределом служит свободное место на диске, а при уменьшении — объём, фактически занятый данными на этом разделе.

Том с файловой системой, как правило, создаётся в разделе диска, однако может быть создан непосредственно на жёстком диске, в случае если на нем ещё нет таблицы разделов (эту возможность следует использовать с осторожностью, поскольку есть риск в будущем принять такой диск за неформатированный и потерять данные на нем). Для создания тома выделите нужный диск или раздел и нажмите «Создать том». Поскольку единственным параметром тома является тип создаваемой в нём файловой системы, вам будет сразу предложено выбрать в появившемся списке её тип и перейти к следующей операции — назначению точки монтирования.

Можно отложить операцию создания файловой системы (сняв метку с пункта перехода к следующей операции), например, для того, чтобы изменить размер только что созданного тома. Вместе с размером тома изменится и размер раздела, в котором создан изменяемый том. Изменять размер только что созданного тома с файловой системой нельзя. Для изменения размера такого тома файловую систему с него необходимо предварительно удалить. Для создания файловой системы нажмите «Создать файловую систему».

Для тома с файловой системой могут быть доступны дополнительные настройки: проверка тома на наличие ошибок (сбойных участков) и присвоение ему метки тома. Для файловой системы Ext2/3 можно выбрать, использовать ли функцию поддержки журналирования.

Созданной файловой системе возможно сразу присвоить точку монтирования. при чем наиболее подходящий вариант будет предложен по умолчанию. Есть возможность выбрать из списка наиболее часто используемых вариантов или вписать нужный самостоятельно. Выбор точки монтирования для файловой системы на уже существующем разделе осуществляется нажатием кнопки «Изменить точку монтирования».

Работа с LVM

Не размещайте корневую файловую систему «/» на LVM-томе. В противном случае вы не сможете загрузить систему.

Для создания группы томов и логических томов LVM необходимым условием является наличие на диске как минимум одного пустого раздела, т. е. такого, на котором нет тома с файловой системой. Необходимо создать такой раздел, не забыв правильно указать его тип — Linux LVM.

Выбрав в списке устройств LVM, нажмите кнопку «Создать группу томов». Сразу появится окно создания группы томов, в котором нужно определить основные параметры — дать новой группе имя и выбрать размер экстента.

Внутри группы томов создаются логические тома. Их может быть сколь угодно много в зависимости от требований пользователя. Как и при работе с разделами, можно сразу перейти к созданию логического тома, отметив пункт «Создать том». Если вы не хотите создавать том, например, если вы решили изменить размер группы томов, снимите выделение с этого пункта. Будет создана пустая группа томов, к созданию тома внутри неё можно вернуться, выделив её и нажав «Создать том».

Каждому созданному в группе томов логическому тому нужно дать название и указать его размер. Имя тома может быть любым и, например, указывать на тип хранящихся на томе данных. Отметьте разделы для размещения каждого тома и способ распределения данных по разделам. Выбор линейного или распределённого отображения логических экстентов в физические осуществляется при помощи ползунка «Число расслоений (stripes)». Перемещая его, можно изменять числовое значение от единицы (обозначающей линейное отображение) до числа, соответствующего количеству физических томов, по которым будут распределяться данные создаваемого логического тома. В новом томе нужно создать файловую систему.

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

Работа c RAID

Для RAID, так же как для LVM, необходим пустой раздел. Будьте внимательны: для того, чтобы при старте системы RAID-массив определялся корректно, необходимо указать тип раздела Linux RAID. Создав раздел нужного типа, в таблице устройств нужно выбрать RAID и нажать «Создать RAID».

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

RAID 0 Для массива этого уровня нужно определить два параметра: определить размер чанка (минимум 4 кб, 32 кб по умолчанию) и выбрать, нужно ли создавать в нём отдельный суперблок. RAID 1 Для этого уровня, кроме вышеперечисленных параметров, можно определить количество резервных дисков. Есть пункт «Деградированный массив», выбрав который, можно создавать массив с неполным набором дисков. Это может быть полезно, если вы решили создать массив, но ещё не установили второй диск. RAID 4/5 Для создания массивов этих уровней определяются те же параметры, что и для устройств уровня RAID1: размер чанка, наличие отдельного суперблока и поддержка возможности создания неполного (деградированного) массива. Также можно выбрать, какие диски или разделы войдут в массив, а какие будут использоваться в качестве резервных. Поскольку в массивах RAID4/5 используется чётность, помимо перечисленных выше параметров можно выбрать алгоритм проверки чётности, выбрав нужное значение из выпадающего меню рядом с соответствующим пунктом («Алгоритм RAID5»).

После создания массива в нём создаётся один том с файловой системой. Эта операция аналогична созданию тома в разделе диска. Том занимает весь объем массива, в него входят все разделы или диски, входящие в массив. Размер тома не может быть изменён, пользователю доступны операции удаления устройства целиком или содержащейся на нем файловой системы, изменение точки монтирования. Для их выполнения служат соответствующие кнопки, отображающиеся на экране при выборе устройства RAID.

В моем домашнем NAS внезапно отказал один из дисков. Это был единственный диск не в raid, данные на котором вроде как не важные (торренты, софт и т.д., все, что можно заново выкачать из инетрнета), поэтому диск не дублировался. Ничего критичного не произошло, но мне все равно стало жалко данные, поэтому я заменил диск, а этот отложил в сторонку, чтобы попытаться восстановить информацию. У меня это получилось, поэтому решил задокументировать результат, чтобы самому не забыть и с вами поделиться.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

Симптомы поломки были следующие. Заметил, что пропал сетевой диск. Зашел на сервер и увидел, что диск не инициализирован. Таблица разделов пустая. При этом, диск работал нормально и SMART ошибок не показывал. Я сразу заподозрил, что проблема именно с таблицей разделов. Данные должны быть на месте.

Дополнительная важная информация - диск был в составе mdadm массива, состоящим из одного диска. LVM не использовался.

Я подключил сбойный диск в обычный системник. Сделал загрузочную флешку с Ubuntu Live CD и загрузился с нее. Настроил там сеть, стандартные репозитории.

Восстановление таблицы разделов

Я давно знаю утилиту testdisk. С ее помощью мне уже удавалось восстанавливать данные в linux. Она есть в репозиториях ubuntu, так что я ее установил. Далее все было просто. К сожалению, скриншотов нет, так как делал все на отдельном системнике. Расскажу на словах, что сделал:

  1. Запустил утилиту. Она вывела список всех подключенных дисков. В моем случае диск был /dev/sda.
  2. Выбрал нужный диск, указал в выборе partition table types первый вариант - Intel.
  3. Запустил сканирование. Утилита нашла разделы, которые там были ранее. Я прикинул, вроде бы то, что и должно быть.
  4. Записал таблицу разделов на диск.

Далее через fdisk я увидел разделы диска sda, в том числе тот, что меня интересовал - Linux raid autodetect.

Восстановление таблицы разделов

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

Восстановление mdadm массива

Установил в live систему mdadm:

Первым делом проверил суперблоки на восстановленном разделе:

Информация о mdadm массиве

На вид все было в порядке. Дальше рассчитывал сразу найти массив и примонтировать его.

mdadm: failed to add /dev/sda2 to /dev/md3: Invalid argument

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

md: sda2 does not have a valid v1.2 superblock, not importing!

Решение этой ошибки достаточно быстро нагуглилось.

mdadm --assemble --verbose /dev/md2 /dev/sda2 --update=devicesize

После этого массив нормально стартовал и cat /proc/mdstat показывал его состояние. Тут я думал, что мои мучения окончены и я сейчас получу свои данные. Но это тоже было еще не все.

Восстановление таблицы разделов на mdadm

Просто подмонтировать запущенный mdadm массив к системе не получилось.

Я так понял, что тут либо таблица разделов так же была уничтожена, либо файловая система. Я не знал, как был разбит на разделы сам массив, поэтому просто решил еще раз прогнать анализ таблицы разделов уже массива md2 через утилиту testdisk.

К счастью, она нашла единственный раздел на диске и восстановила его. Таким образом у меня получилось устройство /dev/md2p1. Дальше я успешно смонтировал этот раздел в /mnt и получил доступ к данным. Они все были на месте.

В заключении я к этой же системе подмонтировал сетевой диск через cifs и начал копировать данные.

Заключение

Непонятной осталась причина сбоя, и это хуже всего. На вид все в порядке, но я теряю доступ к данным. Любой другой пользователь, не разбирающийся в linux, просто потерял бы данные, либо пришлось обращаться в специализированные фирмы по восстановлению информации, а это стоит дорого. И еще, как я понял, я точно так же мог потерять доступ и к массиву из нескольких дисков. К слову, потерпевший NAS это Synology, где под капотом обычный linux и mdadm, поэтому я понимал, как надо действовать. На этом же устройстве есть несколько массивов на много Tb и если бы кто-то из них сглючил, то было бы плохо.

Несколько моих статей по восстановлению загрузки linux после различных сбоев:

Эти мето­ды застав­ля­ют ядро пере­за­гру­жать таб­ли­цу раз­де­лов и повтор­но запол­нять ее иден­ти­фи­ка­то­ры в /dev.

Если вы ище­те ути­ли­ты для раз­де­лов дис­ка, вы може­те попро­бо­вать одну из них.

Ути­ли­ты дис­ко­во­го раз­де­ле­ния — это fdisk и parted.

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

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

Re-reading the partition table failed . : Device or resource busy The kernel still uses the old table . The new table will be used at the next reboot or after you run partprobe ( 8 ) or kpartx ( 8 ) .

Я про­те­сти­ро­вал при­ве­ден­ные ниже коман­ды в систе­ме Arch Linux, и они рабо­та­ли нор­маль­но, кро­ме коман­ды partx.

Пото­му что я не вижу ника­ких логов жур­на­ле dmesg после запус­ка коман­ды partx.

Одна­ко он рабо­тал нор­маль­но, как и ожи­да­лось в систе­мах RHEL 7.

Я бы посо­ве­то­вал вам выпол­нить любую из при­ве­ден­ных ниже команд после добав­ле­ния раз­де­ла в систе­му Linux, что­бы про­ин­фор­ми­ро­вать ОС об изме­не­ни­ях таб­ли­цы разделов.

Это мож­но сде­лать с помо­щью сле­ду­ю­щих четы­рех методов.

  • partprobe: partprobe — это про­грам­ма, кото­рая инфор­ми­ру­ет ядро опе­ра­ци­он­ной систе­мы об изме­не­ни­ях таб­ли­цы раз­де­лов, запра­ши­вая у опе­ра­ци­он­ной систе­мы пере­чи­ты­ва­ние таб­ли­цы разделов.
  • blockdev: Ути­ли­та blockdev поз­во­ля­ет вызы­вать ioctl для блоч­ных устройств из команд­ной строки.
  • hdparm: hdparm предо­став­ля­ет интер­фейс команд­ной стро­ки для раз­лич­ных интер­фей­сов ядра, под­дер­жи­ва­е­мых под­си­сте­мой «libata» Linux SATA / PATA / SAS и более ста­рой под­си­сте­мой драй­ве­ров IDE .
  • partx: partx сооб­ща­ет ядру о нали­чии и нуме­ра­ции раз­де­лов на диске.

Как перезагрузить таблицу разделов в Linux с помощью команды partprobe

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

Это стан­дарт­ная и натив­ная коман­да для выпол­не­ния этой задачи.

В этом при­ме­ре я соби­ра­юсь исполь­зо­вать /dev/sdb. Помни­те, что вам нуж­но вве­сти имя ваше­го устрой­ства вме­сто нашего.

Ситуация следующая. Есть винт на 160Гб. На нем 2 раздела — 40Гб и 120Гб. С целью установки убунты как второй системы была произведена разбивка 120Гб -> 100+10+2+8.

Далее, с целью отката изменений, были объединены диски (10, 2 и 8) обратно в один 20Гб и отформатирован в NTFS. В нагрузку к этому, были проведены операции с MBR, результатом которой явилась ее смерть.

Итоги

Дураку понятно, что это начало веселой ночи.
Далее, под катом, решения вопроса.

1. Восстановление таблицы разделов

1.1. Parted magic

Данный LiveCD\USB дистрибутив, размером в 100Мб несет в себе огромную кучу софта, для работы с дисками. От разбивки, до восстановления.
Из них всех, нам нужны будут gpart, testdisk, fdisk и ms-sys.

1.2. Gpart

gpart — это утилита, сканирующая по-секторно диск на наличие разделов, которые присутствуют на носителе, но отсутствуют в таблице. В своей работе, она игнорирует уже существующую таблицу (если присутствует). Программа разаботана немецким программистом Michail Brzitwa и больше им не поддерживается. Вялотекущая разработка ведется командами Fedora и Debian. Текущая версия — 0.1h.

Утилита позволяет наиболее быстро и легко восстановить таблицу разделов, но она несет в себе несколько недостатков. Во-первых, разработка была давно заброшена, во-вторых, она иногда не совсем корректно определяет разделы.

gpart может работать в 2-х режимах. Это быстрый анализ и подробное сканирование. В некоторых случаях, первого режима достаточно. Мы же будем смотреть на второй.

gpart -if /dev/sda

-i — интерактивный режим. На каждую найденную партицию будет задан вопрос, сохранять ее, либо пропустить.
-f — полный скан диска.

После, довольно продолжительного времени, будет создан отчет с возможными разделами. Его-то и нужно обязательно максимально внимательно просмотреть перед записью.
Пример отчета (не мой):

Если все ОК, то соглашаемся на запись в таблицу разделов, скрещиваем пальцы и перезагружаемся.
В моем случае, программа определила разделы, которые были до разбивки (40 и 120), что не подходило и заставило искать альтернативные способы восстановления.

1.3. testdisk

Note: подробнее эта утилита описана в этом посте, здесь не буду повторяться.

Эта утилита аналогична предыдущей, но имеет ряд плюсов:
1. более свежая и активно поддерживается;
2. субъективно, работает намного быстрее;
3. функциональнее;
4. есть простой консольный интерфейс на базе ncurses.

Поехали!
1. в первом окне выбираем Create a new log file;
2. выбираем нужный диск (/dev/sda) -> Proceed;
3. отмечаем тип разделов как Intel;
4. выбираем Analyse current partition structure and search for lost partitions;
5. если найденные разделы верны, жмем Backup и переходим к пункту 6, есть возможность быстро пересканировать диск, если где-то ошибка (Quick search);
6. здесь уже виден зеленый список с разделами. Если ок, то записываем, иначе запускаем Deep search.;

В моем случае, результат был аналогичен результату gpart, что есть некорректен.
Запустив Deep search, выждав около 40 минут я получил ответ, от которого на душе так нехило отлегло.
Было найдено несколько партиций, которые накладывались одна на другую (это были изначальная (до манипуляций) 120Гб и новая, на 100Гб). Отметив ненужную, как удаленную, я записал таблицу на диск и перезагрузился. К счастью, все обошлось и компьютер вернулся к состоянию, который был изначально, а я мог с чистой совестью лечь спать.

3. Восстановление MBR

Для этой задачи, у нас в арсенале есть тулза ms-sys.
Сперва узнаем, что с нашей MBR.

ms-sys /dev/sda
/dev/sda has an x86 boot sector
it is unknown boot sector

Теперь видно, что на данном диске нет загрузочного сектора.
Утилита может работать с MBR различных операционных систем. Список можно получить, запустив программу без агрументов. В моем случае, необходим был от Windows 7.
Записываем MBR на диск:

ms-sys -7 /dev/sda
Windows 7 master boot record successfully written to /dev/sda

Проверяем:

ms-sys /dev/sda
it is Microsof 7 master boot record, like the one this
program creates with the switch -7 on a hard disk device.

Вот и все, нужная MBR установлена и можно перезагружаться.

Читайте также: