█ Over2TB
Sorry. This page is originally written only in Japanese. Translate to English
2TBの壁。 †
現在HDDには2つの原因の2TBの壁があります。(厳密には2.19TBの壁、または2TiBの壁)
2TBより大きいパーティションを扱えないMBR形式のパーティションテーブルと、
2TBより大きいハードディスクドライブの2TBまでしか扱えない10バイトCDB(32ビットLBA)です。
2TB以下の複数のパーティションに分ける、という解決方法を考えている人がよくいますが
後者の制限を持つ場合、どれだけパーティションを作っても最初の2TBしか見えません
RAIDカードを使っている人は既にこの壁にぶつかっている人も多いでしょう。
2TBとして販売されているHDDは実質的に1.82TBのため2TBの壁を持つOSでも認識できない端数は出ません。
2.5TBやそれ以上の容量として販売されているHDDは2TBの壁を持つOSでもハードウェアが対応していれば2.19TBのHDDとして使用する事が可能です。
なお、IntelのICH10以前のチップセットはハード的に対応していない事が判明しています。
MBRの制限 †
MBR形式のパーティションテーブルでは開始位置、総セクタ数にそれぞれ4バイト(32ビット)が割り当てられています。
この値で表せる最大セクタ数は4294967296セクタ、今現在のHDDは512バイト/セクタですから
パーティションは2つを掛け合わせた2TB(4294967296セクタ * 512バイト = 2199023255552バイト)までとなります。

CDB/LBAの制限 †
10バイトCDB(32ビットLBA)ではHDDのセクタの指定に32ビットで位置を指定しています。
なのでHDDの先頭セクタから4294967296セクタ目までしか読み書き出来ません。
これも同様に4294967296セクタ * 512バイト = 2TBとなります。
Command Descriptor Blockとは
ストレージに対する汎用コマンドです。
読みなのか書きなのか照会なのか、何番目のセクタから読み書きするのか、扱うデータ長はいくらなのか等をまとめたものです。
このデータ構造のサイズが10バイトのものを10バイトCDBと呼ばれます。
他に6バイト、12バイト、16バイトのものが存在し10バイトCDBと12バイトCDBでは位置指定に32ビットLBAを使用します。(12バイトCDBは一度に扱えるデータ量を増やしただけです。)
SCSI CDB
SCSI command
SCSI Read Capacity Command
SCSI Read Commands
SCSI Write Commands

ネットワークアクセス †
ファイル単位のネットワーク共有(SMB/CIFS/NFS等)でのアクセスでは(上記2つの原因による)2TBの壁はありません。(iSCSIやAoEなどでは起こります。)
実ディスク、実セクタ数が見えないからです。(パーティションテーブルも当然見えない)
サーバー側のメディアが何であるかに関わらないので、プロトコルが2TB超をサポートし
渡されたボリュームサイズを解釈できるかだけです。
ただし、扱えるボリュームサイズに壁はなくても、扱えるファイルサイズにはOS自身の制限により限界があります。
(NT系の場合は1ファイル16TB、9x系の場合は1ファイル4GB)



説明に入る前に †
ここでは2TBを超えるボリュームを使う3つの方法を挙げます。
なおこのページの説明では、
パーティション = 一台のディスクの全セクタを1次元的に見た場合に、始点と終点(総セクタ数)で表せるセクタの集合、
ボリューム = 直上にファイルシステムを構築できる1つ以上のパーティション、
とします。
このページの説明ではSi接頭辞表記を使いますが計算は1024です。
一部の画像に明らかにおかしな数値が表示されていますが、
「トリミング」「減色」「背景透過」「変換」以外の画像編集は行っていません。
実際にそう表示されてしまったのでそのまま載せています。
このページで説明するのはソフトウェア側(OS)の制限です。
ご使用のRAIDカード、M/Bのチップセット等が2TB超をサポートするかはメーカーにお尋ね下さい
このページは特定ベンダーに属する公式資料ではありません。
このページ内の情報が正しいという保証は一切しません。営利非営利個人団体を問わずこのページ内の情報を使う際はあなたの責任において使用してください。
16バイトCDB(64ビットLBA)とGPT(GUIDパーティションテーブル)ディスクで使用する。 †
IA-64プラットフォームやIntel Macではお馴染みのGPTです。(IA-64とIntel MacではMBRディスクからは起動できません)
GPT形式ではパーティションのアドレス指定に64ビットを割り当てられているため最大セクタ数18446744073709551616セクタなので、
512バイト/セクタのディスクでは8ZB(8589934592TB)のパーティションを作ることが出来ます。
16バイトCDBも同様にアドレス指定に64ビットLBAを使いますので8ZBのディスクを扱うことが出来ます。

MBRの2TBの壁と、10バイトCDB(32ビットLBA)の2TBの壁を両方越えるその場しのぎではない方法となります。
メリット。 †
OS間でパーティションテーブルの互換性がある。 †
GPTは公開仕様ですのでGPTを扱えるOS間では(バグが無い限り)パーティションテーブルを壊してしまうなどの問題が起きません。
GPTを扱えないOSでもPMBRがありますので余計なことをしない限りパーティションテーブルを壊しません。
当然ファイルシステムは別の問題です。
デメリット。 †
GPTと16バイトCDB(64ビットLBA)を使用可能なOSが限られる。 †
| データボリュームでの使用 (EFI不要) | システム/ブートボリューム (EFIの有るハードウェアでGPTディスクからOSを起動出来るか。) |
Windows 95/98/98SE/Me Windows NT 3.1/3.5/3.51/4.0 Windows 2000 Windows XP Home/Pro(32bit)/MCE/TPE Windows Server 2003 32bit No-SP
| 非サポート | 非サポート |
Windows XP Professional x64 Edition Windows Vista 32bit Windows Vista 64bit No-SP Windows 7 32bit Windows Home Server*1 Windows Server 2003 32bit SP1以降 Windows Server 2003 x64 Windows Server 2008 32bit | サポート | 非サポート |
Windows XP Professional for Itanium-based Systems Windows Server 2003 for Itanium-based Systems Windows Server 2008 for Itanium-based Systems Windows Server 2008 R2 for Itanium-based Systems | サポート | サポート |
Windows Vista 64bit SP1以降 Windows 7 x64 Windows Server 2008 x64 Windows Server 2008 R2 x64 | サポート | サポート |
Linux 2.6以降 (2.4でもGPTは扱えますが、2TBを超えるブロックデバイスを扱えないのでこのページの趣旨から外れる。) | サポート | サポート (カーネルがGPTをサポートした状態にされているか、インストーラーはGPTディスクへのインストールをサポートしているかなどはディストリビューションにより異なる。) |
FreeBSD 5.2.1以降 | サポート | サポート (x86上では6.4/7.1からです。) |
Intel Mac OS X | サポート | サポート |
Solaris | サポート | サポート |
OSをインストールするディスクには出来ない場合が多い。 †
基本的にはGPTディスクから起動する場合にはEFIが必要と考えてください。
ですがEFIを積んだハードウェアの普及はまだまだ進みません。
特にWindowsにおいてはシステムに使うならEFIは必須。
LinuxではGRUBでBIOS Boot Partitionを使い、*BSDではgptbootでBIOSでGPTからのブートが可能なためそれらのOSではEFIは必須とまではいきません。
備考。 †
WindowsはハイブリッドMBRにおいてはGPTよりMBRを優先認識します。
開始終了4バイトずつなら2TB+2TB*2の2パーティションは?と思うかもしれませんが、それでは10バイトCDB(32ビットLBA)の壁は越えることが出来ません。
16バイトCDB(64ビットLBA)対応でGPT未対応のOSは皆無なのでそこでMBRを使う必要性はEFI無しのブートパーティションぐらいです。

ですが少なくともWindowsではそのような操作をサポートしません。
今後出来るようになる必要性も少ないのでサポートされることはないでしょう。


partedではそのようなパーティションテーブルを作ることが可能ですが、パーティションテーブルが桁あふれを起こさないように数値を指定する必要があります。
このようなディスクを16バイトCDB(64ビットLBA)未対応のOSとの互換に使うことは出来ません。
2TBより後ろのパーティションへのアクセスが桁あふれを起こし最悪データ破壊を生みます。
(少なくともWindowsではディスクの末端を越えるパーティションテーブルであっても盲信するためBigDriveの時にもデータを破壊されるケースが存在しました。)

非Windows OSならパーティション無しにmkfs /dev/sdaとかやってmount /dev/sda出来ますけどね。
16バイトCDB(64ビットLBA)は必要ですが。
512バイトを超えるセクタサイズを使用する。 †
4294967296セクタ * 512バイト = 2TB で、セクタ数は増やせないならセクタサイズの方を大きくすればいいのではないか?
4294967296セクタ * 1024バイト = 4TB
4294967296セクタ * 2048バイト = 8TB
というその場しのぎの考え方。

現在Areca、HighPoint、CalDigitのRAIDカード、Seagate FreeAgent GoFlex Desk、MimicXLSなどがこの方法をサポートしています。
Advanced Format Technology †
HDDメーカー各社からAdvanced Format Technologyと称した物理セクタサイズ4KBのHDDが発売されていますが、これらの製品はホスト側に対し論理セクタサイズ512バイトであると返すエミュレーションデバイスです。
OSから認識されるセクタ数が減らないためエミュレーションデバイスでは壁があるOSで2TBを超えて認識することは出来ません。
メリット。 †
GPT、16バイトCDB(64ビットLBA)を扱えないOSでも2TBを超えるディスクを扱うことが出来ます。 †
ただし2TBの壁が最初に上げた2つのみが原因の場合。

例えばLinux 2.4以前ではブロックデバイスではブロックサイズを問わず2TBの制限があります。
既存のパーティション操作ソフトが使用できます。 †
ただしセクタサイズが512バイトでないディスクを考慮されているソフトの場合。
デメリット。 †
環境に強く依存する。 †
OSに対してセクタサイズを大きく見せる必要があるため、ハードウェア、ドライバ側の支援が必須です。
更にそれぞれの実装が互換性があるとも限りません。
また現在Areca製、HighPoint製共にWindows向けのドライバでのみこの機能をサポートになっています。
セクタサイズ512バイト決め打ちのソフトは問題が出る。 †
パーティション操作ソフト等ローレベルでのユーティリティーにはその可能性があります。
古いWindowsではダイナミックディスクは使用できない。 †
上のことに当てはまりますが、512バイトでないセクタサイズのダイナミックディスクサポートはVistaからです。

備考。 †
16バイトCDB(64ビットLBA)対応のWindowsのディスクの管理とdiskpartはMBR形式ではセクタサイズが考慮されずに2TBのパーティション作成制限がかかっています。
他OSで作ってあるパーティションを使うことには問題はないようです。
マルチ パーティション ボリュームで使用する。 †
2つ以上のパーティションを1つのボリュームとして使用する方法です。
具体的にはWindowsではダイナミックディスク、LinuxなどではbtrfsやLVMやmdデバイス、FreeBSDではZFS等を使用します。
OSからは2TB以下の複数のディスクとして見える必要があります

メリット。 †
ハードウェアに依存しない。 †
OSの機能のみで実現するため特定のRAIDカードなどに依存することがありません。
同種OS間で互換性が高い。 †
OSの機能であるため、同じ実装をしているOS間では互換性に問題が生じることが少なくなります。
デメリット。 †
異種OS間での互換性に乏しい。 †
例えばLinuxでは、ダイナミックディスクのシンプルボリュームしかサポートできていません。
Windowsの標準ではLinuxのmd、LVMはまったく理解できません。Explore2fsでもまだ一部しかサポートできていません。
OS上から2TB超のディスクに見える場合は使えない。 †
2TB以下を複数個組み合わせて2TB超ボリューム、の方法なので(ソフトウェアRAIDカードを含め)OS上から2TB超に見えるディスクに対してはこの方法では解決できません。
OS側とRAIDカードの間で16バイトCDB(64ビットLBA)が必要になるからです。
RAIDアレイやHDD単体が2TBを超える場合RAIDカード側で2TB毎に分割して貰う必要があります。
Windows XP Pro等の10バイトCDB(32ビットLBA)制限を持つOSでダイナミックディスクにすれば
2TBを超える単体HDDを余すことなく認識できるわけではありません。
(大事なことなので何回も言いました)
備考。 †
マルチ パーティション ボリュームという言葉はMicrosoft用語です。
2TB超のディスクをダイナミックディスクにするには、GPTディスクに変換する必要があります。


SP無しのVistaには2TB超のボリュームが再起動後にオフラインになり再アクティブ出来ないバグがあります。
Dynamic disks are marked as "Invalid" on a computer that is running Windows Server 2008 or Windows Vista when you bring the disks online, take the disks offline, or restart the computer if Data Protection Manager is installed
LinuxのLVMなどではパーティションではなくディスク丸ごとPVにすることが出来、そのまま2TB超での使用が可能ですが、パーティションを使用することをRedHatは推奨しています。
FileSystem †
以上はRAWデバイスとしてみた2TB超ボリュームの利用であり、通常その上にファイルシステムを作って利用するためファイルシステム側の制限が加わる場合があります。
FAT32 †
FAT32のBPBには2バイト(通常未使用)、4バイトの総セクタ数を表すフィールドが存在するため通常セクタサイズは512バイトですから2TBが事実上の上限になります。
これを超えるためには512バイトより大きいセクタサイズを使用する必要があります。(画面はWindows XP。セクタサイズ2KBを用いて8TBまで確保。フォーマッタはfat32formatを使用。)

とんでもない事が書いてあったりします。
Maximum Volume Sizes
Windows 2000 can format new FAT32 volumes up to 32 GB in size but can mount larger volumes (for example, up to 127.53 GB and 4,177,918 clusters from a volume formatted with the limits of Windows 98).
It is possible to mount volumes that exceed these limits, but doing so has not been tested and is not recommended.
EXT2/3 †
x86、x86-64ではページサイズが4KBのため最大ボリュームサイズは16TBです。
JF: Linux Kernel 2.6 Documentation: ext2.txt
ext2 - Wikipedia, the free encyclopedia
8TBを超えるExt2/3にはkernel 2.6.18以降とe2fsprogs 1.39以降を使ってください。
これより前のバージョンでは符号無し整数であるべきところが符号有り整数を使っており設計よりも小さい8TBまでしか扱えません。
http://lc.linux.or.jp/lc2006/slide/CP-09s.pdf
http://lc.linux.or.jp/paper/lc2006/CP-09.pdf
http://www.jp.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.18
http://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.39
ページサイズが4KBより大きいアーキテクチャで16TB以上のExt3ボリュームを使う場合はkernel 2.6.24以降を使ってください。
これより前のバージョンではページサイズに関わらずExt3ブロックサイズが4KBに制限されていました。
http://www.jp.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.24
Ext4 †
現時点ではe2fsprogsもkernelも16TB超(ページサイズ4KB)をサポートしていません。
XFS †
xfs_repair/xfs_checkは1TBにつき1GBのメモリが必要。
32ビット環境上では1プロセスで使えるメモリが比較的限られているため、気づいたときにはもう手遅れ。
尚、スワップやメモリの増設も、1プロセスが確保できるメモリ量が増えるわけではないので解決にはならない。
XFS repair problem.
xfs_check problems on 3.6TB fs
/**ファイルシステム総合スレ その3**/
xfs_repair on large fs: out of memory
減った?
Re: what is the FS size limit for xfs_repair ?
NTFS †
現行実装ではクラスタ数が32ビット以下に制限されており(インサイドMicrosoft Windows第4版下巻 P.251やMicrosoftのサイト参照)、Vista/2008までは16TBを超えるボリュームは4KBより大きいクラスタサイズ(=アロケーションユニットサイズ)を明示的に指定しないとフォーマットに失敗します。(画面はWindows2000)

同上(画面はWindows Server 2003 English)

16TBを超えるボリュームであれば4KB(=4096バイト)より大きいクラスタサイズ(=アロケーションユニットサイズ)を明示的に指定する。(画面はWindows Vista)

7/2008 R2では16TB以上でのデフォルトクラスタサイズがフォーマット可能なように変更されました。


256TBを超えるボリュームは無条件で(指定可能な最大クラスタサイズ64KBでも)フォーマットに失敗します。(画面はWindows2000)

XPではハングしました。
Vista x64でも256TB超はサポートされません。

2008 R2 x64 RCでもまだ256TB超はサポートされません。

32bitファイルサーバーでのシャドウコピーはボリュームサイズによっては利用できません。
Scalability Factors for Shadow Copies
Tera Bytes 時代の file server 設計
64bit 2003/2008でも64TBを超えると利用できません
Error message when you try to enable the Volume Shadow Copy Service for a shared folder on a Windows Server 2003-based computer: "STOP: 0x0000007E"
ちなみにNTFSのBPBにも総セクタ数フィールドはありますが8バイト(64ビット)ありますので問題ありません。
exFAT †
XP用exFAT実装では2TBを超えるボリュームはサポートしないようです。
クラスタサイズ32MBまで試行しましたが、クラスタ数やクラスタサイズに制限されるものではないようです。
あくまでもSDXC用ということでしょうか。(画面はWindows XP)

MicrosoftはexFATをNTFSの代替にする気は無いようです。(画面はWindows Vista)

(画面はWindows Server 2008)

HFS Plus †
Mac OS X 10.2以降であれば2TBの壁は無いようです。
http://support.apple.com/kb/HT2422?viewlocale=ja_JP&locale=ja_JP
Appleパーティションマップ †
AppleパーティションマップもMBRと同じく開始4バイト、総セクタ数4バイトで2TBの壁を持つようです。
http://developer.apple.com/documentation/mac/Devices/Devices-121.html#MARKER-2-27
http://www.mactech.com/articles/mactech/Vol.23/23.03/APMtoGPT/index.html
リンク。 †
大規模な論理装置のサポートと Windows Server 2003 SP1
パーティション スタイル
GPT ドライブを使用する
Using GPT Drives
Itanium ベース システム用 MBR システム ディスクの変換
MBR System Disk Conversion for Itanium-Based Systems
Windows and GPT FAQ
Frequently asked questions about the GUID Partitioning Table disk architecture
Windows Storage Server 2003 : よく寄せられる質問
Microsoft Storage: Fact and Fiction
How NTFS Works
Troubleshooting Disks and File Systems
How Dynamic Disks and Volumes Work
http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/STO072_WH06.ppt
Unified Extended Firmware Interface support in Windows Vista
1 ボリュームのサイズが 2 TB 以上のシステム パーティションから Windows Vista を起動できない
UEFI と Windows
Windows オペレーティング システムでの UEFI のサポートと要件
UEFI システムへの Windows Server 2008 および Windows Vista SP1 のインストール
Windows NT ブート処理とハード ディスクの制限
Error code 0x8004240f occurs when you use a volume that is larger than 2 TB as backup storage in Windows Server 2008
concerns about breaking the 2TiB MBR
GUIDパーティションテーブル
ftp://ftp.areca.com.tw/RaidCards/Documents/Manual_Spec/Software/Over2TB_080612.zip
Greater than 2TB support on different Operation System
http://www.3ware.com/KB/attachments/2TB_WP_fnl_101504.pdf
Is it possible to boot from an array larger than (>) 2 Terabytes (TB) with 3ware controllers?
Q13513 - Software Configuration: Hi, I am using Windows 2003 with Service Pack 1. It is supposed to have support for arrays larger than 2 TeraBytes in capacity. I have a 9500S with the 9.2 code set, with a 2.5 TByte array. But Windows only sees 2 TeraBytes. What is going on?
http://www.adaptec.com/pdfs/3759_2TB_WP.pdf
http://www.dell.com/downloads/global/vectors/2004_2tblun.pdf
http://www.plasmontech.com/downloads2/pdf/rts_cb018.pdf
eSATA リムーバブルケース(外付け5ベイ) SA-DK5ES(FAQ)
Large data storage in FreeBSD
1TB issue
Devices/Partitions over 2TB
RE: [t13] capacity barriers - 2TiB @ 0.5KiB/block
Successfully boot from a floppy on a GPT partitioned 2.18TB system
Red Hat Enterprise Linux AS 4 Update 1 Release Notes
Red Hat Enterprise Linux AS 4 Update 1 リリースノート
Debian インストーラ etch β2 リリース
http://enbug.tdiary.net/20040812.html
第 10 章 ディスクの管理 (概要)
http://docs-pdf.sun.com/819-0386/819-0386.pdf
SmartArrayでの 1TB超えについて StorageWorks MSA20
SmartArrayでの 2TB超えについて
LeftHand Networks - 256 TB LUN
EFI - osdev-j (MMA)
2TB 以上のボリュームの対応について
IDE RAID カードあれこれ RAID 14
6TB on FreeBSD: uyota 匠の一手
大容量ファイルサーバの構築と管理
Over 2TBのファイルサーバを製品化
Over 2TBのファイルシステムテストとNFSの性能/技術レポート
テラボックスシリーズ2TB設定ユーティリティ
Mini-HOWTO: Disks and Partitions larger than 2TB under LINUX using an Adaptec 2820SE RAID card
2TBを越えるディスク領域の使用方法
NVIDIA Forums > unable to create array over 2TB
[GUID] GPT howto [Archive] - The FreeBSD Forums
CalDigit - HDPro 2TBを超える容量を単一ボリュームとしてWindowsで扱う方法
導入、アレイ作成時の問題に関するFAQ
Does WHS support a GPT disk?
大容量ハードディスクのRAIDは2TBの壁に注意
Microsoftオペレーティングシステムは2TB以上のRAIDアレイをサポートするか?
fdisk コマンドでは 2TB以上のパーティション作成はできないのですか?
How to Break the 2TB (2 TeraByte) File System Limit
http://www.scsita.org/aboutscsi/sas/tutorials/SAS_SCSI_upper_layers_public.pdf
http://downloads.sourceforge.net/cciss/Open_CISS_Spec.pdf
Linux and 4K disk sectors
BigSector.org
3月版 2TBを超えろ! ATAディスクの4Kセクタ問題とは?
4KB セクター・ディスクで Linux を使用する: 実用的なアドバイス
http://www.wdc.com/wdproducts/library/Flyer/JPN/2579-771501.pdf