Исходные данные:
Motherboard: GA-965P-DS3 rev. 1.0
Motherboard BIOS: BIOS F1
HDD: Samsung HD103UJ (1 Терабайт)
HDD: Western Digital WD10EACS (1 Терабайт)
OS: Gentoo Linux
hdparm v8.6Проблема:
Недавно я приобрёл два SATA HDD размером в 1000Мб (1Тб): Samsung HD103UJ и Western Digital WD10EACS.
Я подключил их оба к материнке и к моему удивлению в BIOS один из них (Samsung) определился как 32Мб.
Манипуляции со шлейфами (портами SATA) биосом, операционкой и другие танцы с бубном не помогали.
Samsung был реанимирован с помощью HDD Capacity Restore под Windows у товарища.
Дома диск определился правильно. Предполагая, что проблема была с Samsung'ом я продолжил
манипуляции с дисками дома. К моему удивлению я через некоторое время обнаружил,
что Western Digital тоже стал определяться как 32Мб.
Причина:
Причина в том, что материнская плата (BIOS) резервировала некоторое место под свои нужды.
Это зовется HPA (Host Protected Area). После данной манипуляции по каким-то причинам диск
начинал определяться неправильно. Насколько мне известно, такое происходит только
с терабайтными жесткими дисками, если объем меньше, то активизация HPA не повлияет
на определение размера BIOS'ом. Активизация данной функции (области) происходила при подключении
к определённому SATA порту. На моей материнке есть два типа SATA портов: т. н. SATA-II 0/1/2/3
(желтые, от контроллера Intel ICH8) и т. н. GSATA-II 0/1 (красные, от контроллера J-Micron).
Данный эффект происходил на порту SATA-II 0 (возможно и на других портах SATA-II; по крайней
мере HDD на GSATA-II 0/1 не затрагивались). Соответственно в первом случае я подключал
Samsung к SATA-II, а WD к GSATA-II, во втором случае, я их поменял (естественно, я не придавал этому значения).
Решение:
Под Windows данная проблема решается программой HDD Capacity Restore
http://www.bestvistadownloads.com/download/t-free-hdd-capaci...
Под Linux это решается стандартными средствами - командой hdparm.
Вот пример:
Диск без HPA:
$ hdparm -N /dev/sdd
/dev/sdd:
max sectors = 1953525168/1953525168, HPA is disabled
Диск с HPA:
$ hdparm -N /dev/sdc
/dev/sdc:
max sectors = 586070255/586072368, HPA is enabled
Для отключения HPA для второго случая используем комманду
$ hdparm -N p586072368 /dev/sdc
То есть мы приравниваем количество секторов, доступных пользователю, к максимальном количеству секторов на диске.
Буква 'p' необходима для того, чтобы настройки сохранились в flash жесткого диска
(то есть чтобы после выключения питания они сохранились). Менять параметр с ключем 'p'
можно только один раз за сессию жесткого диска (сессия - промежуток времени между включениям и выключением).
После изменения параметра необходимо выключить и включить винчестер (по факту - компьютер).
Что касается решения корня проблемы - есть мнение, что прошивка F7 материнской платы ее устраняет, но я не пробовал.
Дополнительная информация:
http://en.wikipedia.org/wiki/Host_Protected_Area
http://www.linux.gr/cgi-bin/man/man2html?hdparm+8
http://www.gigabyte.ru/forum/viewtopic.php?f=23&t=25076&p=14...
http://www.gigabyte.com.tw/Products/Motherboard/Products_Spe...
URL:
Обсуждается: http://www.opennet.dev/tips/info/1673.shtml