vhdファイルは何故2TBまで?

2011年3月11日の地震では、本当に恐ろしい思いをしました。
私は地震があった時、品川のマイクロソフトさんのオフィスにいましたが、
社員の方々の温かい対応に本当に感謝しています。
この場を借りてお礼を申し上げます。
(揺れている最中でもAzureコンテンツのアップロードをしている安納さんには脱帽しました)

それから、隔週金曜日に公開している連載「Windows Sysinternalsを使い倒せ」も滞りなく
公開してくださったComputerworld.jpさんにも感謝しています。

■ ■ ■

仮想化のトレーニングで、vhdファイルの話が出てくると、最大2TBまでという記述をよく見かけるのですが、
なぜ2TB?と、ずっと疑問を持っていました。そして、その理由はどうやらこういうことらしい、
というのがわかったので、備忘録として残しておきます。

vhdファイルには、Block Allocation Tableと呼ばれるアロケーションテーブルがあります。
このアロケーションテーブルはファイルシステムのインデックスみたいなもので、
NTFSのMFT(Master File Table)などと同じようなものだと私は認識しています。

Block Allocation Table(以下、BAT)によってポイントされるセクターのサイズは512バイトであり、
そのアドレスが0x00000000から0xFFFFFFFFまであるため、
FFFFFFFF(16進)=4294967295(10進)ですから、

4294967295*512B
=1.999999999534339TB

となり、約2TBのサポートというわけです。
ちなみに、BATとして提供されるテーブルそのもののサイズは4バイトなので、
4294967295*4B=15.99999999627471GB
16GBが上記の約2TBにプラスされます。

なんか、もっともらしい説明なんだけど、これって本当なのだろうか?
2TBの容量固定vhdファイルを簡単に作れるようなテスト環境を用意できるようになったら
試してみたいと思います。

また、この投稿をご覧になった方で「そいつは違うよ」など、ツッコミがありましたら
遠慮なくご指摘いただければ、うれしいです。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメント

  1. susumushibata より:

    初めまして。Windows のサポートエンジニアをしている柴田といいます。

    3TB のHDDをWindows Server 2008 R2 SP1 にマウントし、
    その中に2.5TB のVHD(容量固定)を作成してマウントすることに成功しました。
    このVHDを既存のHyper-V上の仮想マシン(こちらもWindows Server 2008 R2 SP1 )に接続し、データディスクとしてマウントすることにも成功しました。

    もしかして、SP1以降だとこういったことが出来るようになっているのでしょうか?

    新規の仮想マシンを作り、そのブートディスクとしてこのVHDを接続しても、Windows Server 2008 R2 をインストールすることは出来ませんでした。

  2. sophiakunii より:

    柴田様、初めまして。
    2TBの上限というのは、調べてみたところWindows Serverのバージョンに関係なく、VHD拡張子のファイルである限り変わらないようです。
    (VHDX拡張子のディスクの上限は64TBですね)
    ご指摘のような方法は「できるけれども、サポートされない」の類かもしれないので、私も2TB超のVHDを作ってみたいと思います。
    何かわかりましたら、改めてご報告させていただきますね。
    ありがとうございます!

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*