Tweet

* HDD の 2TB 越え問題 [#t620466e]

話題に上ったのでまとめてみる.

** 2TB というマジックナンバー [#e31d0297]

「セクタ番号」が 32 ビットで表現されていることにより発生する制限である.

 512 x 2**32 = 2199023255552 = 2T

2TB 以上のセクタ番号を表現するのに桁が足りなくなってしまうわけである.

** MBR パーティションテーブルの限界 [#vbc7a85f]

PC/AT 互換機で使われている(いわゆる)MBR パーティションテーブルでは,「セクタ番号」が 32 ビットで表現されている.
このため,2TB 問題が発生する.

*** 対応 [#r9c9fd45]

要するにパーティションテーブルの書式の限界なのであるから,書式を改めれば済む離しである.
全般的なトレンドとしては GPT (GUID Partition Table) への移行の方向へ進んでいるようである.

*** 問題 [#p42fed1e]

- ブートローダが GPT を解釈し,カーネルをメモリ上にロードできるか
- OS のドライバが GPT に対応しているか
-- Linux は対応している
-- Windows は Vista 以降で対応している
-- Mac OS は EFI ベースのブートローダなので,対応してるんじゃないかな.たぶん.
- OS のインストーラが over 2TB のドライブに対し適切にインストールできるか

** SCSI コマンド [#bb0d2a0e]

例えば [http://en.wikipedia.org/wiki/SCSI_Read_Commands#Read_.2812.29 SCSI の Read(12)]コマンドにおいても,「セクタ番号」が 32 ビットで表現されている.
このため,同様に 2TB 問題が発生する可能性がある.

*** 対応 [#m9e9e5ec]

はるか昔(記憶によれば SCSI-2 の時代に既に)に「セクタ番号」が 48 ビットの  READ(16) コマンドが定義されている.
over 2TB の HDD に対してはこの READ(16) コマンドを使用すればいいだけの話である.

*** 影響 [#w7c447b9]

SCSI や FireWire 接続の HDD はもちろん影響を受ける.
これだけでなく,USB ストレージなど SCSI コマンドセットを使ったデバイスも影響を受ける.

*** 問題 [#g17d64e6]

- ブートローダが対応しているか,という問題もあるが,今日ではあまり重要ではないだろう
- インターフェースのロジックは,おそらく対応しているだろう
- OS のデバイスドライバは対応していない可能性はある
-- Linux の USB ストレージドライバでは対応してないかもしれない


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS