Linuxはマップされたフォルダ->file_name->inodeをどのように保存しますか?

Linuxはマップされたフォルダ->file_name->inodeをどのように保存しますか?

私はLinuxファイルシステムについて少し読み始めました。私はこの引用をいくつかの場所で見つけました。

Unixディレクトリは一連の連想構造で、各構造にはファイル名とinode番号が含まれています。

だから私は各ディレクトリにその下にあるファイル名が含まれていて、各ファイルがinodeにマップされていることを知りたいと思います。ただしvim directory_name、Ubuntuでこれを行うと、次の結果が表示されます。

" ============================================================================
" Netrw Directory Listing                                        (netrw v156)
"   /Users/user/workspace/folder
"   Sorted by      name
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:special
" ==============================================================================
../
./
folder1/
folder2/
file1
file2

各ファイル名の横にinode番号があると予想していますが、そうでないのはなぜですか?

ベストアンサー1

この文はUnixファイルシステムがどのように機能するかについてです(論理的に言えば、現在の実際の構造はしばしば非常に異なります)。次の-iフラグを使用してinode番号を表示できますls

$ ls -li
total 8
532028 -rw-r--r-- 1 anthony anthony 115 Apr 25 12:07 a
532540 -rw-r--r-- 1 anthony anthony  70 Apr 25 12:07 b

左側の数字はインデックスノードです。実行するとln b c(ハードリンク生成)、次のようになります。

$ ls -li
total 12
532028 -rw-r--r-- 1 anthony anthony 115 Apr 25 12:07 a
532540 -rw-r--r-- 2 anthony anthony  70 Apr 25 12:07 b
532540 -rw-r--r-- 2 anthony anthony  70 Apr 25 12:07 c

権限とサイズはディレクトリではなく inode の一部です。通過後に何が起こるかを簡単に確認できますchmod 0600 c

$ ls -li
total 12
532028 -rw-r--r-- 1 anthony anthony 115 Apr 25 12:07 a
532540 -rw------- 2 anthony anthony  70 Apr 25 12:07 b
532540 -rw------- 2 anthony anthony  70 Apr 25 12:07 c

両方とも同じinodeを共有するので変更されbました。c

/dev/sda1ただし、カーネルは明確に定義されたAPIを介してのみファイルシステムをユーザースペース(RAWデバイス以外)に公開します。リンクの作成と削除、権限の変更、ファイルの読み取りと書き込み、名前の変更などの操作を実行するために、複数のシステムコールへのユーザー空間アクセスを許可します。元の基本ファイルシステムデータ構造をユーザー空間に公開しません。これにはいくつかの理由があります。つまり、ネットワーク化されたファイルシステムを許可します。これは、カーネルが権限を適用し、ファイルシステムのデータ構造を正しく維持できることを意味します。これは、ユーザースペースを変更することなく他のファイルシステム(他のデータ構造を含む)を使用できることを意味します。

したがって、デフォルトではvim dirディレクトリのリストが表示されます。おおよそ次のようになりますls。 Netrwと呼ばれるvimモジュールを介して実行されます。このモジュールは上記のものと正確に一致します(:help netrwvimで試してください)。デフォルトのファイルシステムデータ構造は実際には編集できません。

おすすめ記事