exFAT
読み:イーエックスファット
外語:exFAT: Extended FAT

 FATシステムの一つ。FAT32の拡張となるものだが、相互に互換性は無い。
目次

概要
 FAT32は理論値で最大2Tiバイトの大容量ドライブに対応する。しかしオペレーティングシステムの実装上の問題から、フォーマットは32Giバイトまでに制限されていた。そして、それを超えるドライブはNTFSの利用が前提とされていた。
 またFAT32では、ファイルサイズが32ビットで管理されるため、1ファイルあたりのファイルサイズ上限は4Giバイトという制限があった。
 exFATは、FATでありながら、その双方の容量制限を撤廃するものであり、ファイルサイズは64ビット長となった。
 但し従来のFAT32とは互換性がないため、利用するには専用に対応することが必要である。

特徴

対応環境
 次のオペレーティングシステムで対応している。
 他、以下でも対応しているとされている。
 2009(平成21)年1月27日より、Windows XPでもSP2かSP3を導入済みの環境であれば、更新プログラム(KB955704)の適用により対応が可能となった。

対象
 このフォーマットは外部フラッシュメモリー等を対象としているため、ハードディスクドライブなどでは利用が制限されている。
 ハードディスクドライブは、内蔵のものでは利用できないが、USB接続されたものなら利用可能。
 Windows以外で公式に採用した例には、SDメモリーカードの新規格、SDXCがある。

技術
 ファイルサイズは64ビット長、クラスター番号は32ビット長で管理する。
 クラスターあたりのセクター数は、理論上2255まで対応するが、実際の実装はそこまで対応していない。パーティションサイズに応じて、次のようなクラスターサイズがデフォルトとして使われている。
 実装上、最大ファイルサイズ、また一つのボリュームの最大サイズは、共に16Eiバイトとされ、これはNTFSと同等であるが、Windows 7やWindows Server 2008までの実際の実装では、exFATの最大パーティションサイズは256Tiバイトまでである。

仕様

先頭セクター
 exFATは従来のFATと同様、パーティション管理はマスターブートレコードである。従って2Tiバイトの壁が存在する。
 このうち、ブートセクターには従来と同様にブートストラップローダーの領域があり、この一部がBPBとなるが、当該領域はNTFSと同様に0で埋められていて未使用となっている。
 また、パーティションテーブルも無いらしい。最後の2バイトは従来と同様にブートシグニチャが置かれている。
 exFAT 構造解析によると、具体的には次のようなっているようである。
 セクター長(バイト)は、「1 << SectorSizeShift」で求める。
 クラスター長(バイト)は、「セクター長 << ClusterShift」で求める。

ディレクトリエントリ

構造
 ディレクトリエントリは、従来のFATと同様、1エントリ32バイトである。但し、構造が全く違い、互換性は全く無い。
 32バイト中、先頭の1バイトでエントリの種類を表わし、続く31バイトがデータである。
 有効なエントリは最初のバイトのMSBが1(つまり0x80〜0xff)で、削除されるとMSBが0となる(つまり0x00〜0x7f)。
 この仕様のため、後からの拡張が容易である。

ファイル名
 FAT32と違い、8.3にロングファイル名を付加するような形態では無い。いわゆるロングファイル名しか存在せず、短いファイル名は無い。
 ファイル名は、二種類のファイル属性等のエントリが順に置かれ、次にファイル名のエントリが1個以上置かれる。文字はUTF-16で、1エントリに15文字まで格納可能。FAT32(VFAT)とは違い逆順にはならず、正順に置かれている。
 従来のFATとは違い、サブディレクトリを作っても、カレントディレクトリ親ディレクトリを表わす...は作られない。

その他機能
 ファイル属性のうち、日付情報やファイル属性の値は、従来のFATと同様である。つまり、2108年問題がそのまま存在する。
 時間については、NTFSと同様に作成日時、最終書き込み日時、最終アクセス日時に対応し、さらに作成日時については10ミリ秒までの精度に対応する。
 ファイル名は、大文字に変換してからハッシュが求められ、2番目のファイル属性等のエントリの所定位置に置かれている。これにより高速にファイルを探したり削除したり出来る。
 大文字にするための変換表は専用ファイルとしてファイルシステム内に置かれており、ルートディレクトリにその位置を示すエントリが置かれている。

FAT
 FATの構造はFAT32とほぼ同じである。
 FAT12/16/32ではFATは二つあるのに対してexFATでは一つしかないことと、FAT32はクラスター番号に28ビットしか使っていなかったのに対してexFATは32ビット全てを使う点などの差はあるが、FATであることに大きな違いはない。
 このため、既にFATに対応済みのOSへの実装がしやすい点が、NTFSなどの全く異なるファイルシステムに対するメリットである。

再検索