web-dev-qa-db-ja.com

特別なデバイスファイルにiノードがあるのはなぜですか?

デバイスファイル自体はファイルではありません。これらは、Unixライクなオペレーティングシステムでデバイスを使用するためのI/Oインターフェイスです。これらはディスク上のスペースを使用しませんが、statコマンドによって報告されるように、iノードを使用します。

$ stat /dev/sda
      File: /dev/sda
      Size: 0               Blocks: 0          IO Block: 4096   block special file
Device: 6h/6d   Inode: 14628       Links: 1     Device type: 8,0

デバイスファイルはファイルシステムで物理 iノードを使用しますか、また、なぜそれらが必要なのですか?

11
direprobs

デバイスファイルにも権限があり、それらはiノードに保存されます。

15
Hauke Laging

ディレクトリは単にファイル名からiノードへのマッピングなので、名前が参照するもの(ファイル、シンボリックリンク、デバイス、FIFO、ソケット)に関するすべてがiノードにある必要があり、他に置く場所はありません。

デバイスに関する情報はiノードに保存されます。メジャーデバイス番号とマイナーデバイス番号、アクセス許可、タイムスタンプなどがあります。通常のファイルではなくブロックまたはキャラクターデバイスであることを示すtypeフィールドがそこに格納されます。

デバイスのiノードは、ファイルのブロックマップを含むフィールドを使用しません。

12
Barmar

Iノードがない場合、問題のデバイスに関するすべての情報を保持するためのファイル名しかありません。これは、/dev/sdaのような「素敵な」デバイス名は問題外であることを意味します。/dev/ohci/sdaなどの特定のドライバに関連付けることができる名前が必要です。

さらに重要なことに、iノードに依存するすべてのツール(statlsなど)は、/devの下のパスを特別な方法で処理するように変更する必要があります。それは、現在の状況と比較して明らかな利点がない、非常に大量の作業になるでしょう。

0