Почему fdisk имеет несоответствие в переводе единиц измерения между цилиндром и секторами?

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

Вот как мы изначально выполнили это:

$ fdisk /dev/sdb
# delete partition
fdisk> d
? 1
# create new partition
fdisk> n
? p
? 1
first cylinder? [ENTER]
last cylinder? [ENTER]
# set LVM type
fdisk> t
? 8e
fdisk> w

Это привело к тому, что LVM не распознается Linux. Я был озадачен и посмотрел на резервную копию. Таблицы разделов начинаются с 1, так что это не проблема. Однако, если я изменил единицы измерения (команда fdisk u) от цилиндров до секторов, я заметил, что резервное копирование началось в секторе 13, но новый раздел начался в секторе 128.

Когда мы исправили начало раздела, все прошло нормально.

Не могу разобраться в расхождении в преобразовании единиц. Может кто-нибудь помочь мне понять?

1 ответ

Решение

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

Вы можете переключиться в секторный режим с помощью команды u,

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

Gpart, parted и многие другие инструменты делают это лучше, хотя ни один из них не обладает чистой точностью старого fdisk.

Другие вопросы по тегам