Возникает при разметке диска утилитой fdisk, если при открытии диска не был указан ключ -u (при работе с таблицей разделов единицей размера является сектор, а не цилиндр).
fdisk /dev/sda
Причина ошибки: несовпадение логического и физического размера сектора.
На современных винчестерах физический размер сектора равен 4096 байт.
Логический размер, которым пользуется fdisk, равен 512 байт.
Без указания ключа -u fdisk считает размеры в цилиндрах, каждый из которых содержит 63 сектора по 512 байт и пытается начать раздел с первого цилиндра (63*512=32256 байта), который не попадает (!) на начало физического сектора. Что нехорошо, о чём fdisk и рапортует.
Решение: fdisk надо запускать с ключом -u (особенно при разметке диска!)
fdisk -u /dev/sda
Дополнение от 10.12.2012
Выше идёт речь о том, как избежать ошибки непосредственно при чистой разметке диска утилитой fdisk. То есть — способ вовремя заметить и исправить ошибку. Однако, чаще бывает совсем другая ситуация.
Например, изначально диск был размечен неправильно.
При первичной разметке использовалась программа, которая наплевала на несоответствие физического и логического блоков и не выдала предупреждение.
В этом случае:
-
Логические блоки не совпадают с физическими.
Начало раздела (например, 32256-й байт из примера выше) находится внутри физического блока устройства (между 28762-м и 32768-м байтом, 7-м и 8-м блоком) -
Работа с кривым разделом происходит медленнее, чем могла бы, потому что для каждой процедуры чтения-записи требуются дополнительные просчёты. Адреса не синхронизированы, диск не выровнен.
Особенно ситуация критична с SSD-дисками, которые в этом случае гораздо быстрее изнашиваются.
-
При чтении разметки fdisk-ом, он укажет на эту ошибку.
-
Для каждого кривого раздела диска требуется провести процедуру выравнивания.
Если раздел какое-то время активно использовался, то есть на нём куча информации — примите мои соболезнования и ищите резервное хранилище. Необходимо будет:- Скинуть все данные с раздела на резерв.
- Переразметить диск так, чтобы начало и конец раздела приходились на начала физических блоков диска (это и есть выравнивание).
- Залить данные обратно.
- Повторить операцию для следующего кривого раздела.
По сути, выравнивание — это изменение границ раздела; приведение его логических границ к границам физических блоков.
Комментарии
imen
#cid17815
Ответить
Интересный тезис.
С актуальными версиями fdisk'а такого не замечал.
#cid17834
Ответить
#cid17815, imen
fdisk (util-linux-ng 2.17.2)
Это скорее не ошибка, а предупреждение. Вылезает при просмотре разделов командой p.