連載目次

対象OS：Windows Vista ／ Windows 7 ／ Windows 8 ／ Windows Server 2008 ／ Windows Server 2008 R2 ／ Windows Server 2012



解説

Windows OSで利用できるファイルシステムにはFAT（File Allocation Table）やNTFS、exFAT、ReFSなどさまざまなものがある。Windows OSで現在一番広く使われているファイルシステムはNTFSだが、リムーバブルデバイス（特にUSBメモリや、SDカードのようなメモリカード）ではまだFATがよく使われている。

FATファイルシステムは非常にシンプルなアーキテクチャを持ち、PC以外でもさまざまな機器（デジカメやICレコーダー、音楽プレーヤー、携帯電話など）で利用できる。しかしもともとは30年以上も前に開発されたものをベースにしているため、大容量のメモリカードやUSBメモリデバイスの普及により、限界も見えてきた。そこで新しくexFATというファイルシステムが開発され、普及し始めている（64GB以上のSDXCカードはあらかじめexFAT形式でフォーマットされて出荷されている）。本TIPSではFATとexFATの違いについてまとめておく。これ以外のNTFSやReFSの違い、ファイルシステムごとのファイルサイズの制限などについては、以下のTIPSも参照していただきたい。

●exFATとは

「exFAT（extended FAT）」とは、FATファイルシステムをベースに、主に大容量サポートとパフォーマンス改善を目的に開発された、パーソナルストレージ向けの新しいファイルシステムである（古い資料では「FAT64」と記述されていることもあった）。従来のFATでは、サポートされているディスク（ボリューム）サイズは最大32GB（OSによっては最大128GBまで作成できる）という制限があり、大容量化している現在のストレージデバイスの機能を引き出すことができなかった。またFATではファイルサイズが最大4GBという制約もあり、例えば大きくなりがちなビデオファイルを1ファイルにして扱うこともできなかった（ビットレートが25Mbit/sの動画ビデオなら、20分ほどで4GBに達する）。これらの問題を解消し、さまざまな改良を施したのがexFATである。主な特長を次に示す。

最大ボリュームサイズの拡大。理論的には最大で2の64乗セクタまでサポートするが、現在の実装では256TBまでの容量をサポート

最大ファイルサイズは2の64乗bytesまでサポート。4GBを超えるファイルも分割することなく記録可能

クラスタサイズの拡大によるアクセスパフォーマンスの改善。（現在の実装では）最大32MBまでのクラスタサイズをサポート

（従来のファイル割り当てテーブルだけでなく）空き領域ビットマップも使って、高速な空きクラスタ管理や高速な削除処理を実現（ファイルの削除ではFATを更新せずに、空き領域ビットマップを更新するだけ）

ハッシュ値を使った高速な名前検索の実現

意図しないデバイスの取り外しなどが起こっても、（FATよりも）障害を起こしにくくなるような内部処理の実装

FATファイルシステム並みの簡単な実装で取り扱える（NTFSよりも実装は容易で、パーソナルストレージにとっては十分な機能を装備）

ただしFATと名前は付いているが、実際にはexFATは従来のFAT16やFAT32と互換性はない。FATしかサポートしていない機器ではexFATを使うことはできない。

exFATは、もともとはWindows CE用に開発されたものであるが、現在ではWindows Vista SP1以降のWindows OSで利用できる。Windows XP SP2／SP3およびWindows Server 2003 SP2では、以下のWebページで配布されているパッケージを追加インストールすれば利用できる。

以下にFATとexFATの仕様の違いを示しておく。

機能 FAT exFAT （参考）NTFS 最大ファイルサイズ（理論値） 2の32乗−1bytes（4GB） 2の64乗−1bytes（16EB） 2の64乗−1bytes（16EB） クラスタサイズ 512／1K／2K／4K／8K／16K／32K／64KB 512／1K／2K／4K／8K／16K／32K／64K／128K／256K／512K／1M／2M／4M／8M／16M／32MB（理論上は2の255乗セクタまで可能） 512／1K／2K／4K／8K／16K／32K／64KB デフォルトクラスタサイズ ボリュームサイズによって可変。詳細は「NTFS、FAT、または exFAT のデフォルトのクラスター サイズ」（マイクロソフト サポート技術情報）参照 最大ボリュームサイズ FAT12：32MB

FAT16：2G／4GB

FAT32：32GB

※ Windows 9x／Meでは128GBまでのFAT32ボリュームを作成可能

※ FAT32の理論上の最大サイズは2TBまで 理論上は2の32乗クラスタまで／実装上は256TBまで 理論上は2の64乗bytes（16EB）まで／実装上は256TBまで 最大クラスタ数 4087（FAT16）／65,526（FAT16）／4,177,918（FAT32）

※ FAT32の理論上の最大サイズは2の32乗クラスタまで 理論上は2の32乗クラスタまで 理論上は2の64乗クラスタまで／実装上は2の32乗クラスタまで ファイル圧縮 × × ○ ファイル暗号化 × × ○ BitLockerによるボリューム全体の暗号化 ○ ○ ○ フロッピーサポート FAT12 × × リムーバブルデバイスサポート ○ ○ ○ トランザクション処理 × ×（現状では未実装。将来追加される可能性がある） ○ アクセス制御リスト（ACL） × ×（現状では未実装。将来追加される可能性がある） ○ 最大パス名 255文字 255文字 255文字 大文字／小文字の区別 なし なし 可能（デフォルトではオフ） ファイルの作成日時属性 ○（0.01秒単位） ○（0.01秒単位） ○ ファイルの更新日時属性 ○（偶数秒のみ記録） ○（0.01秒単位） ○ ファイルの最終アクセス日時属性 日付情報のみ（時刻情報はなし） ○（偶数秒のみ記録） ○（Windows Vista／Windows Server 2008以降は、デフォルトでは最終アクセス時刻は記録しない。TIPS参照） 8.3形式の短縮名サポート ○ × ○ リパースポイント × × ○ ジャンクション × × ○ ハードリンク × × ○ シンボリックリンク × × ○ スパースファイル × × ○ マウントポイント × × ○ 代替ストリーム × × ○ サポートOS 全てのWindows OS Windows Vista SP1／Windows Server 2008以降 全てのWindows OS Windows OSのインストール用 不可 不可 ○ Windows OS標準のデフラグツール 適用可能 適用不可 適用可能 FATとexFATの仕様

Windows XP以降のWindows OSを対象にまとめてみた。なお一部の値は実装依存であり、Windows OSのバージョンによって変わることがある。特に記述のない限り、Windows 8／Windows Server 2012での制限値を示す。以下の情報も参照のこと。

・File System Functionality Comparison［英語］（MSDNサイト）



●ボリュームをexFAT形式でフォーマットする

ボリュームをexFAT形式でフォーマットするには、単にボリュームを選択して右クリックし、ポップアップメニューから［フォーマット］を選択すればよい。ファイルシステムとして「exFAT」を選択し、必要なら［アロケーション ユニット サイズ］でクラスタサイズを選択できる。

exFAT形式でフォーマットする

これはWindows 8でUSBメモリをフォーマットしようとしているところ。

（1） ファイルシステムとして［exFAT］を選択する。場合によっては［exFAT］の選択肢が表示されないこともあるが、その場合はコマンドプロンプト上でフォーマットしてもよい。

（2） クラスタサイズの選択。exFATのデフォルトクラスタサイズ（［標準のアロケーション サイズ］という選択肢）は、32KBになっている。



ディスクサイズが大きすぎたりする場合は、ファイルシステムの選択肢に「exFAT」が出てこないことがあるようだが、その場合はコマンドプロンプトを開き、「format e: /q /fs:exfat」のように/fsオプションを指定すると、強制的にexFAT形式でフォーマットできることがある。クラスタサイズを指定する場合は「format e: /q /fs:exfat /a:64k」のように、/aオプションを使って最後にクラスタサイズを指定する。指定可能なサイズの表記は「format /?」を実行すれば確認できる。

C:\>format e: /q /fs:exfat /a:64k ……exFAT形式でフォーマットしてみる

ファイル システムの種類は EXFAT です。



警告: ハード ディスクのドライブ E: のデータは

失われます。

フォーマットしますか (Y/N)? y

クイック フォーマットしています 16381M バイト

ボリューム ラベルを入力してください。

(半角で 15 文字、全角で 7 文字以内)

必要なければ、Enter キーを押してください:

ファイル アロケーション テーブル (FAT) を初期化しています...

ファイル システム構造を作成します。

フォーマットは完了しました。

16.0 GB: 全ディスク領域

16.0 GB: 使用可能領域



65,536 バイト : アロケーション ユニット サイズ

262,061 個 : 利用可能アロケーション ユニット



32 ビット : FAT エントリ



ボリューム シリアル番号は 0CEE-2240 です



C:\>defrag e: ……exFATをデフラグしてみる

Microsoft ディスク デフラグ ツール

Copyright (c) 2007 Microsoft Corp.



(E:) の 最適化 を起動しています...





このボリュームは最適化できません。 (0x8900000D)

……デフラグできないと表示される。クラスタサイズが大きいのでデフラグする必要もないだろう（※USBフラッシュメモリをデフラグすると書き込み回数が大幅に増え、寿命が短くなるので注意）

C:\>





●FATとexFATの使い分けについて

USBメモリやリムーバブルデバイスを利用する場合、exFATとFATという2つの形式が利用できるが、これらの使い分けは実はあまり深く考える必要はない。FATとNTFSのように大きく機能が違うわけではないからだ。基本的には容量が32GB以下ならFAT（FAT32）、それより大きければexFATを選択すればよいが、単独のファイルが4GBを超える可能性がある場合（ビデオデータなどを記録する場合）は、32GB以下でもexFATにするとよいだろう。

「Tech TIPS」