ファイルシステム
どこにどんなファイルが記録されているか管理する仕組み
データアクセスのためのもの
アクセス制御のためのもの
HDDのようなデータを記録する装置には
ファイルシステムの領域
どのクラスタにどのデータを記録したかなどを管理
ファイルシステムが壊れるとデータが残っていても読み出すことができなくなる
HDDのデータを削除しても消えるのはファイルシステムの記録のみ
ファイルシステムのindexを削除している
ファイル復元ソフトを使うと、クラスタ領域のデータを調べて復元できる
全部ちゃんと消すのは「データ抹消ソフト」
クラスタの領域
データを保存するための領域
どんなに小さなファイルでも必ず1つのクラスタを使用するので、一つ一つのクラスタサイズが大きいとHDDが無駄になりやすい
一つのフォルダの中に沢山のファイルをいれると、検索の際に遅くなる
1000以上あるとだいぶ多い
サブフォルダを作って分類すべき
ジャーナル機能
UNIXでは1990年代初頭
更新に係る処理が完了したかどうかのフラグをココのファイルごとに持っている
ファイルシステムが壊れたときに全ファイルのインデックスとデータの照合をしなくても、フラグがないところだけを走査するだけで済む
アロケーション方式
エクステントアロケーション方式
1つのファイルを連続したハードディスク領域に配置する
ファイルを最初から最後まで順にアクセスしていくシーケンシャルアクセスでは速い
代わりに、追加や削除を繰り返すと分散してしまう
ABC連続してたところにABCを消して、DEFGを追加しようとなるとGはどこか別のところに置かないといけなくなる
ブロックアロケーション方式
複数のハードディスク領域に分散して配置する
シーケンシャルアクセスでは遅いが、ファイルの作成や追加や更新を繰り返してもパフォーマンスの劣化がない
ディレクトリ(マウントポイント)に自分のツリーを付け加える(syspafo p99)
df コマンド
df -T 現在マウントされているファイルタイプを確認する
参考
ファイルシステムのない世界
ストレージデバイスの機能は「ストレージデバイス内の指定したアドレスに対して所定のサイズのデータを読み書きする」のみ
自分でストレージデバイスのどの部分にどのデータを置いていたかを覚えていないといけない
そしてそこに対して書き込んだり、そこから読み出したりする必要がある
ストレージデバイスの空き領域も意識しないといけない
ファイルシステム
どの場所にどういうファイルを配置するかなどのデータ構造を仕様として決めておく
ファイルシステムの仕様
0GB地点からファイルのリストを記録
1つのファイルに対して、名前、場所、サイズを記録
手順
1. カーネル内の全ファイルシステム共通処理が捜査対象のファイルシステムを判別
2. そのファイルシステムが動作
3. 読み書きがある場合はデバイスドライバに処理を依頼
4. どのファイルシステムだとしてもデバイスドライバがデータの読み書きをする
ファイルシステムのデータ
データ
文書、画像、動画、プログラムなどの内容
メタデータ
補助的な情報
ファイルの名前、ストレージで場以上の位置、サイズ、種類、時刻情報、権限情報など
不整合に対する対策
コピーオンライト
手順(図がないとわかりにくい)
https://gyazo.com/d27fad67b928a572a79acd7992a537e1
1. 更新後のリンクが貼られた新しいファイルを作成
2. rootからのリンクを張り替える
3. もともとあったファイルを削除
ファイルシステムの整合性のある状態を復元する
不整合が起きたデータが削除されたりするので、あまり良くない
ハードウェア上のデバイスをファイルとして表現したもの
アクセスできるのはrootのみ
/dev以下にある
種類
キャラクタデバイス
$ ls -lの最初文字がc
読み書きはできるが、シークはできない
例えば
ターミナル
キーボード
マウス
ブロックデバイス
$ ls -lの最初文字がb
単なるファイルの読み書き以外に、ランダムアクセスができる
ストレージの所定の位置の所定のデータにアクセスできる
例えば
HDD
SSD
Catalinaのfs
参考