【開発者向け】FATファイルシステムについて

ファイルシステムとは

HDDイメージ画像

ファイルシステムとは、コンピューターでファイルやディレクトリを管理するための仕組みです。ファイルシステムは、ハードディスクやフラッシュメモリドライブなどのストレージデバイスに保存されたファイルを扱うために使われます。

WindowsやLinuxなどの多くの汎用OSでは、ブートプログラムや設定データをファイルで取り扱うため、ファイルシステムは欠かすことができない重要な機能の一つです。コンピュータシステムの基幹を成す重要な機能と言っていいでしょう。

そのため、多くの汎用OSでは標準でファイルシステムをサポートしています。

組込みシステムにおけるファイルシステム

CPU基板イメージ画像

1990年代前半までは、組込みシステムでは8bit/16bitマイコンを使用することが多く、メモリが潤沢に使えない環境では、必要なデータはROMなどの特定領域にデータを羅列して保存することが一般的でした。

現在でもそうですが、組込みシステムではリアルタイムオペレーティングシステム(RTOS)にファイルシステムは付随しておりません。組込みシステムはメモリの制約上「必要なものを必要なだけ組み込む」という考え方が基本的です。

その後1990年代後半ぐらいになると、マイコンやメモリの微細化が進んで32bitマイコンが安価に利用できるようになり、組込みシステム上でもデータをファイルで扱いたい、といった要望が増えてきます。

組込みシステムでファイルが扱えると、プログラムの書換、設定データの更新、ログデータの取得などPCとの親和性が上がり、またネットワーク経由でファイル転送が容易になるなど、組込み機器の利便性が大きく向上しました。

こういった背景から、今では組込みシステムでもファイルシステムを採用するケースが増えています。

ファイルシステムの種類

ファイルシステムはその歴史から、数多くの種類が存在します。

以下に、代表的なファイルシステムの種類をいくつか紹介します。

ファイルシステムの種類 概要
FAT(File Allocation Table) Microsoftが開発したファイルシステムで、MS-DOSやWindows 9xで使用されました。FAT12/FAT16/FAT23があり、32ビット版のFATであるFAT32は、Windows 95 OSR2以降、Windows 98、Windows Me、Windows 2000、Windows XP、Windows Vista、Windows 7/8/10/11などでも利用されています。
NTFS(New Technology File System) Microsoftが開発したファイルシステムで、Windows NTシリーズのオペレーティングシステムで使用されます。NTFSは、セキュリティや可用性、可搬性などに優れ、大容量のデータを効率的に扱うことができます。
Ext(Extended File System) LinuxなどのUnix系オペレーティングシステムで使用されるファイルシステムです。Ext3からはジャーナリング機能を備え、最新版のEXT4は大容量のファイルシステムをサポートし、ファイルの断片化を抑えるなどの機能があります。
HFS(Hierarchical File System) Appleが開発したファイルシステムで、Mac OSやiOSで使用されます。HFS+は、大容量のファイルシステムをサポートし、ファイルのメタデータや日本語のファイル名などにも対応しています。
exFAT(Extended File Allocation Table) Microsoftが開発したFAT系列のファイルシステムで、大容量のストレージデバイスや移動式ストレージデバイスで使用されます。exFATは、ファイルサイズやボリュームサイズの制限が緩和されているため、大容量のファイルの取り扱いに適しています。

上記は代表的なファイルシステムの一部であり、他にも多数の種類が存在します。

Cente FileSystemでは、上記の中でも最も汎用性があるFAT、exFATをサポートしています。

FAT(File Allocation Table)とは

ファイルのイメージ画像

FAT(File Allocation Table)ファイルシステムは、コンピュータのストレージデバイスにおいて、ファイルやディレクトリの格納や管理に使用される技術です。

FATファイルシステムは、Microsoftによって開発されたもので、Windowsオペレーティングシステムにも採用されています。以下では、FATファイルシステムの主な特徴や機能について解説します。

FATファイルシステムは、ファイルの保存先を記録するためのテーブルであるFATを利用しています。FATは、ストレージデバイスのセクタと呼ばれるブロック単位でファイルを保存するための情報を保持しています。ファイルシステムは、このFATを読み込むことで、どのセクタにどのファイルが保存されているかを知ることができます。

FATファイルシステムの特長

FATファイルシステムは、以下のような特徴を持ちます。

1.多くのOSでサポートされている

多くのOS(Windows, Linux, MacOS, Android)でサポートされており、相互運用性が高いファイルシステムです。

異なるOS間でのデータ受け渡しが可能となるため、クロスプラットフォームでの使用にも向いています。

2.可搬性が高い

FATファイルシステムは、ストレージデバイスに依存せず汎用的なデータ構造を採用しているため、可搬性が高いという特徴があります。

また、FAT32では、最大ファイルサイズが4GBまで対応しているため、大容量のストレージデバイスでも使用することができます。

3.構造が簡単である

FATファイルシステムは、データ構造が単純であるため、高速な読み書きが可能です。また、ファイルシステムが破損した場合でも、復旧が比較的容易であるという利点があります。

FATファイルシステムの欠点

一般的に、FATファイルシステムには以下のような欠点も指摘されています。

1.ファイルサイズの制限

FAT16ではファイルサイズが2GBまで、FAT32では4GBまでしかサポートしていません。このため、大きなファイルを扱う場合には不便です。

しかし、動画ファイルなどの大容量ファイルを扱う場合は、exFATを採用することでファイル容量の制限は論理上無くなります。

2.パフォーマンスの低下

FATファイルシステムは、FATテーブルの更新やディスクの断片化によって、パフォーマンスが低下することがあります。また、FATテーブルが破損した場合には、ファイルの復元が困難になることがあります。

3.セキュリティの脆弱性

FATファイルシステムには、ファイルのアクセス権限を設定する機能がありません。このため、誰でもファイルにアクセスできる可能性があります。

またFATファイルシステムは、データの暗号化をサポートしていないため、セキュリティの観点からは問題があります。

4.ファイル名の制限

FATファイルシステムでは、ファイル名に使用できる文字や長さに制限があります。たとえば、FAT16では、ファイル名は8文字以下、拡張子は3文字以下でなければなりません。これにより、長いファイル名を扱う場合には不便です。

5.エラー処理の問題

FATファイルシステムにはエラー処理の問題があります。たとえば、FATテーブルが破損した場合や、ストレージデバイスに物理的なダメージがあった場合には、ファイルの復元が困難になることがあります。

Cente FileSystemでの対応

Centeミドルウェアパッケージシリーズ

FATは歴史のあるファイルシステムであるものの、時代と共に現代のニーズや要件に対応仕切れない部分もあります。

そういった規格化されていない部分に対して、ミドルウェアメーカー各社は独自の機能で顧客ニーズをカバーしています。

Cente FileSystemの場合、以下のような独自機能で信頼性・拡張性を確保しています。

1.パフォーマンスの向上

ファイルアクセス頻度が高いアプリケーションや、大きなファイルをいくつもオープンして読み書きする場合でも、システムのパフォーマンスが低下しないよう、ファイルシステム側でキャッシュメモリを設定できる点が特長です。

特に、メモリマネジメントユニット(MMU)やキャッシュメモリが無いローエンド~ミドルレンジのマイコンでも、メモリデバイスの遅いread/write時間に制限されることなく、アプリケーション動作が可能です。

2.信頼性の向上

組込みシステムでは、突発的な電源断、USBメモリ・SDメモリなどの突然の抜去などについて考慮する必要があります。

FAT仕様では、FAT領域を2面(FAT1, FAT2)持つことで冗長性を持たせているものの、データ保全に関してはあまり考慮されていないのが現状です。

Cente FileSystemでは、MBR/PBSやFAT領域などを保護する「メタデータ保護機能」を実装しています。実データの完全保護まではできませんが、ファイル構造やメディアの破壊を防ぎ、保護されたメタデータからファイルを復旧します。

そのため、同メディアに保存されている他のファイルに影響を及ぼすことなく運用することが可能です。

3.大容量対応

FATは仕様上の制約から、FAT32でもファイルサイズは最大4GBまでしか作成できません。

多くの組込みシステムでは、そこまで大容量のファイルを扱うケースは少ないかもしれませんが、音声や動画などの大容量コンテンツを1ファイルで扱いたい場合、Centeでは"Cente exFAT FileSystem"でexFATファイルシステムに対応しています。

もちろん、Cente FileSystemと組み合わせることで、FAT12/16/32/exFATまでの幅広いFAT種に対応することが可能です。

4.セキュリティ対応

Cente FileSystem Encrypting Module(オプションパッケージ)を導入することで、ファイルの暗号化・復号を意識することなく、ファイル生成~読み書きすることが可能です。

保存されているファイルは暗号化されているため、万が一、リムーバブルメディアが紛失・盗難に遭っても、データ流出を未然に防ぎます。

導入がスムーズ・明朗価格・実績豊富な「Cente」とは

Cente(セント)は、組込み開発の経験と豊富な知識を持つエンジニアが、実際の機器やシステムを開発する中で培ったスキルを活かして作り上げた組込み開発ブランド。組込み開発に20年以上関わってきた経験と1000プロジェクト・3000ライセンシーの実績を活かし、あらゆるニーズにお応えしています。
ハードウェアからミドルウェア、アプリケーションだけでなく、システム開発のコンサルティングや技術サポートまで、組込み開発に必要なあらゆる技術を提供。すべての商品はソースコードで提供するためブラックボックスは一切無く、完成後の製品イメージが抱きやすくなっています。
ロイヤリティ不要で、半年間の無償サポート付き。プライスをすべて開示しているため、安心してご購入いただけます。

「Cente」組込みファイルシステムシリーズ一覧

Centeの組込みファイルシステム全6種類をご紹介します。
※価格はすべて税抜

Cente FileSystem
組込み機器開発専用のFAT互換ファイルシステム。FAT12/16/32に対応。メディアドライバと組み合わせることで様々なストレージデバイスを使用することが可能です。
価格:100万円/1プロジェクト限定ライセンス
Cente Compact FileSystem
機能を絞り込み、組込みサイズの軽量化を図ったFATファイルシステム。FAT12/16/32に対応。メディアドライバと組み合わせることで様々なストレージデバイスを使用することが可能です。
価格:100万円/1プロジェクト限定ライセンス
Cente exFAT FileSystem
μITRON環境で使用可能なExtended File Allocation Table(exFAT)対応のファイルシステム。Cente FileSystemと組み合わせることで、FAT12からexFATまで幅広いFAT種に対応可能です。
価格:140万円/1プロジェクト限定ライセンス
Cente FileSystem Encrypting Module
格納するファイルを暗号化・復号するCente FileSystemのオプションパッケージ。
価格:120万円/1プロジェクト限定ライセンス
Cente SD Card Driver
Cente FileSystemのデバイスドライバとして動作可能なSDカードコントローラドライバで、SDXC、UHS-1カードに対応しています。
価格:50万円/1プロジェクト限定ライセンス
Cente NAND Flash Driver
Cente FileSystemのデバイスドライバとして動作可能なNAND型フラッシュメモリデバイス専用のドライバです。
価格:90万円/1プロジェクト限定ライセンス
Cente eMMC Driver
Cente FileSystemのデバイスドライバとして動作可能なeMMCコントローラに対応したデバイスドライバです。
価格:50万円/1プロジェクト限定ライセンス
Cente SPI Memory Card Driver
Cente FileSystemのデバイスドライバとして動作可能なSPI(Serial Peripheral Interface)を使用したメモリーカード接続用ドライバです。
価格:50万円/1プロジェクト限定ライセンス

製品の詳細については、遠慮なくお問い合わせください。


サポート情報