デバイスファイルはファイル自体ではありません。 Unixシリーズオペレーティングシステムで使用されるデバイスのI / Oインターフェイス。ディスク容量は使用しませんが、次のコマンドで報告されたinodeを使用し続けますstat
。
$ 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
デバイスファイルを使用するかどうか物理ファイルシステムのinodeとなぜ必要ですか?
ベストアンサー1
簡単に言えば、バックアップする物理ファイルシステムがある場合にのみ機能します/dev
(最新のLinuxディストリビューションを使用している場合は機能しない可能性があります)。
長い答えは次のとおりです。
これらすべては、もともとUNIXの哲学にさかのぼります。すべてがファイルです。このアイデアは、UNIXが汎用性のある理由の1つです。これは、アプリケーションが特別なコードを使用して物理ハードウェアと直接通信することなく、ユーザー空間で直接デバイスと対話できるためです。
もともとは、/dev
デバイスファイルが置かれたよく知られた名前を持つ別のディレクトリでした。一部のUNIXシステムはまだこれを行います(OpenBSDはまだ実行していると思います)、システムが実際に持っていない多くのデバイス用のデバイスファイルを持っているため、システムがこの方法であることが一般的にわかります。システム上のファイル)ディスクのすべての可能なパーティションから)。これにより、メモリ領域と起動時間が節約されますが、より多くのディスク領域を使用するコストが高くなります。これは通常、メモリが非常に限られており、速度がそれほど速くないため、初期システムにとって良いトレードオフです。これをしばしば静的と呼びます/dev
。
最新のLinuxシステム(FreeBSDとおそらく最新バージョンのSolarisもあると思います)には、/dev
カーネル(またはSystemdを使用している場合はudev)によって埋められる一時メモリファイルシステムがあります。なぜなら、ほとんどすべての作業を行うカーネルを信頼しないからです。 )。これにより、一部のディスク容量が節約されますが、一部のメモリ(通常は数MB未満)が消費され、処理のオーバーヘッドがほとんど発生しません。他にも多くの利点があります。最大の利点の1つは、ホットプラグ可能なハードウェアをより簡単に検出できることです。これはしばしば動的と呼ばれます/dev
。
ただし、どちらの場合も、デバイスノードは通常のVFSレイヤを介してアクセスされます。これは、定義に従って実際のように機能するには、inode(現在存在する仮想inodeであっても)があることを意味しますstat()
。これは/dev
単にinodeをメモリに保存するか、必要に応じて作成するため、Dynamicを使用するシステムには影響しませんが、/dev
staticはinodeがほぼゼロのディスク容量を占めるため、ほとんど影響を与えず、ほとんどのファイルシステムは制限しないか、それ以上提供しません。誰にも必要なものより。