Index ソフト・ハード Linuxタスク | ファイルシステム |
ファイルのデータ型 データ構造 階層構造 ファイルへのアクセス キャッシュ機構 仮想ファイルシステム ext3 動作 |
ファイルのデータ型 ・カーネルはファイルのデータ型を意識しない。 そのファイルを利用するAPがそれを意識する。・データはバイトストリーム型 データ構造 ・それぞれのファイルへ、iノードというデータ構造を割り当てて管理 ファイル種別毎に操作管理テーブルを持つ。・各iノードは、ビットマップ情報として、ディスクへ具体的に結び付け ディスクのインデックス、ディスクのジオメトリを一意に識別 各iノードは、そのファイルの属性や、2次記憶装置上のブロック番号等を管理 iノードはファイルに対して一意(unique) iノードの上限、/proc/sys/fs/inode-max 小さいfileを多く、iノードが上限に達すると、新しいfileは作れない。・2.6は、iノード毎にページキャッシュを持つ。 ファイルに対して、ディスク等に書き出すページが特定し易くなる。 ページからディスク等へのに書き出しを、iノード単位に変更 ディスクなどの連続性向上・スーパブロック管理用構造体 1つのfsへ1つ存在 マウントされたローカルファイルシステムに関する情報を保持 通常、iノードは書込み等で、状態が変化すると、その都度フラグを更新する。 メモリ上のスーパブロックに対して行い、ディスクへはアクセスしない。 信頼性、ディスクとメモリの不整合の可能性がでる。 Linux、定期的にディスクへ書込み 状況によっては、fsckで回復できない致命的障害プロセスとiノード間の階層構造 ・プロセス群 「file object」へopen()、read()、write() カーネル内のシステムコール(VFSでsysread()等)呼出し カーネルは要求に従って、「file object」を生成し それをfd(ファイルディスクリプタ、objectへのポインタ)へ関連付け、プロセスへ返す。 fdを通して、間接的にiノードを操作・file object 群 カーネル操作によって、「dentry object」へ関連付けられる。・dentry object 群 ディレクトリエントリ(ディレクトリパス)情報を管理 カーネル操作によって、「inode」へ関連付けられる。 dentry_lockup()等の関数は、ハッシュリストを検索してUSED等のエントリを見つける。・inode 群 ・ストレージデバイス ファイルへのアクセス ・ファイルオープンでファイル記述子が返却 パス名指定、open()システムコール ファイル記述子返却(0,1,2は予め割当) 0:標準入力 1:標準出力 2:標準エラー出力 子プロセスは親プロセスが割当てた0,1,2を使用キャッシュ機構(ファイルアクセスを高速化) ・各種データをメモリ上にキャッシュ ページキャッシュ iノードキャッシュ dentryキャッシュ・キャッシュバッファ等のファイル処理に関する一連の操作はVFSが行う。 ・空きメモリのほとんどをキャッシュ域として使用 仮想ファイルシステム(VFS) ・ファイルシステムの形式によらず、同じIFで操作可能 (どのAPからでも同様な手順でファイル操作が行えるような単一のIF) ・バックグラウンドで、アクセス権の確認や書込み待ち判断等の汎用的作業を行う。 ・APからファイル操作のシステムコールを受付 ・それを関連するローカルファイルシステム毎のAPIへ変換 トランスレーション JFS、XFS、ext2、ext3、ReiserFS、iso9660・バッファキャッシュ等のファイル処理に関する一連の操作を行う。 iノードキャッシュのキューの管理 キューはハッシュを先頭とした、双方向リストで管理 USED(使用(参照)中)リスト リストの先頭へ挿入 UNSED(未使用、一次キャッシュ)リスト LRUリストで管理され、後ろから開放 DIRTY(LOCKED)リスト 書込み要求の蓄え カーネルは、書込まれたiノードのフラグを立てる。(ダーティビット) ビットの付いたデータは、DIRTYバッファとして、DIRTYリストへ繋がれる。 バッファキャッシュとして、I/O待ちのI/Oリクエストキューへ入れる。 フラッシュ(updateデーモンが定期的にディスクへ書込み) バスの転送速度へ合わせてディスクへ転送 書込み終了のリスト USEDへ戻される。 参照が終了したらUNSEDへ入る。 USEDへ戻される 適当な時期に解放・ドライバやI/Oサブシステムに対しても統一的なIFを提供 ・VFSオブジェクト file_system_type ローカルファイルシステムを定義する構造体 VFSは、この中の固有の命令をVFSの統一的命令へ置換え open()→ext3_open_file()、トランスレータ機能 inode super_block file のオープン状態を管理 dentry・ローカルファイルシステム ホストへ直結された2次記憶装置を使用 システム起動時にVFSへ登録・ネットワークファイルシステム NFS、・・・・擬似ファイルシステム proc sysfs (2.6~)ext3 (ジャーナリング(ログ)ファイルシステム) ・クラッシュの起動時チェック(fdisk)の時間短縮 ・orderdモード(デフォルト)使用:メタデータのみジャーナリング ・メタデータ(ファイルシステム管理情報)の保持と更新 スーパーブロック グループブロックディスクリプタ iノード 間接ブロック データビットマップ用ブロック iノードビットマップ用ブロックext3 動作 ・ディスクブロックの更新(書込み)をジャーナル領域にいったん書込む。 ・あとで、ジャーナルの内容をディスクブロックに書込む。 APの1つの書込み操作が完了してから・最後にジャーナル内容を破棄する。 ・モード journalモード orderdモード(デフォルト)使用:メタデータのみジャーナリング writebackモード・書込み動作 (オールorナッシング) iノード参照、ファイルの最終ブロックを調べる。 データビットマップを参照、近くの空きブロックを見つけて使用中マーク データブロックに書込み iノードの情報更新 スーパーブロック、グループブロックデスクリプタにある、 空きブロック数、ダーティ情報など更新 |
All Rights Reserved. Copyright (C) ITCL |