exFAT
読み:イーエックスファット
外語:exFAT: Extended FAT
FAT
システムの一つ。
FAT32
の拡張となるものだが、相互に互換性は無い。
目次
概要
特徴
対応環境
対象
技術
仕様
先頭セクター
ディレクトリエントリ
構造
ファイル名
その他機能
FAT
概要
FAT32は理論値で最大2
Tiバイト
の大容量ドライブに対応する。しかし
オペレーティングシステム
の実装上の問題から、フォーマットは32Giバイトまでに制限されていた。そして、それを超えるドライブは
NTFS
の利用が前提とされていた。
またFAT32では、ファイルサイズが32ビットで管理されるため、1ファイルあたりのファイルサイズ上限は4Giバイトという制限があった。
exFATは、FATでありながら、その双方の容量制限を撤廃するものであり、ファイルサイズは64ビット長となった。
但し従来のFAT32とは互換性がないため、利用するには専用に対応することが必要である。
特徴
対応環境
次のオペレーティングシステムで対応している。
Windows Embedded CE 6.0以降
Windows Vista
SP1以降
Windows XP
SP2以降 (要更新プログラム)
Windows 7
Windows 8/8.1
Windows Server 2008 R2
Windows 10以降
Mac OS X 10.6.5以降
他、以下でも対応しているとされている。
Linux (バージョン不明)
FreeBSD (バージョン不明)
AmigaOS (一説では4.1以降)
2009(平成21)年1月27日より、Windows XPでもSP2かSP3を導入済みの環境であれば、
更新プログラム(KB955704)
の適用により対応が可能となった。
対象
このフォーマットは外部フラッシュメモリー等を対象としているため、
ハードディスクドライブ
などでは利用が制限されている。
ハードディスクドライブは、内蔵のものでは利用できないが、USB接続されたものなら利用可能。
Windows以外で公式に採用した例には、
SDメモリーカード
の新規格、
SDXC
がある。
技術
ファイルサイズは64ビット長、クラスター番号は32ビット長で管理する。
クラスターあたりのセクター数は、理論上2
255
まで対応するが、実際の実装はそこまで対応していない。パーティションサイズに応じて、次のようなクラスターサイズがデフォルトとして使われている。
7Miバイト〜256Miバイト … 4Kiバイト
256Miバイト〜32Giバイト … 32Kiバイト
32Giバイト〜256Tiバイト … 128Kiバイト
実装上、最大ファイルサイズ、また一つのボリュームの最大サイズは、共に16Eiバイトとされ、これは
NTFS
と同等であるが、Windows 7やWindows Server 2008までの実際の実装では、exFATの最大パーティションサイズは256Tiバイトまでである。
仕様
先頭セクター
exFATは従来のFATと同様、パーティション管理は
マスターブートレコード
である。従って
2Tiバイトの壁
が存在する。
このうち、
ブートセクター
には従来と同様に
ブートストラップローダー
の領域があり、この一部が
BPB
となるが、当該領域はNTFSと同様に0で埋められていて未使用となっている。
また、
パーティションテーブル
も無いらしい。最後の2バイトは従来と同様に
ブートシグニチャ
が置かれている。
exFAT 構造解析
によると、具体的には次のようなっているようである。
+40h: DWORD (不明) (00000078h)
+44h: DWORD (不明) (00000000h)
+48h: QWORD ボリュームの総セクター数
+50h: DWORD FATの開始セクター番号
+54h: DWORD FATのセクター数
+58h: DWORD 先頭クラスターの開始セクター番号
+5ch: DWORD ボリュームのクラスター数
+60h: DWORD ルートディレクトリ開始クラスター番号
+64h: DWORD Volume ID
+68h: DWORD (不明) (00000100h)
+6ch: BYTE SectorSizeShift
+6dh: BYTE ClusterShift
+6eh: BYTE (不明) (01h)
+6fh: BYTE (不明) (80h)
(ブートストラップローダー)
+1feh: WORD boot signature (AA55h)
セクター長(バイト)は、「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などの全く異なるファイルシステムに対するメリットである。
再検索