UNIXファイルシステムについてメモ(ディスク-ファイル マッピング)

UNIXにおける、ディスク(物理)-ファイル(論理) マッピングをメモ。

UNIXにおいては、あらゆるものがファイルである。(入出力デバイスさえもファイルとして扱う!)
ということで、UNIXの挙動を理解する上で、ァイルについて正しく理解しておくことは非常に重要である。

iノード(inode)

ディスク上のデータ構造体で、ユニーク(1つのファイルシステム内で)なiノード番号で識別される。
ファイルシステム生成時に一定数(標準的には8KB毎に1つ)作成され、これがファイルの最大数になる。
iノードの構成要素は以下の通り。つまり、「ファイル名」「パス」を除いたファイルメタ情報の全てである。(※ファイル名とパスの情報は、ファイルの一種である「ディレクトリ」がもっている)

  • ファイル基本情報系
  • 詳細情報系
    • ハードリンク数 ※iノードのディスクブロックが解放されるのは、ハードリンク数が0になったタイミング
    • データブロック(ファイルの構成要素)のディスクロケーション
    • 上記ディスクロケーションを格納しているディスクブロックのディスクロケーション
    • 上記ディスクブロックを格納しているディスクブロックのディスクロケーション
  • 履歴情報系
    • メタ情報の変更内容(iノード自体の最新の変更内容)
    • データアクセス情報
    • データ修正回数

ファイル

ファイルには、役割に応じて以下の種類が存在する。(括弧内は ls -l 時の表示文字)

  • レギュラーファイル(-):実はただのハードリンク?
  • ディレクトリ(d):直下のファイルリスト(ファイル名-iノード番号のペア)から成るバイナリファイル
  • スペシャルファイル:デバイス入出力のメカニズム。 /dev 以下に格納される
    • キャラクスペシャルファイル(c):ローデバイスへのアクセス(バッファなしアクセス)。通常、ファイル名の頭文字に「r」(rowの意)が付与されている
    • ブロックスペシャルファイル(b):ブロック入出力デバイスへのアクセス(ブロック単位アクセス)
  • リンク
  • UNIXドメインソケット(s):プロセス間通信用。特定プロセスに接続するためのエンドポイント
  • 名前付きパイプ(p):その名前で指定できるパイプ。 /dev に格納されることが多い。FIFOである
補足

ファイルの中身をダンプで見るなどすれば理解が深まる。
ということで、 od コマンド紹介URLをメモ。

参考文献

UNIXシステム管理 第3版〈VOLUME 1〉

UNIXシステム管理 第3版〈VOLUME 1〉