Linuxファイルシステムの仕組み_前編

ITインフラ

今回は、Linuxのファイルシステムについて解説します。皆さんもWindowsやLinuxなどのOS上でファイルやフォルダにアクセスして文書閲覧やデータを保存することがあると思います。WindowsなどのGUI操作がメインのOSだと中々その内部の仕組みについて意識することはないと思います。

ディスクに保存されたデータをファイルとして管理する仕組みを「ファイルシステム」と言います。私たちがファイルを閲覧、アクセスできるのはこの仕組みがあるからです。

この記事ではLinux上でファイルシステムを実現する手順についてまとめていきます。LinuxOS上でファイル操作を行うには構築時に様々な準備を行わなければなりません。
ここでは「ファイルシステム」の仕組みについて解説して、実際のコマンド操作は次回以降の記事で解説します。

Linuxファイルシステムの流れ

Linuxファイルシステムは大きく以下の手順を行うことで実現できます。

① 「ハードディスク」をアタッチ(接続)
② ハードディスク上で「パーティション」を作成
③「ファイルシステム」の作成
④既存ディレクトリへの「マウント」を行う

この4つの操作を行えば、ファイルシステムを実現できてファイル操作が行えるようになります。

ハードディスクについて

ハードディスクの規格について

ハードディスクを使用するには「接続規格」について考慮する必要があります。例えば、PCにSSDなどのストレージを外付けで接続する時にはUSBを使用します。このUSBも接続規格の1つです。USBの挿し口がPCにありますよね。

上記の例は「外付け」ですが、「内付け」もあります。
例えば、仮想サーバの「ハードディスク」を物理サーバから割り当てる方法です。仮想サーバにも当然データを保存するためハードディスクは必要です。仮想サーバでは物理サーバへ割り当てた分を一部仮想サーバに割り当てることができます。
これはシステム内部で実現しているため私たちには見えません。しかし、この時もハードディスクを接続するために「接続規格」を指定しなければなりません。

SATA

現在主流となっているのがSATAです(私も実務でよく使用します)。かつてのIDEに比べてデータ転送速度が比較的に速く、ほとんどのPCで標準的に利用されます。

SAS

SATAよりも高速で信頼性が高いのがSASです。サーバ用途で使用されることが多いですが、SATAに比べると高価です。

SCSI

ハードディスクやDVDドライブ、テープドライブなど様々な周辺機器を接続するための一般的な規格です。高価ですが、データ転送速度も速いのでサーバ用途で使われることが多いです。SCSIデバイスを使うには、SCSIホストアダプタ(SCSIカード)が必要です。

USB

私たちに身近なのがUSBです。主に外付けで使用されます。

パーティションについて

1つのハードディスクを複数の区画に分割することができます。これを「パーティション」と言います。
それぞれのパーティションで異なるファイルシステムを作成することができます。BIOSベースのファイルシステムでは「パーティション」の種類は3つあります。

基本パーティション

最大4つのパーティションを作成することができ、各パーティションの中には「ファイルシステム」を格納できます。
基本パーティションのデバイス名は、ハードディスク「/dev/sda」の場合は「/dev/sda1」〜「/dev/sda4」です。

1つのハードディスクを最初に分割する際のパーティションを指します。

拡張パーティション

基本パーティションで作成したパーティションを拡張パーティションにすることができます。拡張パーティションにはファイルシステムではなく、論理パーティションが格納されます。

基本パーティションで作成した区画をさらに分割する際には、その区画を拡張パーティションに変更しなければなりません。

論理パーティション

拡張パーティションで作成されたパーティションのことを指します。論理パーティションのデバイスファイル名は作成した基本パーティションの数に関わらず、「/dev/sda5」以降となります。

ファイルシステムについて

ハードディスクをパーティションに分割しただけでは、ファイルを保存することはできません。パーティションを作成した後に「ファイルシステム」を作成する必要があります。
*ディスクに保存されたデータをファイルとして管理する仕組みを「ファイルシステム」と言います

ファイルシステムを作成しない場合、ファイル操作を行う際に「⚪︎⚪︎セクタのファイルへアクセス」のようにディスクのセクタを指示してユーザを操作しなければなりません。これはとても難解です。「⚪︎ディレクトリの⚪︎⚪︎.txtへアクセス」などユーザにとって分かりやすい操作を行うには「ファイルシステム」を作成する必要があります。

Linuxの「ファイルシステム」では、「ファイルの中身(データ)」と「ファイルの属性情報(管理情報)」は別々で保存され、後者を格納してるのは「iノード」です。ファイルやフォルダ、ディレクトリを作成する度にこの「iノード」は消費されます。

ファイルシステムには「ext2」「ext4」などの種類がありますが、ここでは詳細に触れません。用途に応じて多岐に渡ってあります。

マウントについて

マウントとは、あるディレクトリのアクセスポイントに別のディレクトリのアクセスポイントを組み込むことです。

例えば、パーティション「/dev/sda2」を作成してファイルシステム「ext4」を格納したとします。この「/dev/sda2」に既存の「/data」ディレクトリをマウントすることで、ユーザは「/data」ディレクトリにアクセスすると、「/dev/sda2」を参照できます。

まとめ

この記事ではLinux上の「ファイルシステム」について解説しました。この仕組みがあるから私たちはlinux上でファイル操作が可能になるのです。次回以降は実際にコマンドを操作してファイルシステムを作成していきます。

コメント

タイトルとURLをコピーしました