【図解】初心者向けファイルシステムの基礎知識〜仕組み, OSとの関係, アクセス権との連携〜

前提

OS とは何か?という人はまずは以下を参照下さい。

【図解】初心者向けオペレーティングシステム(OS)の仕組みと基礎知識
【図解】初心者向けオペレーティングシステム(OS)の仕組みと基礎知識
オペレーティングシステム(OS)とは OS (オペレーティングシステム) とは...

ファイルシステムの役割、構造、OSとの関係

Windows から Explorer 等のアプリケーションを使って、ファイルシステム上のファイルを扱うことができます。

この事実から、ファイルシステムは OS の一部だと勘違いしてしまうかもしれませんが、ファイルシステムは OS とは独立しています

OS とファイルシステムのどちらが先に存在しているかというと、ファイルシステムが先です。

OS インストール時の OS とファイルシステムの関係

OS のインストール時に、インストール先として HDD や SSD を選択しますが、その際には具体的に以下を実施します。

  1. ファイルシステムへのフォーマット
  2. ブートセクタの作成およびOSプログラムファイルの配置

フォーマットは『初期化』とも呼ばれますが、これにより、単なる 0 と 1 のビットしか扱えない HDD/SSD が、『どのような形式でファイルを配置していくのか?』というのを理解し、ファイルを配置していくことができるようになります。

ファイルシステムを構成した後に、OS が使うプログラム群・ライブラリ群をそのファイルシステムにインストール(配置)するのです。

ファイルシステムの構造を駐車場に例えると、HDD/SSD は土地で、駐車スペース番号を振って管理するのがファイルシステム、車はファイルそのものです。フォルダは実はファイルの1種として見做されますが、この喩えで言えば駐車スペースの区画になります。

なお、OS がインストール可能なファイルシステムはインストールする OS によって決まっています。Windows をインストールするのであれば NTFSLinux をインストールするのであれば XFS や ext4 等VMware ESXi であれば VMFS、等です。

インストール後の OS とファイルシステムの関係

OS インストール後、マシンを起動すると今度は HDD/SSD のブートセクタからブートローダをメモリに展開し、ブートローダが OS をメモリ上に展開します。

OS が起動した後の一般プロセス(MS Office や Apache 等各種アプリケーションなんでも) はファイルシステムにアクセスする際は OS が用意するシステムコール『 "read()", "write()", "ioctl()" 等』を使って HDD/SSD 上のファイルへアクセスします。

OS とファイルシステムとアクセス権

ファイルシステムには、どのユーザがどのフォルダ/ファイルにアクセスしてよいかを定める『アクセス権』の領域が用意されています。

例えば Windows の場合、NTFS ファイルシステムのファイルにはファイルのメタ属性として『Windows ユーザアカウントの識別子である SID』と『その SID に対するアクセス権限』がセットで記述されています(例えばAさんはフルコントロール、Bさんは読み取りのみ、等)。

一方、Windows OS では SAM (Security Accounts Manager) というプログラムとデータベースによってユーザアカウントを管理しており、ユーザがファイルへアクセスする際はこのプログラムによって SID が把握され、ファイルのアクセス権に合致するかを確認します。

なお、SAM は常駐プログラムでもありますが、その元ネタは C:\Windows\system32\config\SAM というファイルです。

OS がインストールされていないドライブのファイルシステム

Windows では慣例的に C ドライブに OS がインストールされます。パーティションを分けたり、HDD/SSD を増設したり、DVD ドライブを付けたりして、Dドライブ、Eドライブ、と増やしていくことができます。

この時の増設ドライブのフォーマットは、C ドライブとは異なっていても問題ありません。ただし OS が読み書きのサポートをしている必要があります

DVDドライブであれば iso9600 というフォーマットになり、これは Windows でサポートされますが、XFS や ext4 はサポートされないため、アクセスしようとしても中身を見ることができません。

一方、Linux であればモジュールをインストールすることで NTFS の中を見ることができます。

このように、OS とファイルシステムは独立した存在ではあるものの機能的には緊密に連携しているものなのです