ディスクの大容量化、高速化は着々と進んでいる。だが2Tbytesを超えると正しく認識できないことがある。その原因と対策は?
ディスクの大容量化、高速化は着々と進み、3Tbytesの製品も手に届くようになってきた。だが2Tbytesを超えるとシステムによっては正しく認識できないことがある。その原因と対策は? 今回は2Tbytes超ディスクを追加のデータ・ストレージとして使う方法を解説。2Tbytes超ディスクからシステムをブートする方法は次回解説予定。
PCを構成するほかのパーツと同様に、ハードディスクの技術開発も急速に進み、日々、大容量化、高速化、高機能化している。一般PC向けのハードディスクなら、2Tbytesのハードディスクは1万円もしないし、少々バイト単価は高くなるが3Tbytesのディスクでも1万円台半ばで購入できる。10年前からすると、同じ価格なら容量は50倍以上にもなっている。
このように手軽に入手できるようになった大容量ハードディスクを、増大する一方のデータを保存するために活用したいと考えるのは自然なことだ。しかしながら、2Tbytes以上のハードディスクをPCに接続すると、実際よりずっと少ない容量しか認識されなかったり、2Tbytes以上のサイズのパーティションが作成できなかったりすることがある。しかも、PCあるいはOSによっては、まったく問題なく全容量が正しく認識されることもある。
本稿では最初に、こうした問題がなぜ生じるのか、ディスク・システムの仕組みや仕様に踏み込んで解説する。次に、Windows環境におけるデータ用ストレージという前提で、どうすれば2Tbytes以上のハードディスクの全容量を正しく取り扱えるのか、その必要条件や具体的な操作方法などを説明する。
ハードディスクの全容量が正しく認識されない、いわゆる「〜の壁」という制限は過去何度となく繰り返されており、そのたびに新たな解決策が開発され、導入されてきた(以下の記事参照。これらは10年ほど前の記事である)。
このとき、最終的には48bitのLBA(Logical Block Address)でディスクをアクセスするという方法が開発され、現在では一般化している。ディスクのブロック(セクタ)をLBAという通し番号を使ってアクセスすることにより、ディスクのトラックやシリンダ、セクタといった構造によらず、大容量のディスクであっても問題なくアクセスできるようになった。何しろ、48bitの論理アドレスを使えば、1セクタのサイズを512bytesとしても、
ものサイズまでリニアにアクセスできるはずである。3Tbytes程度のディスクで問題が起こるはずがないだろう。
だが大容量化に伴ってまた新たな問題が持ち上がってきた。いわゆる「2Tbytesの壁」(*)という制限である。今度は、PC側のディスク・システムの仕様上の制限により、2Tbytesの制限を受けることになってしまった。その原因は、各ディスクの先頭に置かれているMBR(マスター・ブート・レコード)に記録できるパーティション・テーブルのデータの幅が32bit分しか用意されていないことに起因する。このため、最大でも
までしかパーティション・サイズを確保できないという問題が起こってしまった。
* 一般にディスク・ベンダではディスクのサイズを計算する場合、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程度)へはアクセスできず、未使用のまま放置しておくしかないからだ。
このような問題が発生するのは、そもそもデータ幅が32bit分しかないMBRを使うからである。これを解決するには、MBRを拡張するか、まったく別のパーティション管理機能を導入するしかない。だがMBRはすでに広く使われているパーティションの管理方式であり、いまさらこれを拡張するわけにはいかない。MBRを使うプログラム(OSやディスク管理ソフトウェアなど)がすべて影響を受けてしまうからだ。それに、MBR自体は単なるデータ構造が定義されているだけのものであり、それを操作するプログラムはいっさい含まれていない。なのでMBRだけ仕様を変更/拡張しても意味がない。
そこでMBR形式に代わるパーティション管理方式として、新しく「GPT(GUID Partition Table)」という管理方式が開発され、利用されることになった。GPTでは、パーティションの開始位置やサイズを指定するために64bit幅のデータ領域を用意している。これならば48bit LBAによるディスクのブロック・アドレスをそのまま格納できる。またMBRにあったさまざまな制限などもなくし、拡張性/柔軟性に富み、信頼性の高いパーティション管理システムとなっている。GPT方式のメリットとしては、次のようなものがある。
■古いソフトウェアによる誤操作を防ぐ「互換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保護パーティション」などという。
これ以外に、例えばディスクの前半1TbytesはMBRで管理し、残りはGPTで管理するといった方法も考えられるが(これならば、従来のMBRを利用するソフトウェアも1つのシステム上に同居できる)、間違えてお互いのパーティション・データを破壊したりする可能性があるので、あまり使わない方がよいだろう。少なくともWindows OSはこのような使い方はせず、GPT保護パーティションのみを利用している。
さてこのMBRに代わるGPT(GPT形式のディスク)であるが、いったいどのOSで利用できるのであろうか。以前の137Gbytes超ディスクのときのように、システム(PCやBIOS、インターフェイス・カード)やOSが対応するまで数年待たねばならないのであろうか? もしそうなら、残念である。大容量ディスクはすでに一般的なのに。
やや悲観的なことを述べたが、実はGPT形式のディスクは、追加ストレージ(追加のボリューム)として利用するだけなら、Windows XP x64 EditionやWindows Server 2003 SP1以降、すなわち以下のWindows OSですでに利用可能である。
一方、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の壁を打破し、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でも採用されている標準的な技術である。
Copyright© Digital Advantage Corp. All Rights Reserved.