Вход:  Пароль:  
FreeSource: HPA ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

HPA и BIOS


> Есть интернет-шлюз с Office Server 4.0 (kernel-image-std-smp-2.6.18).
> Понадобилось мне включить на нем модули для трассировки rtsp. А в ядре
> их не оказалось... Стал я обновляться.
> dist-upgrade до 4.1 + ядро  2.6.25-std-def-alt8.M41.5 – модулей нет,
> но полет нормальный.
> 
> Поставил ядро kernel-image-std-def-2.6.30-alt14 – система перестала
> загружаться. Во время загрузки аварийный режим и сообщение:
> 
> /dev/sda5 filesystem size (according to the superblock is 6018460 blocks
> physical size of the device is 6018299
> Either the superblock or the partition table is likely to be corrupt!
> 
> Если снова загрузиться с ядром  2.6.25-std-def-alt8.M41.5, то
> нормально загружается и показывает размер /dev/hda5 (не sda5!) 6018460 
> блоков.
[...]
> Помогите пожалуйста разобраться – кто из них неправ и что делать
> (желательно без переформатирования раздела :) ).

Видимо, на диске есть Host Protected Area – область, которая должна
быть скрыта от ОС (такая область, например, создаётся многими версиями
BIOS от Gigabyte для хранения резервной копии кода BIOS).  Старые
драйверы IDE при загрузке всегда отключали HPA (во время написания
этого кода была причина для подобных действий – отключение ограничения
размера диска, поставленного для обхода ошибок BIOS при работе
с большими дисками); в новых драйверах libata отключение
HPA по умолчанию не производится.  В результате при переходе с ide на libata
без дополнительных настроек возможно уменьшение доступного размера
дисков; причём, начиная с 2.6.28, если какой-либо раздел выходит 
за пределы диска, ядро автоматически уменьшает доступный размер этого
раздела с выдачей сообщения вида:

  sdXY: pN size M limited to end of disk

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

Решать такую проблему можно несколькими способами:

 – Наиболее правильный – переразбить диск с учётом HPA (чтобы
   исключить возможность конфликтов с тем кодом в BIOS, который
   использует эту область).  Для ext2/3/4 есть возможность уменьшить
   размер ФС без переформатирования с помощью resize2fs.

 – Можно попробовать снять HPA – например, с помощью hdparm (опция -N), 
   но это может не пройти, если BIOS устанавливает HPA при каждой загрузке
   (тогда команда установки постоянного значения HPA пройдёт только после
   передёргивания питания диска); кроме того, подобная функция может быть
   в утилитах от производителя диска.  Однако даже после успешного снятия
   HPA при следующей перезагрузке BIOS может вновь установить своё 
   значение (если там нет в этом месте правильной проверки содержимого
   таблицы разделов).

 – Наконец, можно заставить драйверы libata отключать HPA, как это
   делали старые драйверы ide:

     options libata ignore_hpa=1

   В этом варианте наибольший риск конфликтов с BIOS (поскольку BIOS  
   считает, что HPA на диске есть и может использоваться BIOS для своих
   целей, однако ОС на самом деле использует эту область диска 
   для хранения данных).  В случае материнок от Gigabyte в качестве меры
   защиты вроде бы годится переключение контроллера из режима IDE в AHCI
   (если эта опция доступна) – похоже, эти BIOS в режиме AHCI не умеют
   использовать HPA для сохранения резервной копии BIOS.

vsu@ в sisyphus@


 
Файлы [Скрыть файлы/форму]
Комментариев нет. [Показать комментарии/форму]