未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

ext2の解剖

「詳解LINUXカーネル」第二版 ISBN:4873111331 を紐解いた。ブロックグループのレイアウトに関しても理解した。スーパーブロック、グループディスクリプタ、データブロックビットマップ、inodeビットマップ、inodeテーブルそしてデータブロックのレイアウトに関して理解した。フロッピーディスクをダンプして実際のレイアウトでどのような配置になっているかを見た。ext2の静的な構造について理解を深めた。
消去したファイルを復活させるにはどうしなければいけないのか?そもそもext2においてファイルと言うのはどのような概念のものなのだろうか?ファイルを作り変更し削除するというのはどのような事なのか?それを精密に理解しない限り削除されたファイルを復活させることはできない。
inodeというのはファイルの属性を持つデータ構造である。データそのものはデータブロックに持つのだが、ファイルと言うものを構成するデータブロックについての情報をinodeが持つ。持って回ったいいかただ。あるファイルを考えてみる。そのファイルの属性として所有者、ファイルの長さ、アクセス時刻、ファイルの変更時刻、データブロック数、データブロックの値などなど様々な属性を持つ。あるファイルが10KBで、ブロックのサイズが1KBだとするとそのファイルは10ブロックからなるのだが、そのブロック番号を保持するのがinodeになる。
仮にinodeの情報が削除されたとしてもデータブロックが残っていればデータそのものはディスクのどっかに存在するわけで、そのディスクに点在するビット列(あるいはバイト列)をかき集めて組織化すればファイルを復元できるという理屈である。
inodeにはファイル名は保存されていない。あるファイルのinodeを知るにはどうしたらいいのだろうか?そもそもファイルにアクセスするというのはどのような事なのだろうか?それはどのようなプロセスを辿るのだろうか?
疑問は尽きないが一つずつ解消していく。