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

10バイトCDBの制限 †
10バイトCDBではHDDのセクタの指定に32ビットで位置を指定しています。
なのでHDDの先頭セクタから4294967296セクタ目までしか読み書き出来ません。
これも同様に4294967296セクタ * 512バイト = 2TBとなります。

ネットワークアクセス †
ネットワーク経由(SMB/CIFS/NFS)でのアクセスでは(上記2つの原因による)2TBの壁はありません。
実ディスク、実セクタ数が見えないからです。(パーティションテーブルも当然見えない)
サーバー側のメディアが何であるかに関わらないので、プロトコルが2TB超をサポートし
渡されたボリュームサイズを解釈できるかだけです。



説明に入る前に †
ここでは2TBを超えるボリュームを使う3つの方法を挙げます。
なおこのページの説明では、
パーティション = 一台のディスクの全セクタを1次元的に見た場合に、始点と終点(総セクタ数)で表せるセクタの集合、
ボリューム = 直上にファイルシステムを構築できる1つ以上のパーティション、
とします。
このページの説明ではSi接頭辞表記を使いますが計算は1024です。
このページで説明するのはソフトウェア側(OS)の制限です。
ご使用のRAIDカード、M/Bのチップセット等が2TB超をサポートするかはメーカーにお尋ね下さい
16バイトCDBとGPT(GUIDパーティションテーブル)ディスクで使用する。 †
IA-64プラットフォームやIntel Macではお馴染みのGPTです。(IA-64とIntel MacではMBRディスクからは起動できません)
GPT形式ではパーティションのアドレス指定に64ビットを割り当てられているため最大セクタ数18446744073709551616セクタなので、
512バイト/セクタのディスクでは8ZB(8589934592TB)のパーティションを作ることが出来ます。
16バイトCDBも同様にアドレス指定に64ビットを使いますので8ZBのディスクを扱うことが出来ます。

MBRの2TBの壁と、10バイトCDBの2TBの壁を両方越えるその場しのぎではない方法となります。
メリット。 †
OS間でパーティションテーブルの互換性がある。 †
GPTは公開仕様ですのでGPTを扱えるOS間では(バグが無い限り)パーティションテーブルを壊してしまうなどの問題が起きません。
GPTを扱えないOSでもPMBRがありますので余計なことをしない限りパーティションテーブルを壊しません。
当然ファイルシステムは別の問題です。
デメリット。 †
GPTを扱えるパーティション操作ソフトが少ない。 †
GPT形式のパーティションテーブルを扱えるのは
- GNU parted
- sysutils/gpte
- Windowsのディスクの管理とdiskpart.exe
- BSD/MacOSXのgptコマンド
- MacOSXのディスクユーティリティ
- EFIシェルのdiskpart.efi
程度に限られてしまっています。
今現在市販されているコンシューマ向けパーティション操作ソフトの中で「2TB対応なおかつGPTに対応したものは無い。」と断言できるほどです。
GPTと16バイトCDBを使用可能なOSが限られる。 †
| データボリュームでの使用 | システム/ブートボリューム (EFI/UEFIを搭載したハードウェアでGPTディスクにOSをインストールするボリュームを置き、そこからブート出来るか。) |
Windows 95 Windows 98 Windows 98SE Windows Me Windows NT 3.1/3.5/3.51/4.0 Windows 2000(All Edition) Windows XP Pro(32bit)/Home*2 Windows Server 2003 32bit No-SP
| 非サポート | 非サポート |
Windows 7 32bit | サポート | 不明*3 |
Windows XP Professional x64 Edition Windows Vista 32bit Windows Vista 64bit No-SP Windows Server 2003 32bit SP1以降 Windows Server 2003 x64 Edition 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 Vista 64bit SP1以降 Windows 7 x64 Windows Server 2008 x64 Edition | サポート | サポート |
Linux 2.6以降 (2.4でもGPTは扱えますが、16バイトCDBを扱えないのでこのページの趣旨から外れるため2.6以降。) | サポート | サポート (カーネルがGPTをサポートした状態にされているか、インストーラーはGPTディスクへのインストールをサポートしているかなどはディストリビューションにより異なる。) |
FreeBSD 5.2.1以降 | サポート | サポート (x86上では6.4/7.1からです。) |
Intel Mac OS X | サポート | サポート |
Solaris | サポート | サポート |
OSをインストールするディスクには出来ない場合が多い。 †
上記の表はそのOSが動作するアーキテクチャのハードウェアがEFIを搭載している場合、もしくは搭載したと仮定した場合での話です。
今出回っているハードウェアのほとんどがEFIを搭載していないためEFI対応のブートローダーは使用することが出来ません。
また既存のBIOSを使うブートローダーもGPT形式のパーティションテーブルに対応していませんのでPMBRを見てしまい、OSの起動に移れません。
また、EFIからブートできないOSやEFIを持たない場合必然的にMBR形式のパーティションテーブルのディスクにOSをインストールすることになりますが、MBR形式とGPT形式は同時認識できないため2TB以降の端数を使用できなくなります。
備考。 †
開始終了4バイトずつなら2TB+2TBの2MBRパーティションは?と思うかもしれませんが、最初にあげた10バイトCDBが関わってきます。

16バイトCDBに対応してGPT未対応のOSは皆無でしょうし、GPT未対応なら当然のように16バイトCDBにも対応してないので後ろのパーティションは見えませんからそこまでして互換性を取る意味もありません。
わざわざ自分から4TBの壁にぶつかる意味もないと思います。

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

現在、ArecaやHighPoint等一部のRAIDカードがこの方法をサポートしています。
メリット。 †
GPT、16バイトCDBを扱えないOSでも2TBを超えるディスクを扱うことが出来ます。 †
ただし2TBの壁がMBRパーティションテーブルと10バイトCDBのみが原因の場合。

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


備考。 †
マルチ パーティション ボリュームで使用する。 †
2つ以上のパーティションを1つのボリュームとして使用する方法です。
具体的にはWindowsではダイナミックディスク、LinuxなどではLVMやmdデバイス、FreeBSDではccd(4)ドライバ等を使用します。
OSからは2TB以下の複数のディスクとして見える必要があります

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


LinuxのLVMなどではパーティションではなくディスク丸ごとPVにすることが出来、そのまま2TB超での使用が可能ですが、パーティションを使用することをRedHatは推奨しています。
SP無しのVistaには2TB超のボリュームが再起動後にオフラインになり再アクティブ出来ないバグがあります。
http://www.biz.kotaete-net.net/Default.aspx?pgid=14&qid=24105436811
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.windows.file_system&tid=22544689-620d-4ff6-89c0-8663af9ce2d3&cat=en_US_0d72e935-d8dc-4657-a4fe-1cdd886bab54&lang=en&cr=US&sloc=&p=1
FileSystem †
以上はRAWデバイスとしてみた2TB超ボリュームの利用であり、通常その上にファイルシステムを作って利用するためファイルシステム側の制限が加わる場合があります。
FAT32 †
FAT32のBPBには2バイト(こちらは通常未使用)、4バイトの総セクタ数を表すフィールドが存在するためセクタサイズが512バイトのままの方法では2TBを超えるFAT32ファイルシステムは作り出せません。
セクタサイズを大きくすれば作れないことはありませんが。

EXT2/3 †
x86ではページサイズが4KBなのでext2/3ではそれより大きいブロックサイズは利用できず16TBが最大サイズとなる
(x64のページサイズはいくらだ?)
JF: Linux Kernel 2.6 Documentation: ext2.txt
8TBが限界って資料が多いような気が
ただしいのはどれだ
http://lc.linux.or.jp/lc2006/slide/CP-09s.pdf
http://lc.linux.or.jp/paper/lc2006/CP-09.pdf
signed int個所が多く8TBでした。
http://www.jp.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.18
http://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.39
にあるとおり8TBを超えるExt2/3にはE2fsprogs 1.39以降を使ってください。
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のサイト参照)、16TBを超えるボリュームは4KBより大きいクラスタサイズ(=アロケーションユニットサイズ)を明示的に指定しないとフォーマットに失敗します。(画面はWindows2000)

同上(画面はWindows Server 2003 English)

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

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

32bitファイルサーバーでのシャドウコピーはボリュームサイズによっては利用できません。
Scalability Factors for Shadow Copies
Tera Bytes 時代の file server 設計
64bit 2003でも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"
exFAT †
XP用exFAT実装では2TBを超えるボリュームはサポートしないようです。
クラスタサイズ32MBまで試行しましたが、クラスタ数やクラスタサイズに制限されるものではないようです。

リンク。 †
大規模な論理装置のサポートと Windows Server 2003 SP1
Windows Logo Program System and Device Requirements, Version 2.2 に対する補遺
パーティション スタイル
GUID パーティション テーブル
Using GPT Drives
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
EFI および Windows Vista
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 を起動できない
Windows NT ブート処理とハード ディスクの制限
http://support.microsoft.com/kb/960023/en-us:Error code 0x8004240f occurs when you use a volume that is larger than 2 TB as backup storage in Windows Server 2008
GUIDパーティションテーブル
ftp://ftp.areca.com.tw/RaidCards/Documents/Manual_Spec/Over2TB_050721.zip
Greater than 2TB support on different Operation System
http://www.maxtronic.com/ftp/pub/manuals/2TB.pdf
http://www.3ware.com/KB/attachments/2TB_WP_fnl_101504.pdf
Q13431 - Compatibility: Is it possible to boot from an array larger than 2 Terabytes 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.ask-sss.com/server/download/3ware_3TB.pdf
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
3ware and >=2TB of disk space.
1TB issue
LargeBlockDevices - IA64wiki
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 リリース
Howto use partitions over 2TB
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 以上のボリュームの対応について
http://www.dell.com/downloads/global/vectors/2004_2tblun.pdf
400GBx12で4.4TBの大容量サーバを構築!
IDE RAID カードあれこれ RAID 14
6TB on FreeBSD: uyota 匠の一手
How to partition > 2TB array on Win 2003 Server?
大容量ファイルサーバの構築と管理
テラボックスシリーズ2TB設定ユーティリティ
Over 2TBのファイルシステムテストとNFSの性能/技術レポート
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