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ファイルを簡単に作れるようなテスト環境を用意できるようになったら
試してみたいと思います。

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