ファイルシステム

(2016/09/12)
  • ここではLinuxのファイルシステムを調べる

  • ファイルとディレクトリがあって、階層構造できるぜ!が超基本
  • そもそもファイルとは

  • ファイルとはデータの単位
  • iノードというもので管理されている
  • これにはファイルの属性、所有者、サイズ、各種日時等の情報が入ってる
  • iノードにファイルの名前の情報は含まれない
  • そもそもディレクトリとは

  • ディレクトリもファイルの一種
  • ディレクトリの実態はディレクトリエントリ
  • これにはiノードとファイル名が格納されている
  • このiノードは32bit長の値で、ファイルシステム内で一意である
  • この番号をiノード番号といい、-iオプションで見られる
  • statコマンドでも見られる
  • ハードリンク

  • すでにあるファイルを別のファイル名で参照できるようにするもの
  • lnコマンドで作成できる
  • $ ln foo.txt bar.txt
  • システム的に言い換えると既存のiノード情報を参照するディレクトリエントリを1つ追加すると言える
  • iノードにファイル名が含まれない理由がここにある
  • 別のファイルシステムにハードリンクは作れない
  • iノード番号はファイルシステム内でのみ一意
  • いくつのディレクトリエントリから参照されているかの数をリンク数という
  • ls -liで参照できる
  • rmコマンドの厳密な役割はディレクトリエントリを削除し、iノードのリンク数を減らすことにある
  • ハードリンクはiノード番号を参照してるのでファイルを移動しても参照は消えない
  • シンボリックリンク

  • ハードリンクと違い、iノード番号でなくパスで指定する
  • 別のファイルシステムのファイルも参照できる
  • lnコマンドに-sオプションをつけ実行できる
  • $ ln -s foo.txt bar.txt
  • Kernel

general(396)