[unix] / home, / usr, / var 등의 디렉토리가 모두 동일한 inode 번호 (2)를 갖는 이유는 무엇입니까?

내 루트 디렉토리에는 동일한 inode 번호를 가진 일부 디렉토리가 있습니다.

$ ls -aid */ .*/

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

나는 디렉토리의 이름이 부모 디렉토리에 보관되고 디렉토리의 데이터는 디렉토리 자체의 inode에 보관된다는 것을 알고 있습니다.

혼란 스러워요.

이것이 경로 이름 / home / user1을 추적 할 때 생각하는 것입니다.

  • 먼저 디렉토리 목록을 포함하는 루트 디렉토리 인 inode 2로 들어갑니다.
  • 그런 다음 집 이름이 inode 2와 쌍을 이루고 있습니다.
  • 디스크로 돌아가서 inode 2를 찾으십니까?
  • 그리고 여기에 user1이라는 이름이 있습니까?


답변

그들은 다른 장치에 있습니다.

의 출력을 보면 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


답변

주어진 파일의 inode 번호는 파일 시스템에 고유하지만 주어진 호스트에 마운트 된 모든 파일 시스템에 반드시 고유하지는 않습니다. 파일 시스템이 여러 개인 경우 파일 시스템간에 중복 된 inode 번호가 표시되는데 이는 정상입니다.


답변