ファイルシステムとは、コンピューターでファイルやディレクトリを管理するための仕組みです。ファイルシステムは、ハードディスクやフラッシュメモリドライブなどのストレージデバイスに保存されたファイルを扱うために使われます。
WindowsやLinuxなどの多くの汎用OSでは、ブートプログラムや設定データをファイルで取り扱うため、ファイルシステムは欠かすことができない重要な機能の一つです。コンピュータシステムの基幹を成す重要な機能と言っていいでしょう。
そのため、多くの汎用OSでは標準でファイルシステムをサポートしています。
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ファイルシステムは、Microsoftによって開発されたもので、Windowsオペレーティングシステムにも採用されています。以下では、FATファイルシステムの主な特徴や機能について解説します。
FATファイルシステムは、ファイルの保存先を記録するためのテーブルであるFATを利用しています。FATは、ストレージデバイスのセクタと呼ばれるブロック単位でファイルを保存するための情報を保持しています。ファイルシステムは、このFATを読み込むことで、どのセクタにどのファイルが保存されているかを知ることができます。
FATファイルシステムは、以下のような特徴を持ちます。
多くのOS(Windows, Linux, MacOS, Android)でサポートされており、相互運用性が高いファイルシステムです。
異なるOS間でのデータ受け渡しが可能となるため、クロスプラットフォームでの使用にも向いています。
FATファイルシステムは、ストレージデバイスに依存せず汎用的なデータ構造を採用しているため、可搬性が高いという特徴があります。
また、FAT32では、最大ファイルサイズが4GBまで対応しているため、大容量のストレージデバイスでも使用することができます。
FATファイルシステムは、データ構造が単純であるため、高速な読み書きが可能です。また、ファイルシステムが破損した場合でも、復旧が比較的容易であるという利点があります。
一般的に、FATファイルシステムには以下のような欠点も指摘されています。
FAT16ではファイルサイズが2GBまで、FAT32では4GBまでしかサポートしていません。このため、大きなファイルを扱う場合には不便です。
しかし、動画ファイルなどの大容量ファイルを扱う場合は、exFATを採用することでファイル容量の制限は論理上無くなります。FATファイルシステムは、FATテーブルの更新やディスクの断片化によって、パフォーマンスが低下することがあります。また、FATテーブルが破損した場合には、ファイルの復元が困難になることがあります。
FATファイルシステムには、ファイルのアクセス権限を設定する機能がありません。このため、誰でもファイルにアクセスできる可能性があります。
またFATファイルシステムは、データの暗号化をサポートしていないため、セキュリティの観点からは問題があります。
FATファイルシステムでは、ファイル名に使用できる文字や長さに制限があります。たとえば、FAT16では、ファイル名は8文字以下、拡張子は3文字以下でなければなりません。これにより、長いファイル名を扱う場合には不便です。
FATファイルシステムにはエラー処理の問題があります。たとえば、FATテーブルが破損した場合や、ストレージデバイスに物理的なダメージがあった場合には、ファイルの復元が困難になることがあります。
FATは歴史のあるファイルシステムであるものの、時代と共に現代のニーズや要件に対応仕切れない部分もあります。
そういった規格化されていない部分に対して、ミドルウェアメーカー各社は独自の機能で顧客ニーズをカバーしています。
Cente FileSystemの場合、以下のような独自機能で信頼性・拡張性を確保しています。
ファイルアクセス頻度が高いアプリケーションや、大きなファイルをいくつもオープンして読み書きする場合でも、システムのパフォーマンスが低下しないよう、ファイルシステム側でキャッシュメモリを設定できる点が特長です。
特に、メモリマネジメントユニット(MMU)やキャッシュメモリが無いローエンド~ミドルレンジのマイコンでも、メモリデバイスの遅いread/write時間に制限されることなく、アプリケーション動作が可能です。
組込みシステムでは、突発的な電源断、USBメモリ・SDメモリなどの突然の抜去などについて考慮する必要があります。
FAT仕様では、FAT領域を2面(FAT1, FAT2)持つことで冗長性を持たせているものの、データ保全に関してはあまり考慮されていないのが現状です。
Cente FileSystemでは、MBR/PBSやFAT領域などを保護する「メタデータ保護機能」を実装しています。実データの完全保護まではできませんが、ファイル構造やメディアの破壊を防ぎ、保護されたメタデータからファイルを復旧します。
そのため、同メディアに保存されている他のファイルに影響を及ぼすことなく運用することが可能です。
FATは仕様上の制約から、FAT32でもファイルサイズは最大4GBまでしか作成できません。
多くの組込みシステムでは、そこまで大容量のファイルを扱うケースは少ないかもしれませんが、音声や動画などの大容量コンテンツを1ファイルで扱いたい場合、Centeでは"Cente exFAT FileSystem"でexFATファイルシステムに対応しています。
もちろん、Cente FileSystemと組み合わせることで、FAT12/16/32/exFATまでの幅広いFAT種に対応することが可能です。
Cente FileSystem Encrypting Module(オプションパッケージ)を導入することで、ファイルの暗号化・復号を意識することなく、ファイル生成~読み書きすることが可能です。
保存されているファイルは暗号化されているため、万が一、リムーバブルメディアが紛失・盗難に遭っても、データ流出を未然に防ぎます。
Cente(セント)は、組込み開発の経験と豊富な知識を持つエンジニアが、実際の機器やシステムを開発する中で培ったスキルを活かして作り上げた組込み開発ブランド。組込み開発に20年以上関わってきた経験と1000プロジェクト・3000ライセンシーの実績を活かし、あらゆるニーズにお応えしています。
ハードウェアからミドルウェア、アプリケーションだけでなく、システム開発のコンサルティングや技術サポートまで、組込み開発に必要なあらゆる技術を提供。すべての商品はソースコードで提供するためブラックボックスは一切無く、完成後の製品イメージが抱きやすくなっています。
ロイヤリティ不要で、半年間の無償サポート付き。プライスをすべて開示しているため、安心してご購入いただけます。
Centeの組込みファイルシステム製品 全8種類をご紹介します。
※価格はすべて税抜
製品の詳細については、遠慮なくお問い合わせください。