HDD の 4KB セクタ化による影響

HDD のセクタサイズの変更は私としてはかなりショッキングな話だったのでチャットで話題にしてみたんだけど,どうも反応が薄い. 「自分の手の届かない所なので,ジタバタしてもしょうがない」と諦めてるのか,それとも「何がどうなるのか想像もつかない」のか.

で,「想像がつかない」人のためのドキュメントがこちら.

Hard Disk Drive Long Data Sector White Paper

例によって http://bigsector.org/ 上のもの.

ざっと目を通してもらえばわかるけど,「上へ下への大騒ぎ」になっちまうわけである.

エミュレーションモードとネイティブモードのセクタ対応

はっきりとは書いてないようだけど,おそらくはもっとも単純な

4KBセクタ512Bセクタ
00-7
18-15
216-23

こんな対応なのだろう.

CHS パラメータの呪い

Windows Vista では違うようだけど,それより前の Windows では,シリンダ数・ヘッド数・セクタ/トラック数のいわゆる CHS パラメータでのシリンダ境界に合わせてパーティションを切っている. 現代の HDD ではトラックあたりのセクタ数を外周と内周で変えていたりするので(MO の記録面を想像してみるといいだろう),CHS パラメータは HDD の物理的な値とは別物である.

ここで思い出してほしいのは,(ATA HDD では)ヘッド数・セクタ/トラック数はそれぞれ最大値が 255, 63 という値だということ. たとえばこんな感じ.

# fdisk -l /dev/hda

Disk /dev/hda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x6f08c061

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1       30401   244196001   83  Linux

ということは,シリンダ境界は,512B セクタの世界では

255 x 63 = 16065 セクタ

単位になることになり,8 で割り切れる数にはなりにくそうである.

ということは,512B セクタの世界で何も考えずにパーティションを切ると,4KBセクタの途中からパーティションが始まってしまうかもしれない(4KB セクタ先頭と一致するのは 8 の倍数のシリンダのみ).

4KB セクタの一部書き換え

エミュレーションモードで 4KB セクタの中の一部の 512B セクタを書き換えるような場合,内部ではきっと

  1. 該当する 4KBセクタをいったん読み込んで
  2. バッファ上で 512B セクタを書き換えて
  3. ディスクに書き戻す

ような操作を行う必要があるはずである.

ということは,たとえエミュレーションであったとしても,このような書き込みが極力発生しないようなアクセスであることが望ましいわけである. で,先の 4KB セクタとパーティション先頭が合わない状態は,このような中途書き込みが発生しやすい状況だったりする.

ネイティブモードでは

今まではエミュレーションモードでの話だったのだけど,4KB セクタネイティブのモードの場合,

  • そもそもパーティションテーブルの仕様はどうなるのか
  • ファイルシステムの仕様もどうなるのか

というあたりからして謎だらけ,というか未定だったりするわけで.

一番単純なのは

論理仕様は 512B セクタで定義して,4KB セクタでは「まとめ読み」「まとめ書き」ができるだけ

というところなんだろうけど.

あと

  • SATA ホストアダプタ

も対応できるのかなぁ?

ATA コマンドとは別に DMA 転送長も設定できるようなデバイスならいいんだけど,ATA コマンドをスヌープして勝手に転送長を決めてたりすると,セクタ長が替わったときにドライバ側で違いを吸収できなかったりするわけで.

まとめると

エミュレーションモード
従来のシステムで動作するんだろうけど,パーティション切りによってパフォーマンスに差が出てくるかもしれない
ネイティブモード
ディスク上のフォーマットがどうなるのか全く見えない. そもそも今の SATA ホストアダプタで対応できるの?

ってなところかなぁ?


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-04-26 (日) 09:06:50 (4198d)