第7章ファイルシステム
Linuxのファイルシステム
ファイルに対するシステムコール発行後の読み出し手順
カーネル内の全ファイルシステム共通処理が動作して、捜査対象のファイルのファイルシステムを判別
各ファイルシステムを扱う処理を呼び出し、システムコールに対応した処理をする。
データの読み書きをする際はデバイスドライバに処理を以来する。
デバイスドライバがデータの読み書きをする。
クォータ
用途ごとにしよう出来るファイルシステムの容量を制限する機能。
ユーザークォータ
ディレクトリクォータ
サブボリュームクォータ
ファイルシステムの不整合
ファイルシステムが検出し、マウント時の場合はファイルシステムをマウントできなくなり、そのファイルシステムへのアクセス中に検出すると読み出し専用モードで再マウント、最悪システムがパニックする。
不整合が発生してしまった場合
バックアップがない場合はfsckコマンド復元可能だが
生合成確認および修復のためファイルシステムを全走査するので、所要時間がファイルシステムの使用料に応じて増加する。
結果として失敗することが多い。
処理の最中に不整合が起きているデータやメタデータを削除することもあり、想定通りに復元されるとは限らない。
デバイスファイル
/devに存在し、デバイスファイルのメタデータに保存されている「ファイルの情報」「デバイスのメジャー番号」「デバイスのマイナー番号」によって個々のデバイスを一意に識別する。
メモリベースのファイルシステム
tmpfsというファイルシステムがあり、電源を切るとなくなるがストレージデバイスへのアクセスが一切発生しないため高速にアクセスできる。
再起動後に残っている必要のない/tmpや/var/runに使われることが多い。
ネットワークファイルシステム
ネットワークを介して繋がっているリモートホスト上のファイルにアクセスするファイルシステム。
Windowdだとcifs。Linuxだとnfsを使う。
仮想ファイルシステム
procfs
sysfs
cgroupfs
Btrfs
extやXFSfが一つのパーティションに対して一つのファイルシステムを作成するのに対し、Btrfsは一つないしは複数のストレージデバイス/パーティションから大きなストレージプールを作った上で、その上にマウント可能なサブボリュームを作成する。 既存のBtrfsファイルシステムに対するストレージデバイスの追加・削除・交換も可能で、その際容量変化を伴うファイルシステムのリサイズ処理は不要で、これらの処理はファイルシステムのマウント中に運用を止めることなく行える。
スナップショット
サブボリューム単位で採取できる。
データを参照するメタデータの作成とスナップショット内のダーティページのライトバックだけで済むので通常のコピー操作よりはるかに高速。
データ破損検知
ストレージ内の一部データが破損した場合に、それを検知していくつかのRAID構成を修復可能。
データとメタデータで所定のデータ長ごとにチェックサムを持つことで破損を検知している。