【Linux カーネル: OS 入門5】ファイルシステムの機能

ファイルシステムとはファイルシステムとは、ストレージ等を「ファイル」単位で管理するカーネルの機能です。
これにより、ファイル名を経由してストレージ上のデータへアクセスできるようになります。
各アドレスにどんなデータが入っているのか覚える必要がある
どんなデータが入っているかはファイル名を見ればいい

なお、本記事は Linux カーネル解説の第5回「ファイルシステムの機能」に関する記事です。

スポンサーリンク

ファイルシステムの主な機能

ファイルシステムの主な機能は以下の5つです。

ファイルシステムの機能説明
ファイルアクセスメカニズムファイルを利用してストレージにアクセス
パーミッションファイルのアクセス許可
シンボリックリンクファイルのショートカット
スナップショット任意の時点でのストレージのデータを記録
ジャーナリングファイルストレージのデータの整合性を保つ

以降では、ファイルシステムの上記5つの機能について説明します。

スポンサーリンク

ファイルアクセスメカニズム

ファイルアクセスメカニズムはファイルを利用してデータにアクセスする方法のことです。

ファイルアクセスメカニズムには以下の3つが存在します。

  • シーケンシャルアクセス
  • ランダムアクセス(ダイレクトアクセス)
  • インデックスシーケンシャルアクセス

なお、ファイルアクセスメカニズムで利用する情報は i-node から取得します。

シーケンシャルアクセス

シーケンシャルアクセスとは、指定したアドレスから連続でブロックにアクセスする方法です。

https://www.geeksforgeeks.org/file-allocation-methods/

例えば、mai というファイルは 19 番ブロックから 6 ブロック(19, 20, 21, 22, 23, 24)にアクセスすれば良いことがわかります。

ランダムアクセス (ダイレクトアクセス)

ランダムアクセスとは、指定したアドレスのブロックに直接アクセスする方法です。
各ブロックには次に読み込むブロックの情報があり、ブロックが隣接している必要がありません。

https://www.geeksforgeeks.org/file-allocation-methods/

jeep というファイルは 9番ブロックから読み込みを開始し、9番ブロックには次に16番ブロックを読み込むように書かれていて・・・・最後に25番ブロックを読み込むまでこれを続けます。

インデックスシーケンシャルアクセス

インデックスシーケンシャルアクセスとは、Index ブロックと呼ばれるブロックを利用する方法です。
Index ブロックには、ファイルを構成する全てのブロックのアドレスを順番に格納しています。

jeep というファイルの index ブロックは 19 番です。

index ブロックには次に読み込むべきブロック(1, 9, 10, 16, 25)が記載されています。

スポンサーリンク

パーミッション

パーミッションとは、ファイルに設定する「ユーザー」・「ユーザーグループ」ごとのアクセス権限のことです。

Linux は複数のユーザーが同時に操作することを想定されているため、ユーザーごとにファイルのアクセス権限を設定できます。

パーミッションについては、以下の記事にまとめています。

シンボリックリンクとは、ファイルやディレクトリを指し示す別のファイルのことです。
Windows でいうショートカットのことです。

シンボリックリンクは ln -s <リンク元> <リンク先> で作成できます。

ln -s /bin/ls symbolic_test
./symbolic_test
symbolic_test

スナップショット

スナップショットは任意の時点でのデータを保存することです。
スナップショットは取得時点ではデータブロックへのポインタを取得するだけなので、バックアップと比較して非常に短い時間で済みます。

スナップショットの種類には以下の2つが存在します。

  • Copy on Write (CoW)
  • Redirect on Write (RoW)

スナップショットでは、コピー時にデータブロックのポインタを取得するだけでデータブロックはコピーしません。

Copy on Write (CoW) スナップショット

データブロックを更新する際に、元のデータを「スナップショット予約済みスペース」にコピーする方法です。

After Modifications は元のデータブロックから B を削除して、D を変更する場合
https://technoscooop.wordpress.com/tag/copy-on-write/

スナップショット予約済みスペースには、元の B と D のデータブロックが保存されます。

ちなみに Windows では VSS(ボリュームシャドウコピー)と呼ばれてます。

ボリューム シャドウ コピー サービス (VSS) について

Redirect on Write (RoW) スナップショット

データブロックを更新する際に、更新後のブロックを「スナップショット予約済みスペース」に書き込み、オリジナルのポインタをリダイレクトします。(元のデータは更新しません。)

After Modifications は元のデータブロックから B を削除して、D を変更する場合
https://technoscooop.wordpress.com/tag/copy-on-write/

スナップショット予約済みスペースには、更新分の「B(削除), D+, E, F」が記録されます。

バックアップとスナップショットの違い

バックアップはデータブロックをコピーします。

バックアップの場合

スナップショットはデータブロックのポインタを取得するだけです。

その後データブロックが更新される度に、差分・増分のデータブロックを別途保存します。

スナップショットの場合

そのため、バックアップとスナップショットの以下のような違いがあります。

  • スナップショットのほうが取得が速い
  • スナップショットのほうが容量が少ない
  • バックアップはオリジナルのデータが消えても問題ない
    • スナップショットは初回時に全体をバックアップする必要がある

ジャーナリング

ジャーナリングとは、ファイルの更新中に電源断等が発生しても、元のファイルに復元可能な仕組みです。

ジャーナリングが無い時

データブロックを更新した後に電源断が発生すると、データブロックやメタデータ(スーパーブロックi-node テーブル)で不整合が発生する可能性があります。

mv コマンドで /hoge/bar ファイルを /bar に移動させる例を見てみます。

「②/bar のリンクを追加」の状態で電源断が発生すると、inode にある /hoge/bar のハードリンクが削除されないまま処理が終了してしまいます。

ジャーナリングがある時

ジャーナリングを利用すると以下の手順でファイルを更新します。

  1. メインメモリ上のメタデータを更新
  2. メタデータの更新をストレージ上のジャーナルログに書き出す
  3. 実際にファイル(データブロック・スーパーブロックi-node)を更新
  4. ジャーナルログを破棄
1. メインメモリ上のメタデータを更新(ストレージのデータに変化なし)
2. メタデータの更新をストレージ上のジャーナルログに書き出す
3. 実際にファイル(データブロック・スーパーブロックi-node)を更新
3. 実際にファイル(データブロック・スーパーブロックi-node)を更新
4. ジャーナルログを破棄

以上の手順で1〜4のどの段階で電源断が発生してもファイルを元の状態に復元することが可能です。

  1. メインメモリ上のメタデータを更新
  2. メタデータの更新をストレージ上のジャーナルログに書き出す
  3. 実際にファイル(データブロック・スーパーブロックi-node)を更新
  4. ジャーナルログを破棄

「メインメモリ上のメタデータを更新」で電源断

メインメモリのデータが消えるだけです。

ストレージのデータに影響は無いため、最初からもう1度やり直します。

「メタデータの更新をストレージ上のジャーナルログに書き出す」で電源断

ジャーナルログの書き込み完了記録フラグが立ってない場合は、ジャーナルログを廃棄して最初からやり直します。

ストレージの実際のファイル(データブロック・スーパーブロックi-node)は更新していないので問題ありません。

「実際にファイル(データブロック・スーパーブロック・i-node)を更新」で電源断

ジャーナルログにある処理がコミットされていない場合は、ジャーナルログを用いてをロールバックします。これにより、ファイルが復元されます。

その後、ジャーナルログを最初から実行します。

「ジャーナルログを破棄」で電源断

ジャーナルログにある処理がコミットされている場合はジャーナルログの廃棄を再開します。

Linux カーネルの関連記事

Linux カーネルファイルシステムの機能」に関する説明は以上となります。

Linux カーネル入門記事の続きは、以下をご覧ください。


参考サイト

OS Exams Questions with Answers
OS Exams Questions with Answers, These selected questions and answers are prepared from Operating Systems Exam point of view and will also help in quick revisi...