Отключение HPA на дисках под FreeBSD

Уже несколько раз наступал на проблему с корректностью определением размера диска, когда FreeBSD для нового диска видит доступный объём 31Mb:

ada4: <ST1000NC001-1DY162 CN02> ATA-8 SATA 3.x device
ada4: 150.000MB/s transfers (SATA 1.x, UDMA5, PIO 8192bytes)
ada4: 31MB (65134 512 byte sectors: 16H 63S/T 64C)

Немного обидно для диска объёмом 1Tb видеть доступными только 31Mb.

Причина такого поведения HDD кроется в существовании Host Protected Area (HPA), которую можно использовать для дополнительной защиты Ваших данных в случае, например, изъятия носителя. Почему-то я сталкивался с активированным HPA только на жёстких дисках Seagate объёмом 1Tb, но, судя по результам поиска в интернете, с данной проблемой сталкивался не только я.

Раньше для отключения HPA мне пришлось загружать linux с livecd и использовать команду hdparm. Но в 2013-ом году в FreeBSD для camcontrol(8) добавили поддержку работы с HPA.

Проверить состояние HPA можно следующим образом:

# camcontrol hpa ada4
pass5: <ST1000NC001-1DY162 CN02> ATA-8 SATA 3.x device
pass5: 150.000MB/s transfers (SATA 1.x, UDMA5, PIO 8192bytes)

Feature                      Support  Enabled   Value
Host Protected Area (HPA)      yes      yes     65134/1953525168
HPA - Security                 no

В выводе команды видно, что HPA разрешён и установлено ограничение доступного пространства в 65134 секторов, что как раз соответствует 31.8Mb. При этом полным объём диска равен 1953525168 секторам. Именно это значение и необходимо использовать для открытия полного объёма диска:

# camcontrol hpa ada4 -P -s 1953525168
pass5: <ST1000NC001-1DY162 CN02> ATA-8 SATA 3.x device
pass5: 150.000MB/s transfers (SATA 1.x, UDMA5, PIO 8192bytes)

You are about to configure HPA to limit the user accessible
sectors to 1953525168 persistently on the device:
pass5,ada4: <ST1000NC001-1DY162 CN02> ATA-8 SATA 3.x device

Are you SURE you want to configure HPA? (yes/no) yes

Feature                      Support  Enabled   Value
Host Protected Area (HPA)      yes      no      1953525168/1953525168
HPA - Security                 no

Ключ -P указывает, что данные изменения необходимо сделать перманентными, и полный объём диска теперь будет доступен даже после выключения и включения HDD.

PS. До перевода ATA устройств под управление CAM (FreeBSD до 9.0-RELEASE) в /boot/loader.conf было достаточно прописать:

hw.ata.setmax="1"

 

Коротко о себе:

Работаю в компании Tune-IT и ассистентом кафедры Вычислительной техники в СПбГУИТМО.

Очень люблю команду cat и ставить core solaris.