ファイルシステムとは(FATファイルシステム解説①)

つぶつぶコラム

FATファイルシステムについて解説する本コラムは3回にわたっての連載です。
まずは基礎的なところから、是非ご覧ください。

ファイルシステムとは

コンピュータが処理を行う上で、情報を記録・参照する機能の一つ、と言えると思います。
ファイルシステムは、主に補助記憶装置上に作成されることが多く、例を挙げるとHDD、SSD、Flashメディア、光メディアなど多岐にわたります。

ファイルシステムの種類

ファイルシステムとして最も有名なのは、Windowsに使用されているNTFSではないでしょうか。
他にもLinuxで使用されるEXT3などがあります。
FATもファイルシステムの一つで、MicrosoftのファイルシステムとしてNTFS以前に開発・利用されてきました。ですがNTFSの登場以降、NTFSに取って代わられ、現在では主に容量の小さなリムーバブルメディアで使用されるようになっています。(容量の大きなリムーバブルメディア向けとしてはexFATがあります。)

組込み機器で使用されるファイルシステム

組込み機器でファイルシステムを使用する場合、多くは外部機器とのデータ交換が目的になります。この場合の外部機器とはWindowsなどのPCが対象となる場合が多いです。例えば組込み機器で記録したデータを、USBメモリを利用してWindowsPCに取り込み、Excelで利用するなどが考えられます。
その為、組込み機器で採用されるファイルシステムは、WindowsなどのOSが認識できる形式となり、FATファイルシステムが採用されることが多いです。
また、組込み機器でCDなどの光学系のメディアを使用する場合はCDFSやUDFなどのFATとは異なるファイルシステムを使用する場合もあります。

FATファイルシステムとは

FATファイルシステムは、Microsoftが自社のOS向けに開発したファイルシステムです。このOSは当時MS-DOSという名称で販売されていました。(MicroSoft Disk Operating Systemからきています。)
現在ではWindowsに接続されるリムーバブルメディアのファイルシステムとして利用されています。
また、いくつかの機能強化も行われており、FAT32では利用できる容量が大幅に拡張され、また、利用効率も良くなるような改良がされました。VFAT LFNでは従来の8.3形式のファイル名の制限を超えた長いファイル名を扱えるようになりました。

FATファイルシステムの仕様書

FATファイルシステムはMicrosoftが作成しているため、仕様書はMicrosoftより入手が出来ます。
弊社のGR-FILEもこの仕様書を元に作成されています。
2021/12/28現在でも、Microsoftのホームページより「Microsoft Extensible Firmware Initiative FAT32 File System Specification」で検索するとWordファイルのダウンロードができます。2023/12/26現在、「Microsoft Extensible Firmware Initiative FAT32 File System Specification」で検索すると以下のような検索結果となりましたがクリックすると仕様書がダウンロードできました。)

FATファイルシステムの概要

FATファイルシステムでは、クラスタ(Windowsではアロケーションユニットとも呼びます)と呼ばれるデータブロックを、片方向のチェイン形式の管理情報を使用して管理します。この片方向のチェイン情報をファイルアロケーションテーブル(File Allocation Table)と呼び、頭文字をとってFATと呼びます。ファイル・ディレクトリは1つまたは複数のクラスタを使ってデータを記録します。このため、メディアの空き容量はクラスタのサイズ単位で増減します。
ファイル名はディレクトリエントリと呼ばれるテーブルに記録され、ディレクトリエントリにはファイルの属性やタイムスタンプなどの情報も記録されています。ファイル名は8.3形式の短いファイル名とLFNによる長いファイル名の両方が記録されます。ファイル名は大文字小文字の区別がされず、同名は許可されません。また、使用できない文字もあります。
FATファイルシステムは、データをメディア上に記録・参照するための論理的なルールのため、物理的なメディアの違いなどにあまり影響されない仕様となっています。

組込み機器でのFATファイルシステム

多くの組込み機器向けFATファイルシステムは、FATファイルシステムの処理を行う部分と、メディアにアクセスする部分が分かれており、メディアにアクセスする部分をメディアドライバと呼んだりします。(もちろん、このように分かれていない組込み向けのソリューションもあるとは思いますが、その場合は特定の機器専用となっていることが多いです。)
また、組込み機器ですとOSも様々なものがあります。排他制御が必要なファイルシステムの場合はOSの機能を使用しますのでこのあたりの合わせこみが必須となります。(複数のタスクで同時アクセスできるようなファイルシステムでは排他制御を行うことが多いです。)
合わせこみには時刻に関する部分もあります。FATファイルシステムでは作成日時、更新日時、アクセス日などファイルの時刻を記録しますのでこの合わせこみも必要になりますが、時刻情報が不要の場合は特定の時刻のみを設定することも良くあります。(例えば1980/1/1で固定するなどです。)

exFATファイルシステムとは

exFATファイルシステムはMicrosoftが作成したファイルシステムです。「FAT」とついていますが、FATファイルシステムとは互換性はありません。(ファイルアロケーションテーブルは使用されていますが。)
exFATはSDXCカードのファイルシステムとして採用されており、32GBを超える容量(48GBなど)で採用されています。
exFATファイルシステムではメディア、ファイルの最大容量も大きく引き上げられています。
ここでは、あまり細かな仕様などは記載できませんのでご興味があればMicrosoftへ問い合わせるなどしてみてください。(仕様はMicrosoftと契約することで入手できます。また、SD協会の仕様書にも記載があります。)
弊社製品に、組込み向けexFATファイスシステム「GR-FILE/ex」もありますのでご検討ください。

AzureRTOS FileXとは

AzureRTOSとは、Microsoftが配布している組込み向けのソフトウェアスイートです。
元々はExpressLogicが開発・販売していましたが、Microsoftに買収され、名称が変わりました。
AzureRTOSにはいくつかのソフトウェアが含まれており、FileXはその一つになります。
FileXは組込み機器向けのFAT/exFATファイルシステムになります。
ただし、exFATに関しては別途Microsoftとの契約後にリリースされます。
FATの機能に関してはFAT32・LFNもサポートしています。
APIは独自のI/Fとなっており、POSIXなどのI/Fとは異なっています。
また、メディアドライバは持たず、別途用意する必要があります。(RAMDISKドライバは付属しています)
FileXは組込み向けRTOS「AzureRTOS ThreadX」上で動作します。(排他制御やタイムスタンプにThreadXの機能を使用しています。)
AzureRTOSは、ExpressLogic時代から各種機能安全認証を取得しており、品質の高いコードが無料で入手できることで一時期話題になりました。

Eclipse FileXとは

Microsoftは、2024年第一四半期にAzureRTOSをオープンソースモデルに移行することを発表しました。
これによりライセンスもMicrosoftを離れ、完全なOSSとしてEclipseFoundationより提供されることとなります。(ライセンスはMITとの事。)今後のコードの提供はEclipseからのみ行われ、メンテナンスなどもEclipseFoundationとして行われます。
これまで、AzureRTOSはMicrosoftがチップベンダーにライセンスを提供し、チップベンダーが顧客へコードを提供していました。(もしくはGitHubから取得していました。)この形態も変更される可能性があります。(2024/1/30現在、既にMicrosoftのGitHubからの提供は行われなくなり、EclipseFoundationからの提供に変わっていました。)

Eclipse FileX関連製品のページはこちら