Возникает при разметке диска утилитой fdisk, если при открытии диска не был указан ключ -u (при работе с таблицей разделов единицей размера является сектор, а не цилиндр).

fdisk /dev/sda

Причина ошибки: несовпадение логического и физического размера сектора.

На современных винчестерах физический размер сектора равен 4096 байт.
Логический размер, которым пользуется fdisk, равен 512 байт.

Без указания ключа -u fdisk считает размеры в цилиндрах, каждый из которых содержит 63 сектора по 512 байт и пытается начать раздел с первого цилиндра (63*512=32256 байта), который не попадает (!) на начало физического сектора. Что нехорошо, о чём fdisk и рапортует.

Решение: fdisk надо запускать с ключом -u (особенно при разметке диска!)

fdisk -u /dev/sda

Выше идёт речь о том, как избежать ошибки непосредственно при чистой разметке диска утилитой fdisk. То есть — способ вовремя заметить и исправить ошибку. Однако, чаще бывает совсем другая ситуация.

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

В этом случае:

  1. Логические блоки не совпадают с физическими.
    Начало раздела (например, 32256-й байт из примера выше) находится внутри физического блока устройства (между 28762-м и 32768-м байтом, 7-м и 8-м блоком)

  2. Работа с кривым разделом происходит медленнее, чем могла бы, потому что для каждой процедуры чтения-записи требуются дополнительные просчёты. Адреса не синхронизированы, диск не выровнен.

    Особенно ситуация критична с SSD-дисками, которые в этом случае гораздо быстрее изнашиваются.

  3. При чтении разметки fdisk-ом, он укажет на эту ошибку.

  4. Для каждого кривого раздела диска требуется провести процедуру выравнивания.
    Если раздел какое-то время активно использовался, то есть на нём куча информации — примите мои соболезнования и ищите резервное хранилище. Необходимо будет:

    • Скинуть все данные с раздела на резерв.
    • Переразметить диск так, чтобы начало и конец раздела приходились на начала физических блоков диска (это и есть выравнивание).
    • Залить данные обратно.
    • Повторить операцию для следующего кривого раздела.

По сути, выравнивание — это изменение границ раздела; приведение его логических границ к границам физических блоков.


imen
2012.03.06 09:29:56
#cid17815

Ответить

Интересный тезис.
С актуальными версиями fdisk'а такого не замечал.

2012.03.06 15:43:18
#cid17834

Ответить

#cid17815, imen

С актуальными версиями fdisk'а такого не замечал.

fdisk (util-linux-ng 2.17.2)

Это скорее не ошибка, а предупреждение. Вылезает при просмотре разделов командой p.