특정 디렉터리에 액세스할 때 Rancher 컨테이너의 셸에서 권한 오류가 발생하지만 권한이 올바르게 설정되어 있습니다. 그런 다음 해당 디렉터리의 링크 수가 다음과 같이 0이라는 것을 확인했습니다.
그러나 모든 디렉토리의 경우 최소 링크 수는 self .
및 parent 2개입니다 ..
. 그렇다면 여기에 0이 표시되는 이유는 무엇입니까? 난 이해가 안 돼요. 이제 나는 이 쉘이 어떤 inode를 가리키는지 확인하기 위해 이 쉘에 접근할 수 없지만(ls -i) 비어 있을 것이라고 추측합니다(정말 모르겠습니다, TBH).
문제가 해결되면 제거하고 다시 확인해 보겠습니다 mkdir
. 하지만 왜 이런 일이 발생하는지 정말 알고 싶습니다.
감사해요! !
추신: Rancher 컨테이너로서 어떤 영향을 미칠지 모르겠습니다.
답변1
POSIX에서는 최소 2개의 링크 수가 필요하며 일반적으로 2 + 하위 디렉터리 수(디렉토리가 rmdir'd가 아닌 경우)가 필요합니다. 디렉토리가 삭제되면 링크 수는 일반적으로 0입니다.
그러나 모든 파일 시스템이 POSIX인 것은 아닙니다. 일반 파일 시스템은 UNIX에서 루트 파일 시스템으로 사용될 수 있지만 btrfs는 루트 파일 시스템으로는 잘 작동하지만 POSIX는 아니기 때문에 유일한 예외입니다.
GNU/Linux(및 기타 모든 POSIX 시스템은 아니지만 대부분)에서 파일 시스템이 POSIX 의미 체계를 따르지 않는 경우 일반적으로 링크 수 1을 사용하며 이는 일반 작업 중에는 발생하지 않습니다(값 0, 2 및 가능하지만 1)은 아닙니다. GNU find와 같은 유틸리티는 링크 수가 1인 특수 디렉토리를 POSIX가 아닌 것으로 처리하여 이에 적응하며 잠재적으로 성능이 저하될 수 있습니다.
귀하의 경우 링크 수가 1이면 이것이 POISIX가 아닌 파일 시스템임을 나타내는 반면, 링크 수가 0이면 합리적인 값이 아니기 때문에 파일 시스템 구현의 버그와 비슷합니다.