Чому всі каталоги / home, / usr, / var тощо мають однаковий номер inode (2)?


31

Я вважаю, що в моєму кореневому каталозі є кілька каталогів, які мають однаковий номер inode:

$ ls -aid */ .*/

2 home/ 2 tmp/ 2 usr/ 2 var/ 2 ./ 2 ../ 1 sys/ 1 proc/

Я знаю лише, що імена каталогів зберігаються в батьківському каталозі, а їхні дані зберігаються в індеях самих каталогів.

Я тут розгублений.

Це я вважаю, коли простежу ім'я шляху / дома / користувача1.

  • Спочатку я потрапляю до inode 2 - кореневого каталогу, який містить списки каталогів.
  • Тоді я знаходжу назву home в парі з inode 2.
  • Тому я повертаюся до диска, щоб знайти inode 2?
  • І я тут отримую ім’я user1?

Відповіді:


39

Вони на різних пристроях.

Якщо ми подивимось на вихід stat, ми також можемо побачити пристрій, у якому знаходиться файл:

# stat / | grep Inode
Device: 801h/2049d      Inode: 2           Links: 24
# stat /opt | grep Inode
Device: 803h/2051d      Inode: 2           Links: 5

Тож ці два знаходяться на окремих пристроях / файлових системах. Номери Inode унікальні лише у файловій системі, тому тут немає нічого незвичайного. У ext2 / 3/4 inode 2 також завжди є кореневою каталогом , тому ми знаємо, що вони є коренями їх відповідної файлової системи.

Комбінація номера пристрою + inode, ймовірно, буде унікальною для всієї системи. (Є файлові системи, які не мають inode в традиційному розумінні, але я думаю, що вони все одно мають підробити якийсь унікальний ідентифікатор на своєму місці.)

Здається, номери пристроїв такі ж, як і у вузлах пристрою, тому /dev/sda1утримується файлова система, де /ввімкнено:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1

Дякую, зараз я отримую статистику, корисну для мене, я навчусь її використовувати.
youxiao

1
Для запису всі файлові системи мають деякий еквівалент, навіть коли вони динамічно виділяють вузли. Наприклад, у BTRFS (який робить динамічний розподіл інодів, на відміну від статичних таблиць інодів ext2 / 3/4), конкретне значення inode, яке використовується таким чином, становить 256 (тому що все нижнє зарезервовано для спеціальних записів у деревах метаданих) .
Остін Хеммельгарн

1
@AustinHemmelgarn, деякі файлові системи, такі як FAT або ISO9660, не мають введення в будь-якому змістовному сенсі цього слова. Драйвер файлової системи виконує деяку слабку руку, щоб переглядати решту системи, яку вони роблять.
Марк

@Mark: Єдиний "змістовний сенс цього слова" відповідно до стандарту, який визначає це "серійний номер файлу [унікальний в пристрої]". Наполягаючи на думці про inode як конкретну структуру даних на диску, це настільки ж назад, як і мислення ttys як механічні телетипи.
Р ..

1
@ R .., я вважаю, що за цим визначенням файлова система FAT має inode, але "серійний номер файлу" для даного файлу у файловій системі FAT не є стабільним у кріпленнях, а то й у часі на одному кріпленні: якщо тиск пам'яті змушує синтезовану структуру inode вилучати з кешу, файл отримує нове число наступного разу, коли щось запитує його дані inode.
Марк

24

Номер inode будь-якого файлу є унікальним для файлової системи, але не обов'язково унікальний для всіх файлових систем, встановлених на даному хості. Коли у вас є декілька файлових систем, ви побачите повторювані номери введення між файловими системами, це нормально.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.