Linux에는 단일 상위 루트 파일 시스템이 있습니까?

Linux에는 단일 상위 루트 파일 시스템이 있습니까?

내가 읽고있다이것그리고 내 이니셜(잘못된) 이것이 네임스페이스 및 chroot 마운트와 관련이 있다고 생각합니다.

이것이 궁금합니다... 파일 시스템 1 에 액세스할 수 있는 프로세스가 없으면 Linux가 자동으로 이를 정리합니다(가능한 경우). 무엇보다도 이를 통해 나중에 initramfs 파일 시스템을 암시적으로 정리할 수 있습니다.피벗 루트그리고 chroot.

또한 PID 네임스페이스에는 상위 네임스페이스와 기타 하위 네임스페이스가 있으므로 모든 프로세스가 1커널에 의해 시작된 PID에 표시된다는 것도 배웠습니다.

그러나 기본 마운트 네임스페이스가 있는지 또는 기본 루트 파일 시스템이 있는지는 확실하지 않습니다. 물론 PID가 사용하는 루트 파일 시스템이 있지만 1그 외에는 어떤 파일 시스템이라도 의미가 있습니다.이것루트 파일 시스템?


내 우려는 SO, 문서 및 블로그에 대한 많은 답변에서 비롯된 것 같습니다. 모두 "프로세스에는 고유한 관점이 있습니다"와 같은 용어가 사용됩니다.이것파일 시스템".

내 문제는 단일 파일 트리가 어떤 의미에서 참조할 수 있는지 이해하지 못한다는 것입니다.이것파일 트리...

...네임스페이스는 복사되고, 개별적으로 수정되고, 암시적으로 삭제됩니다. 그리고 심지어이것initramfs(보통)가 먼저 다른 트리로 실행된 다음 chroot가 호출되기 때문에 우리 모두는 메인 루트 파일 시스템이 첫 번째 파일 시스템이 아니라고 생각했습니다.

따라서 이 용어는 기술적으로 올바르지 않거나 기본 파일 트리인 파일 트리가 있습니까?


1 틀렸다면 정정해주세요.

  • unshare -m mount /foo /bar마운트 명령줄 유틸리티가 종료되면 새 네임스페이스에 프로세스가 존재하지 않아 새 마운트가 자동으로 마운트 해제되기 때문에 아무런 효과가 없습니다.
  • PID 1이 유일한 프로세스이고 3개의 마운트 지점이 있는 경우 원래 마운트 지점을 / /foo /bar호출 하고 마운트 해제합니다. 다시 말하지만, 이들 중 어느 것에도 액세스할 수 있는 프로세스가 없습니다.chroot /foo//bar

답변1

Linux에서는 각 프로세스마다 고유한 속성이 있습니다.파일 시스템 보기, 제약 조건이 적용됨마운트 네임스페이스(및 관련 기능). 각 마운트 네임스페이스는사용자 네임스페이스. 사용자 네임스페이스는 루트 계층 구조를 형성하므로 단일 루트 사용자 네임스페이스가 있습니다. 이 사용자 네임스페이스와 연관된 마운트 네임스페이스 중 하나(또는 적어도 어느 시점)에는 다른 마운트 네임스페이스에 마운트된 모든 항목에 액세스(통과)하는 데 필요한 모든 것이 포함되어 있습니다. 이는 호스트 시스템의 루트라고 할 수 있습니다. 네임스페이스를 마운트하고 해당 네임스페이스의 루트는 호스트 시스템의 루트 파일 시스템으로 생각할 수 있습니다.

답변2

Linux와 같은 Unixy 시스템에서 각 프로세스는 파일 시스템(생각하는 것)에서 시작하는 트리인 파일 시스템에 대한 보기를 갖습니다 /. 프로세스가 다른 파일 집합을 다른 파일 집합 chroot(1)(특히 기본 시스템 호출)으로 처리할 수 있는 방법은 여러 가지가 있으며 전체 컨테이너 메커니즘은 이를 기반으로 확장됩니다.

컨테이너를 사용할 때(예: Docker 살펴보기) 이러한 컨테이너 내부에서 실행되는 프로세스는 다른 프로세스가 완전히 액세스할 수 없는 파일 시스템을 볼 수 있습니다(명시적으로 공유/액세스하지 않는 한). 즉, /bin/lsAlpine Linux를 실행하는 Docker 컨테이너 내부의 프로세스는 파일 외부에 있지 않습니다.

관련 정보