非エンジニアのエンジニア道

非エンジニアからエンジニアに転向!その勉強の軌跡を載せていきます。

ファイルシステムとは

ファイルシステムまわりについて調べてみた

ファイルシステムとは

ハードディスクなどの記憶装置にデータを記録する方式

人間にわかりやすいファイルというものに抽象化、可視化し、データを永続的に管理しやすくするという役目

inode(アイノード)

  • Unixファイルシステムで使用されているデータ構造
  • ファイルの実データが格納されている位置やファイル・サイズ,変更時刻などの管理情報を含む

作成方法

ファイルが作られると、そのファイルに関する情報を記録するためinodeが作られる
全てのファイルは、物理的にinodeにリンクされている。

確認の仕方

df -i
stat -L test.txt

その他

作成に上限があるため、容量があってもファイル作成できない場合がある
VFSの抽象化の仕組みの基本単位として提供されている

VFS(Virtual File System)

ハードリンク、シンボリック

UNIXでは、ファイルに対してリンクを作成できる

作成について

下記のコマンドで作成できる。
ls −al で見た際、ハードリンクの場合はリンク数が増えている
−sでシンボリック作成

ln (-s) リンク元ファイル リンク先ファイル

シンボリックリンク

  • ファイルの本体の位置情報を保管しているファイル
  • 本体とは完全に区別されるため、本体が削除されたらエラーとなってしまう
  • ハードリンクと異なり制限がなくファイルやディレクトリにも作成できる
  • ファイルシステム上に0バイトのファイルが出現する

ハードリンク

  • ファイルに複数の名前を割り当てる機能
  • 実体ファイルの削除ができる
  • 複数存在しても同じ扱いで、すべてのリンクを削除しないと実体は削除されない
  • 異なるファイルシステムやディレクトリにはリンクできない

ファイル階層標準(FHS)

  • Filesystem Hierarchy Standard
  • Linuxと他のUNIX系オペレーティングシステムでの主なディレクトリとその内容を定めたもの
  • ディレクトリ構成を示したファイルの標準化仕様書

ディレクトリ構造

全てのファイルとディレクトリはルートディレクトリ "/" の下に置かれる。

3つの構成

・システムに必須のファイル
・システムには必須ではないファイル
・動的に変化するファイル

ファイルシステムの特徴

EXT3

third extended file system。ディスクファイルシステム
Linuxで広く使用されているファイルシステムの一つで、ext2ファイルシステムジャーナリング機能(データ変更をトランザクションとして管理する機能)を追加したもの。ext2より復旧速度が上がった。

ZFS

ZettabyteFile System。トランザクションファイルシステム
Solaris(SunSoft社のUNIX系OS)のファイルシステムで、無限に近いデータを扱える。コピー・オン・ライト方式(書き換え時にコピーする)で、ジャーナルを使わない。

NTFS

NT File System。ディスクファイルシステム
windowsで利用される高機能ファイルシステム。暗号化もできる。
FAT(File Allocation Tables)もwindowsで使われている。この2択しかない

ジャーナル

データを変更する前に,ファイルの管理情報あるいはデータの変更内容を「ジャーナル」と呼ばれるログに同期的に(キャッシュを通さずに)書き込んでおく。

パーテーションとは

windows

物理的なハードディスクドライブを複数の論理的HDDに分ける事
分割された個々のパーティションはひとつの「ドライブ」として扱われ、それぞれが独立したフォルダ構成をもつ

Linux

ドワイブという概念はなく、ひとつのディレクトリ構造となる。下記のコマンドで確認できる

df -h

パーテーションを分割するメリット

バックアップ/アップデートが必要な場合に便利
障害が発生した際、最小限におさえられる
HDDを有効活用できる

デメリット

使用率に偏りができる可能性がある