Уже несколько раз наступал на проблему с корректностью определением размера диска, когда 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"