btrfs 파일 시스템이 있고 최상위 수준의 모든 폴더는 inode 256입니다.
이것은 나에게 좋지 않습니다. 장치 ID가 동일하므로 이것이 "가상 inode 번호"이고 Btrfs에는 이를 수행하기 위한 자체 메커니즘이 있다고 가정합니다.
디렉토리별로 고유한 물리적 inode를 얻는 것이 가능합니까?
무슨 일이 일어나는지 확인하세요:
root@ReadyNAS-DEV:/home# find / -xdev -inum 256
/
/home
/data
/apps
root@ReadyNAS-DEV:/home#
이것은 좋지 않습니다.
답변1
세 개의 디렉토리 /home
, /data
및 /apps
가 마운트 지점이라고 가정합니다.
에 무언가를 마운트할 때 /home
보고된 inode는 원래 디렉토리의 inode /home
가 아니라 마운트된 파티션 루트의 inode입니다 . /home
따라서 이러한 inode가 다른 파티션의 루트에 있는 inode와 동일하다는 것은 놀라운 일이 아닙니다.
내 OpenBSD 컴퓨터에서(btrfs를 사용하지 않음):
$ find / -xdev -inum 2
/
/home
/usr
/var
/tmp
Ubuntu 가상 머신에서도 동일한 현상이 나타납니다. 이것은 실수가 아닙니다.
다르게 말하면, 서로 다른 디렉토리에 대한 시스템 호출 stat
에 의해 반환된 구조는 stat()
동일한 값을 가지지 st_ino
만 값은 다릅니다 st_dev
. 설명을 참조하십시오stat()
그리고sys/stat.h
POSIX에서.
-xdev
이 옵션을 잘못 이해했을 수도 있습니다 find
. 그걸로, 없을거야감소다른 파일 시스템의 디렉토리로 이동하지만 다른 기준과 일치하면 디렉토리 이름을 계속 인쇄합니다.