1と2のリビジョン間の差分
2019-05-21 23:30:11時点のリビジョン1
サイズ: 2473
コメント:
2019-05-22 00:43:26時点のリビジョン2
サイズ: 4504
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 16: 行 16:
行 20: 行 19:
行 32: 行 30:
 * 本例の製品は容量512GBを謳ってるので、1,073,741,824セクター(512B/セクター)あるはずだが、実際には1,000,215,216セクター(447GB)しか存在しない。
 * 差分の73,526,608セクター=約35GB、全体容量の6.8%ほど足りないわけだが、この製品におけるウェアレベリングのための領域を意味している。
 * 額面からすると、512GBというより480GBと謳ってくれる方がよっぽど安心できるのではあるが、容量512GBを期待してた人からすると肩透かしをくらった気分ではある。

= HPAしてみる =
使用可能領域を400GB({{{400GB×1024MB/GB×1024KB/MB×1024B/MB÷512B/セクター}}}=838,860,800セクター)に設定してみる。

下記の通り実行するだけで良い。
{{{#!highlight console numbers=disable
# camcontrol hpa ada0 -s 838860800 -P -y
}}}

下記に実行例を示す。

{{{#!highlight console numbers=disable
# camcontrol hpa ada0
pass0: <TS512GMTS400S P1225CH1> ACS-2 ATA SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 1024bytes)

Feature Support Enabled Value
Host Protected Area (HPA) yes no 1000215216/1000215216
HPA - Security no
# camcontrol hpa ada0 -s 838860800 -P -y
pass0: <TS512GMTS400S P1225CH1> ACS-2 ATA SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 1024bytes)

Feature Support Enabled Value
Host Protected Area (HPA) yes yes 838860800/1000215216
HPA - Security no
# camcontrol hpa ada0
pass0: <TS512GMTS400S P1225CH1> ACS-2 ATA SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 1024bytes)

Feature Support Enabled Value
Host Protected Area (HPA) yes yes 838860800/1000215216
HPA - Security no
}}}

ホスト防護領域(HPA)の設定と参照

目的

  • 手持ちのSSDでHPA(ホスト防護領域・Host Protected Area)を設定してみた。

  • HPA設定による効果としては、
    • OSからすら使用できない領域を設定することで、設定された領域への一切のアクセスを許さない。
    • この効果は特にSSDの場合、ウェアレベリングに効果がでる。
    • これは、使われない(特に書き込まれない)ことがハードウェア的に保証されているからである。
  • なおあくまでも「サイズ」を指定してるだけなので、特定の固定領域を保護する仕組みでは無い。
  • ウェアレベリングをどう設定するかによるが、エンタープライズクラスのSSDを想定した設定を行ってみる。
    • たとえば400GBサイズのSSDの場合、512GB分のセルを乗せた上で、112GB分をウェアレベリングに使用してたりする。
    • また領域の一部をSLC(Single Level Cell)するといった工夫で寿命を延ばしていたりもする。

  • なおHPAによる領域保護は、SLCに変換してくるわけでもないので、効果はあくまで擬似的なものである。

検証環境

OS起動時のカーネルメッセージ

ada0 at ahcich1 bus 0 scbus1 target 0 lun 0
ada0: <TS512GMTS400S P1225CH1> ACS-2 ATA SATA 3.x device
ada0: Serial Number 002021B4E50963200045
ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 1024bytes)
ada0: Command Queueing enabled
ada0: 488386MB (1000215216 512 byte sectors)
  • 本例の製品は容量512GBを謳ってるので、1,073,741,824セクター(512B/セクター)あるはずだが、実際には1,000,215,216セクター(447GB)しか存在しない。
  • 差分の73,526,608セクター=約35GB、全体容量の6.8%ほど足りないわけだが、この製品におけるウェアレベリングのための領域を意味している。
  • 額面からすると、512GBというより480GBと謳ってくれる方がよっぽど安心できるのではあるが、容量512GBを期待してた人からすると肩透かしをくらった気分ではある。

HPAしてみる

使用可能領域を400GB(400GB×1024MB/GB×1024KB/MB×1024B/MB÷512B/セクター=838,860,800セクター)に設定してみる。

下記の通り実行するだけで良い。

# camcontrol hpa ada0 -s 838860800 -P -y

下記に実行例を示す。

# camcontrol hpa ada0
pass0: <TS512GMTS400S P1225CH1> ACS-2 ATA SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 1024bytes)

Feature                      Support  Enabled   Value
Host Protected Area (HPA)      yes      no      1000215216/1000215216
HPA - Security                 no
# camcontrol hpa ada0 -s 838860800 -P -y
pass0: <TS512GMTS400S P1225CH1> ACS-2 ATA SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 1024bytes)

Feature                      Support  Enabled   Value
Host Protected Area (HPA)      yes      yes     838860800/1000215216
HPA - Security                 no
# camcontrol hpa ada0
pass0: <TS512GMTS400S P1225CH1> ACS-2 ATA SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 1024bytes)

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

付録

検証したドライブに対して camcontrol identifycamcontrol security および camcontrol hpa を実行した結果についての記録。

参考文献

FreeBSD/camcontrol hpa (最終更新日時 2019-05-22 23:17:03 更新者 NorikatsuShigemura)