내가 읽고있다이것그리고 내 이니셜(잘못된) 이것이 네임스페이스 및 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/ls
Alpine Linux를 실행하는 Docker 컨테이너 내부의 프로세스는 파일 외부에 있지 않습니다.