連載
» 2011年06月09日 00時00分 UPDATE

PCハードウェア強化ラボ:第3回 2Tbytes超ディスクをデータ用ストレージとして利用する (1/2)

ディスクの大容量化、高速化は着々と進んでいる。だが2Tbytesを超えると正しく認識できないことがある。その原因と対策は?

[打越浩幸,デジタルアドバンテージ]
PCハードウェア強化ラボ ―― ビジネスPCハードウェア・パワーアップ実践ガイド ――
Windows Server Insider

 

「PCハードウェア強化ラボ ―― ビジネスPCハードウェア・パワーアップ実践ガイド ――」のインデックス

連載目次

ディスクの大容量化、高速化は着々と進み、3Tbytesの製品も手に届くようになってきた。だが2Tbytesを超えるとシステムによっては正しく認識できないことがある。その原因と対策は? 今回は2Tbytes超ディスクを追加のデータ・ストレージとして使う方法を解説。2Tbytes超ディスクからシステムをブートする方法は次回解説予定。


 PCを構成するほかのパーツと同様に、ハードディスクの技術開発も急速に進み、日々、大容量化、高速化、高機能化している。一般PC向けのハードディスクなら、2Tbytesのハードディスクは1万円もしないし、少々バイト単価は高くなるが3Tbytesのディスクでも1万円台半ばで購入できる。10年前からすると、同じ価格なら容量は50倍以上にもなっている。

wi-diskphoto01.jpg テラ・バイト級の大容量ディスクの例
これは3Tbytesと2Tbytesのディスクの例(Western DigitalのWD30EZRXとWD20EARS)。3Tbytesでも1万5000円程度で購入できる。1台でも十分大容量だが、RAIDなどと組み合わせれば数Tbytesクラスのファイル・サーバなどが簡単に構築可能だ。だがシステムの制限により、2Tbytesまでしか利用できないこともある。製品表面のラベルには、注意点やツール、サポート情報の参照先などが細かく記述されている。特にWindows XPで利用する場合は要注意のデバイスである。

 このように手軽に入手できるようになった大容量ハードディスクを、増大する一方のデータを保存するために活用したいと考えるのは自然なことだ。しかしながら、2Tbytes以上のハードディスクをPCに接続すると、実際よりずっと少ない容量しか認識されなかったり、2Tbytes以上のサイズのパーティションが作成できなかったりすることがある。しかも、PCあるいはOSによっては、まったく問題なく全容量が正しく認識されることもある。

 本稿では最初に、こうした問題がなぜ生じるのか、ディスク・システムの仕組みや仕様に踏み込んで解説する。次に、Windows環境におけるデータ用ストレージという前提で、どうすれば2Tbytes以上のハードディスクの全容量を正しく取り扱えるのか、その必要条件や具体的な操作方法などを説明する。

「2Tbytesの壁」問題

 ハードディスクの全容量が正しく認識されない、いわゆる「〜の壁」という制限は過去何度となく繰り返されており、そのたびに新たな解決策が開発され、導入されてきた(以下の記事参照。これらは10年ほど前の記事である)。

 このとき、最終的には48bitのLBA(Logical Block Address)でディスクをアクセスするという方法が開発され、現在では一般化している。ディスクのブロック(セクタ)をLBAという通し番号を使ってアクセスすることにより、ディスクのトラックシリンダセクタといった構造によらず、大容量のディスクであっても問題なくアクセスできるようになった。何しろ、48bitの論理アドレスを使えば、1セクタのサイズを512bytesとしても、

  • 2の48乗セクタ×512bytes=144,115,188,075,855,872bytes=131,072Tbytes(127Peta bytes)

ものサイズまでリニアにアクセスできるはずである。3Tbytes程度のディスクで問題が起こるはずがないだろう。

 だが大容量化に伴ってまた新たな問題が持ち上がってきた。いわゆる「2Tbytesの壁」()という制限である。今度は、PC側のディスク・システムの仕様上の制限により、2Tbytesの制限を受けることになってしまった。その原因は、各ディスクの先頭に置かれているMBR(マスター・ブート・レコード)に記録できるパーティション・テーブルのデータの幅が32bit分しか用意されていないことに起因する。このため、最大でも

  • 2の32乗セクタ×512bytes=2,199,023,255,552bytes=2Tbytes

までしかパーティション・サイズを確保できないという問題が起こってしまった。

* 一般にディスク・ベンダではディスクのサイズを計算する場合、1TB=1,000,000,000,000bytesとしているが、本稿(および本フォーラム)では1Tbytes=2の40乗(1,099,511,627,776bytes)として計算している。そのため、本稿における「2Tbytesの制限」は、「2.2TBの制限」などと呼ばれることもある。あらかじめご了承願いたい。


 パーティションとは、ハードディスクの中を区切って作った区画のことであるが、その開始位置やサイズを指定するデータの幅が32bitしかないので、2Tbytesまでしかアクセスできないのである。また最近ではRAID技術を使って複数のディスクを組み合わせることも簡単に行えるようになったため、たとえ個々のディスクのサイズが2Tbytes以下であっても、総容量が2Tbytesを超えることも少なくない。2Tbytesを1パーティション、つまり1つのボリュームとして使う必要性はあまり高くないだろうが、2Tbytes以上の領域にアクセスできないのは非常に困る。例えば3Tbytesのディスクをこのような制限があるシステムに接続すると、2Tbytes以降の領域(サイズとしては750Gbytes程度)へはアクセスできず、未使用のまま放置しておくしかないからだ。

MBRに代わる、GPT形式のパーティション管理

 このような問題が発生するのは、そもそもデータ幅が32bit分しかないMBRを使うからである。これを解決するには、MBRを拡張するか、まったく別のパーティション管理機能を導入するしかない。だがMBRはすでに広く使われているパーティションの管理方式であり、いまさらこれを拡張するわけにはいかない。MBRを使うプログラム(OSやディスク管理ソフトウェアなど)がすべて影響を受けてしまうからだ。それに、MBR自体は単なるデータ構造が定義されているだけのものであり、それを操作するプログラムはいっさい含まれていない。なのでMBRだけ仕様を変更/拡張しても意味がない。

 そこでMBR形式に代わるパーティション管理方式として、新しく「GPT(GUID Partition Table)」という管理方式が開発され、利用されることになった。GPTでは、パーティションの開始位置やサイズを指定するために64bit幅のデータ領域を用意している。これならば48bit LBAによるディスクのブロック・アドレスをそのまま格納できる。またMBRにあったさまざまな制限などもなくし、拡張性/柔軟性に富み、信頼性の高いパーティション管理システムとなっている。GPT方式のメリットとしては、次のようなものがある。

  • 論理ブロック・アドレスやパーティション・サイズを64bit幅のデータとして管理する
  • ディスク1台あたり、最大で128パーティションまで管理できる。MBRのような、プライマリ・パーティション(最大4つまで)や拡張パーティション、論理パーティションという区別はない。すべて対等なパーティションになる
  • 冗長性/信頼性確保のため、ディスクの先頭と末尾に同じGPTデータが置かれ、プライマリが障害などで利用できないときはバックアップが利用される
  • パーティション・データの正当性を保証するため、CRC32によるチェック・データが付けられている
  • パーティションの内容を識別するためにGUIDが利用されている
  • パーティションごとに、最大で36文字までの識別用文字列を割り当てることができる
  • LBA 0(ディスクの先頭のブロックのこと)には互換性のためのMBRデータが置かれている

古いソフトウェアによる誤操作を防ぐ「互換MBRデータ」の仕組み
 上のメリットのうち、最後の1つ(互換性のためのMBRデータ)について補足しておく。GPTは新しいパーティション管理方式であるため、従来のMBRとはまったく互換性がない。いったんディスクをGPT形式でフォーマットしてしまえば、そのディスクはもうMBR方式ではアクセスしてはいけない。すでにGPT形式で確保されたパーティションのデータなどが壊れてしまうからだ。

 とはいえ、MBRを操作する(古い)ソフトウェアはGPTを理解できないだろうから、アクセスを完全に防ぐことはできないだろう。そこで考え出されたのが、元々のMBRの場所であるLBA 0にダミーの(レガシー)MBRデータを置く方法である。

 MBRで取り扱える最大ディスク・サイズは2Tbytesなので、すでに2Tbytes(もしくはディスクのサイズ)いっぱいに特別なパーティションが確保されている、というMBRデータを作成してLBA 0に書き込んでおく。するとMBRを操作するソフトウェアは、MBRやパーティションの内容を変更することはないはずである。このような目的で使われるMBRを「保護MBR」とか「GPT保護パーティション」などという。

wi-fig01.gif MBRとGPT
2Tbytesの限界を超えるため、パーティションのデータはGPTで管理する。ただしGPT形式のディスクでは、互換性のために(勝手に操作されないように)MBRのデータも保持している。UEFIの仕様書より引用。MBRから見ると、ディスクのサイズは2Tbytesで、その全部がすでに使用(割り当て)済み状態となっている。本当のパーティション・データはGPT側で管理する。ディスクのサイズが2Tbytes以上あるときは、GPT保護パーティションのサイズは2Tbytesいっぱいとなるが、2Tbytesよりも小さいディスクの場合はディスクの末尾までとなる。

 これ以外に、例えばディスクの前半1TbytesはMBRで管理し、残りはGPTで管理するといった方法も考えられるが(これならば、従来のMBRを利用するソフトウェアも1つのシステム上に同居できる)、間違えてお互いのパーティション・データを破壊したりする可能性があるので、あまり使わない方がよいだろう。少なくともWindows OSはこのような使い方はせず、GPT保護パーティションのみを利用している。

GPT形式のディスクを追加ストレージとして利用するには

 さてこのMBRに代わるGPT(GPT形式のディスク)であるが、いったいどのOSで利用できるのであろうか。以前の137Gbytes超ディスクのときのように、システム(PCやBIOS、インターフェイス・カード)やOSが対応するまで数年待たねばならないのであろうか? もしそうなら、残念である。大容量ディスクはすでに一般的なのに。

 やや悲観的なことを述べたが、実はGPT形式のディスクは、追加ストレージ(追加のボリューム)として利用するだけなら、Windows XP x64 EditionやWindows Server 2003 SP1以降、すなわち以下のWindows OSですでに利用可能である。

  • Windows XP x64 Edition
  • Windows Server 2003 SP1以降
  • Windows Vista
  • Windows Server 2008
  • Windows 7
  • Windows Server 2008 R2

 一方、Windows XP(32bit版)やWindows 2000およびそれ以前のWindows OSでは、GPTは利用できない。これらのOSでは、2Tbytes以下のディスクなら保護パーティションのみが見える。つまり利用できないボリュームとして見えるということである(Windows XPでGPT保護パーティションがどのように見えるか、MBR形式に変換するにはどうするかについては関連記事参照)。2Tbytes以上のディスクの場合は、ベンダ提供のドライバなどをインストールしないと、ディスクそのものがアクセスできないことがある。

 GPT形式は次回解説する「UEFI(Unified Extensible Firmware Interface)」規格の一部として作成されたが、UEFI規格そのものはもう10年近く前に決められたものである。そのため、当時からWindows OSではGPT形式のディスクを追加ストレージとして利用する機能はサポートされていた。UEFIはIA-64システムなどで利用することを主眼に開発されたものであったが、現在ではサーバ・システムやビジネス向けPCなどを中心に、サポートが進んでいる。GPT形式のディスクに関するドキュメントやFAQについては、以下のサイトも参照していただきたい。

【コラム】2Tbytesの壁を打破する技術

 ディスクの2Tbytesの壁を打破し、3Tbytesとかそれ以上のサイズのディスクの利用を可能にする方法として、GPT以外の方法もいくつか利用されている。例えばディスクのセクタ・サイズを(物理的もしくは論理的に)4Kbytes(=512bytesのセクタの8倍)にすれば、2Tbytesの限界を16Tbytesまで引き上げることができるだろう。ただしこの方法ではセクタ・サイズが広く普及している512bytesではなくなり、システムやソフトウェアによっては互換性に問題を生じる可能性がある。特にディスクのパーティションを操作するようなソフトウェアで互換性の問題が起こると、データを失うことにもつながりかねない。またパーティションの境界と4Kbytesセクタの境界がずれ、パフォーマンスの低下を引き起こす可能性がある(この問題については、Linuxフォーラムの「2TBを超えろ! ATAディスクの4Kセクタ問題とは?」が参考になる)。

 これ以外にも、ディスクを仮想的に2Tbytesごとに区切って複数のドライブに見せかけるという方法もあり、マザーボード・ベンダによっては、このような機能を実現する特別なデバイス・ドライバを用意していることがある(RAIDカードに実装されている場合もある)。ただし特別なドライバをインストールさせなければならないため、どの環境でも利用できるという保証はないし(比較的新しいマザー・ボードでしかサポートされていないことが多い)、環境によっては互換性に問題が生じる可能性もある。また1ドライブあたり2Tbytesという制限を取り除くものではなく、単一の大きなボリュームを作成したいといった要求には応えられないことがある。

 いずれにしろ、GPT以外の方式・方法は過渡的なものであり、将来性やメンテナンス性などを考えると、特別なドライバなどが必要な方法はトラブルの元なのであまり勧められない(特に業務で利用するような場合)。Windows XPではGPT形式はサポートされていないので2Tbytes以下のディスクのみを利用することにし(もしくはネットワーク経由でのみ使う)、2Tbytes超のディスクを利用したいならWindows VistaやWindows 7を導入するのが簡単で面倒も少ない。ちなみにこのGPT形式のディスクはLinuxやMac OS X、FreeBSD、HP-UXなど、ほかの多くのOSでも採用されている標準的な技術である。



       1|2 次のページへ

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。