この記事について
組み込み会社で新人の私が勉強のために調べて書いた記事となっておりまして、
ストレージをフォーマットするときに出てくる 「FAT16」 や 「FAT32」 って何?という人向けにまとめたものです。
初めに
「FAT ファイルシステム」 とは何かと一言でいうと、「ストレージにデータを記録・管理することが可能なもの」 です。
FATの横に書いてある16や32の 「数字」 は何かというと、ざっくり説明すると 「クラスタ」 というデータの塊に、住所のようなものを付けるための識別子が 「数字」bit分ありますよ ということを示しています。
また簡単に補足だけ伝えると、
ストレージの最大容量が大きなものほど対応するFATの数字も大きなものとなっていたりします。
FAT12とは
主に フロッピーディスクの時代によく使われていたフォーマット として現在残されているFATファイルシステムです。
総クラスタ数 は 最大4084個 となり、クラスタサイズ は、512byteから32KB まで使用できます。
総クラスタ数が12bitで管理されているのに対し、総セクタ数は16bitで管理されているため、
セクタサイズが512byte の場合、扱える容量は32MB までとなります。

上記で出てきた、セクタとクラスタについては以下の記事に詳しく書いています。
FAT16とは
主に 小容量のストレージ で使用されているフォーマットです。
FAT12とは違い、16bitのクラスタ識別子 を利用しており
総クラスタ数 は、最大で 65,524個 とかなり増えているものになっています。
クラスタサイズは、FAT12の時と同じく 512byteから32KB まで使用できます。
扱える容量は、最大で 2GB までとなります。
FAT32とは
主に 大容量のストレージ で使用されているフォーマットです。
FAT32は、FAT16よりも大きい32bitのクラスタ識別子を利用しています。
しかし、実際使えるのは_上位4bit分の予約領域を除いた28bit となっているため
総クラスタ数は、理論上 268,435,444個 という大量のクラスタを扱えます。
上記に合わせて、FAT32は32KBまでのクラスタサイズを使用できるので、最大でおよそ8TBの容量が使用可能となる はずなのですが、
総セクタ数を32bit(最大4,294,967,295)で管理しているため、
セクタサイズが512byteの場合扱える最大容量は「2TB」に制限されています。
[補足]: 「SDカード」や「USB」は、どのFATでフォーマットされているのか?
規格を策定している団体または製造メーカーが提供しているフォーマッターでフォーマットするのが良い のですが、他のフォーマッターを使用した場合も含め、FATファイルシステムの規格に則り クラスタ数の範囲によってFATの種類が決まります。
クラスタ数とFATの対応は以下のようになっております。
- クラスタ数が4,085以下は、「FAT12」
- クラスタ数が4,086以上,65,525以下は、「FAT16」
- クラスタ数が65,526以上は、「FAT32」
クラスタ数で紹介されても馴染みがないと思うのでストレージの容量から簡単に分けると、一般的なフォーマットをする場合の 「FATが対応しているストレージ」 は以下のようになります。
- FAT12は、~128MB
- FAT16は、2MB~2GB
- FAT32は、32MB~2TB(32GB以上から専用フォーマッターが必要)
終わりの「ひとこと」
仕事以外の日常生活で、FATファイルシステム自体に触れる機会はそうそう無いですよね。
あったとしても、稀にwindowsの回復ドライブを作る時とか、SDカードを使う時くらいですかね。昔を知らないですがファイルシステムのあり方も時代に合わせて変わってきているんでしょうね。私も時代に合わせて変わった方がいいんでしょうかね。ここら辺は、難しいので一生の課題ということにしておきます。
この記事の次は、「MBR」について調べようと思います。
もし、よろしければまた見にきてください。
関連記事
ファイルシステムに関しての記事
組み込み開発技術ブランド「Cente」