Mount_nullfs에 대한 FreeBSD 매뉴얼 페이지의 "getcwd 함수는 정상적으로 작동합니다"라는 문구는 무엇을 의미합니까?

Mount_nullfs에 대한 FreeBSD 매뉴얼 페이지의 "getcwd 함수는 정상적으로 작동합니다"라는 문구는 무엇을 의미합니까?

FreeBSD에서는man mount_nullfs지적했다:

파일 시스템의 가상 복사본과 심볼릭 링크의 주요 차이점은 다음과 같습니다.이것getcwd(3)기능은 잘 작동해요원본 파일 시스템에 영향을 주지 않고 가상 복사본에 다른 파일 시스템을 마운트할 수 있습니다. 가상 복사본에 대한 다른 장치 번호는 다음 명령으로 반환됩니다.stat(2)그러나 다른 점에서는 원본과 구별할 수 없습니다.

이 구절의 전체 의미/의미는 무엇입니까?

답변1

파일 시스템의 가상 복사본과 심볼릭 링크의 주요 차이점은 다음과 같습니다.기능은 getcwd(3)잘 작동해요가상 사본에서는

getcwd기호로 연결된 디렉토리의 동작은 상당히 잘 알려진 함정입니다.고급 유닉스 프로그래밍예를 들어 (참조이 문제참고): 심볼릭 링크의 경우 대칭이 아닙니다 chdir. getcwd다음을 사용하여 디렉토리를 변경할 것으로 예상할 수 있습니다.chdir, 주어진 디렉토리로 이동한 다음 다음을 사용하여 현재 디렉토리를 검색합니다.getcwd, 동일한 값을 반환하지만 프로세스가 기호 링크가 포함된 경로로 디렉터리를 변경하는 경우는 그렇지 않습니다. getcwd모든 기호 링크를 역참조한 후 얻은 경로가 반환됩니다. 디렉터리를 상위 디렉터리로 변경할 때 심볼릭 링크가 포함된 경로와 참조 취소된 경로의 구성 요소 수가 다를 경우 의도하지 않은 결과가 발생할 수 있습니다.

그리고 원본 파일 시스템에 영향을 주지 않고 다른 파일 시스템을 가상 복사본에 마운트할 수 있습니다.

스티븐의 이야기를 계속하세요/tmp/b, 영향을 주지 않고 하위 디렉토리에 다른 파일 시스템을 마운트할 수 있으며 /some/dir, 하위 디렉토리에 파일 시스템을 마운트하면 /tmp/a해당 파일 시스템도 /some/dir.

가상 복사본에 대해 다른 장치 번호를 반환 stat(2)하지만 그 외에는 원본 장치와 구별할 수 없습니다.

즉, stat복사본이나 그 아래의 모든 파일을 실행하면 원본과 다른 장치 번호가 반환되지만 이것이 유일한 차이점입니다. 그렇지 않으면 동일한 정보가 반환됩니다 stat("/tmp/b/c", &buf).stat("/some/dir/c", &buf)

답변2

내 생각에 그들이 의미하는 바는 /tmp/a심볼릭 링크 /some/dir이고 /tmp/bnullfs 마운트라는 것입니다 /some/dir.

  • 그 후에는 chdir("/tmp/a")돌아 getcwd()오십시오 /some/dir.
  • 그 후에는 chdir("/tmp/b")돌아 getcwd()오십시오 /tmp/b.

전자는 그다지 중요하지 않다잘못된. 단지 기호 링크와 nullfs 마운트에는 두 가지 다른 의미가 있다는 것입니다.

chdir()심볼릭 링크 는 파일이 다른 파일로 나타나는 경우 (디렉토리 하드 링크 대신) 대부분의 시스템이 호출하는

Symlink 처리는 일부 사람들의 기대를 깨뜨릴 수 있지만( getcwd()여기에 있는 것과 같은) nullfs 마운트(또는 Linux의 binfs 퓨즈 파일 시스템 또는 일부 통합 파일 시스템)는 다른 사람들의 기대를 깨뜨릴 수 있습니다. 즉, [ /tmp/b/x -ef /some/dir/x ]동일한 파일이더라도 false를 반환하는 경우입니다. 아래에 있거나 프로세스가 경로를 통해 열 fuser /tmp/b/x더라도 아무것도 반환되지 않습니다./some/dir/x

Linux 바인드 마운트(파일을 다르게 만들지 않음)는 다른 사람의 기대를 깨뜨릴 수 있습니다. 예를 들어 find -xdev/ du -x트래버스 마운트 지점, 링크 수가 1인 동일한 파일에 대한 두 개의 링크(파일 시스템에서 루프를 생성할 수도 있음) FreeBSD의 nullfs는 이러한 일이 발생하는 것을 방지합니다.

하드 링크(파일을 다른 경로에 표시하는 가장 오래된 기술)도 일부 사용자의 기대를 깨뜨릴 수 있습니다(예를 들어 디렉터리에서 파일 링크를 해제하면 해당 파일을 더 이상 사용할 수 없을 것이라고 예상함).

그래서 나는 하나가 더 많다고 말하지 않을 것입니다옳은여기 다른 것보다.

관련 정보