Developer's Blog

大容量 HDD 導入時には注意!「2TBの壁」

こんにちは。サーバ担当の家野(ヤノ)です。

最近は HDD も大容量化や低価格化が進み、TB(テラバイト)単位の HDD も珍しくなくなってきました。

しかしながら大容量の HDD を組み込む時には若干注意が必要です。
これまでも HDD が大容量化する度に「容量の壁」が存在したのですが、昨今でも OS によっては通称「2TB の壁」という容量の壁が存在するためです。

今日はこの 2TB の壁についてご紹介したいと思います。



■ 2TB の壁の具体例

例えばですが、3TB の HDD を 32bit 版 WindowsXP に接続してみると、何故か 746GB しか認識しません。しかもこの 746 GB は「GPT 保護パーティション」と表示されフォーマットもできないのでデータの保存領域としても使えません。
何故こんなことが起こるのでしょうか。

■データの呼び出し方法に制約の原因が

現在、HDD へのアクセス方法としては「LBA(Logical Block Addressing)方式」という方法でアクセスします。
簡単に言うと HDD の各セクター毎にユニークな番号を割り当てていき、そのセクター番号を元にアクセスする方式です。
これは HDD のディスク構成に影響を受けないというメリットがありますが、2TB の壁はここに制約の一端があるようなのです。

一般的に HDD の論理セクターは 512B(バイト)が前提なので
「セクターサイズ×LBA でアクセスできるセクター数」
という式で HDD 容量の限界が計算できます。

LBA でアクセスできるセクター数は 32bit のため、2 の 32 乗で約 4G 個となります。
これを上記の式に当てはめると 512B×4G = 2TB となり、アクセスできる限界は約 2TB となります。

また、 2TB までのディスクは基本的に「MBR(Master Boot Record)方式」という方式でディスクパーティションを管理しています。
これは先頭セクターを「MBR」と呼び、その中にパーティションの情報や起動用の初期プログラムを書き込みます。
MBR 方式で管理する HDD の場合、パーティションの先頭セクターの位置とセクター数をそれぞれ 32bit で表記するため、単一のパーティションとしてはこちらもやはり 2TB が限界となります。

さらに MBR 方式ではデータ転送コマンドが 10 バイト、という点もあり、ここで指定できるセクター数が 32bit 分のセクターまでしか指定できないため、使用できる容量が 2TB に制限される要因となっています。

■ではどうやって 2TB の壁を超えるのか

せっかく 2TB を超える容量があっても、それを使えないのでは宝の持ち腐れです。
どうにかして 2TB 以上の HDD を使えないでしょうか。

そこで導入されたのが「GPT(GUID Partision Table)方式」と呼ばれる方式です。GPT 方式はサーバー用途などで使われていたようですが、それがコンシューマ向けにも使用され始めた形です。この方式では 2番目のセクターから可変長の「基本 GPT」と呼ばれるパーティションテーブルが置かれます。
この基本 GPT では、セクター数を 64bit で表現します。

64bit ということは 2 の 64 乗、つまり約 1844 京セクターまで扱えますので、単純に 512 バイトでかけると約 8ZB(ゼタバイト)まで対応可能、ということになります。数字が大きすぎてイメージしにくくなりますが、2TB の壁は見事突破可能、となっている計算です。

なお、GPT 方式は WindowsXP(64bit 版)や Windows Vista、Windows 7 が対応しています。そのため、上記の OS であればデータ用ディスクとして 2TB 超の HDD を使用することができます。

■ただし起動ディスクにするにはさらに注意が必要です

GPT 方式のおかげで無事データディスクとしては 2TB 超の HDD を扱えるようにはなりましたが、こと OS の起動ディスクとなるとまた注意が必要です。

OS の起動ディスクとして使用する場合は、OS が 64bit に対応している必要があります。しかしながら 64bit なら何でも良いのか、というとそういうわけでもなく、64bit 版 Windows Vista SP1 以降が対応とのことです。
(Windows Server や Linux ではまた事情が異なるのですが、今回コンシューマ向け Windows を対象として話を進めます)

しかも、マザーボードの方でも「UEFI(Unified Extensible Firmware Interface)」に対応していることが必須になります。 UEFI は簡単に言うと BIOS に拡張性を持たせるための仕組みで、GPT 方式の HDD を起動ディスクとして使用するための機能を提供します。
(Linux などでは UEFI が無くても GPT 方式の HDD で起動できる仕組みが組み込まれているディストリビューションもあります)

■まとめ

最後に、簡単にまとめてみましょう。

Windows XP(32bit) -> 基本 2TB までしか認識できない
Windows XP(64bit) -> 2TB 超データ領域○/OS の起動ディスク×
Windows Vista(32bit) -> 2TB 超データ領域○/OS の起動ディスク×
Windows Vista(64bit/無印) -> 2TB 超データ領域○/OS の起動ディスク×
Windows Vista(64bit SP1) -> 2TB 超データ領域○/OS の起動ディスク○
Windows 7(32bit) -> 2TB 超データ領域○/OS の起動ディスク×
Windows 7(64bit) -> 2TB 超データ領域○/OS の起動ディスク○

コンシューマ向け Windows としては上記のような結果となるようです。

HDD を増設する際の参考になれば幸いです。

Copyright © 2019 Fenrir Inc. All rights reserved.