У меня проблемы с разделами, которые перекрывают друг друга (fdisk -l)

/dev/sda1    *             2048    206847    204800   100M  7 HPFS/NTFS/exFAT
/dev/sda2               8155136 220203007 212047872 101,1G 83 Linux
/dev/sda3             220203008 639633407 419430400   200G  7 HPFS/NTFS/exFAT
/dev/sda4                208894 976768064 976559171 465,7G  f extended W95 (LBA)
/dev/sda5                208896   8155135   7946240   3,8G 82 exchange partition
/dev/sda6             639645696 976768064 337122369 160,8G  7 HPFS/NTFS/exFAT

Как я могу это починить? Разве удаление всего жесткого диска может это исправить?

1 ответ1

2

Я согласен с комментарием Quixotic:

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

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


Чтобы узнать разделы, программа (например, fdisk или gparted) выполняет следующий анализ:

  1. Основная загрузочная запись (MBR) в секторе 0 считывается. Он содержит четыре записи раздела, им даны номера 1 , 2 , 3 , 4 . Любая запись, которая не является пустой, определяет раздел с соответствующим номером (например, sda1 для первой записи). Обратите внимание, что любой набор этих записей может быть не пустым, поэтому возможно иметь, например, только sda2 и sda4 .

Эти разделы не должны перекрываться. Рекомендуется располагать их по порядку (первая запись в таблице идет первой на диске и т.д.). Нет необходимости оставлять какие-либо "неиспользуемые" сектора между этими разделами или в конце; тем не менее, между MBR и первым разделом часто бывает мало "неиспользуемых" секторов. Под "неиспользованным" я подразумеваю "не принадлежащий ни к одному разделу", тем не менее они могут использоваться для чего-то другого - например, сектора между MBR и первым разделом обычно используются для хранения стадии загрузчика (вот почему ваш sda1 начинается с 2048 , а не на 1).

В вашем случае в MBR определены sda1 , sda2 , sda3 и sda4 . Их записи не совсем в порядке дисков, но это действительно не имеет значения (тем не менее, это может запутать пользователей). Важно то, что sda2 и sda3 находятся внутри sda4 , поэтому формально разделы перекрываются . Такие программы, как gparted обнаруживают это и выдают предупреждение. Через минуту я объясню, почему это не смертельно в вашем конкретном случае.

  1. Не более одного из этих разделов может быть расширенным разделом (другие называются основными разделами). Если он есть, будет проведен дальнейший анализ.

Ваш sda4 - это расширенный раздел.

  1. Расширенный раздел не должен содержать файловую систему. Вместо этого он может содержать ноль или более логических разделов. Самый первый сектор расширенного раздела называется расширенной загрузочной записью (EBR) и описывает первый логический раздел (если есть). Число, связанное с этим разделом, всегда равно 5 и оно должно начинаться после его EBR. Первый EBR может указывать на второй EBR, который описывает раздел номер 6 (который должен начинаться после его EBR); второй EBR может указывать на третий и так далее. В конце концов, некоторый EBR не указывает на следующий, и это означает, что он описывает последний раздел. EBR не хранят свои номера, они как звенья цепи. По этой причине логические разделы имеют последовательные номера.

В вашем случае номер сектора 208894 содержит EBR, который описывает sda5 . Существует также другой EBR, вероятно, где-то между 639633408 и 639645695 который описывает sda6 . Только два логических раздела не заполняют весь sda4 , поэтому gparted сообщает, что есть 300 ГБ свободного места. Если вы изучите только содержимое sda4 , вы увидите свободное место. Если вы просматриваете записи только в MBR, вы видите перекрывающиеся разделы. Хитрость заключается в том, что sda2 и sda3 вписываются в это якобы свободное пространство - поэтому перекрытие не смертельно.

gparted недостаточно умён, чтобы заметить это, потому что ваши настройки настолько необычны, я бы сказал, сумасшедшие.

Еще один комментарий:

Я не знаю, что fdisk или другие инструменты не представят 300G свободного места в расширенном разделе и позволят вам создать там дополнительные разделы, которые будут перекрываться с sda(2,3) .

Я говорю, что вполне возможно, что они позволят тебе сломать вещи таким образом


Так что ты можешь сделать? Если это работает, не трогай.

Ну, можно было бы справиться с этим беспорядком и сделать разметку разделов совершенно разумной, но (например):

  • изменились бы некоторые номера разделов, я ожидаю проблем с загрузкой Windows (есть Windows, не так ли?);
  • первичный sda2 должен быть новым логическим sda6 но между ними нет свободного сектора для EBR.

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


Может ли удаление всего жесткого диска исправить это?

Вы имеете в виду: резервное копирование важных файлов, удаление всех разделов, создание здоровых разделов и файловых систем с нуля, установка ОС, а затем копирование файлов обратно? Да, это исправит это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .