리눅스는마운트 네임스페이스"공유 하위 트리" 기능을 통해 프로세스 전체 설치 트리에 사용됩니다.
상위/하위 설치 네임스페이스의 프로세스를 검사하면 /proc/$pid/mountinfo
각 프로세스에 대한 피어 그룹 관계를 확인할 수 있습니다.공유 하위 트리.txt. 예를 들어 외부 네임스페이스의 마운트에는 /child
태그가 있을 수 있습니다 shared:538
. unshare -M
하위 프로세스는 에서 생성한 하위 마운트 네임스페이스에서 master:538
동일한 마운트를 볼 수 있습니다.
하지만 때로는 이러한 ID가 일치하지 않는 경우도 있습니다. 상위 프로세스의 관점에서 보면 하위 프로세스 피어 그룹 ID가 존재하지 않는 것 같습니다. 예를 들어 내 containerd
각도 에서 컨테이너 마운트 항목 nsenter -t 1 --all
에 . 하지만 내 관점에서는 ./proc/1/mountinfo
shared:538
nsenter -t $in_container_pid --all cat /proc/self/mountinfo
master:532
exec
이는 컨테이너 환경을 설정한 후, 컨테이너 내부에 컨테이너 게스트 프로세스를 설정하는 중간 과정 때문인 것 같습니다 .
이러한 마운트 그룹 피어 ID를 나열하고 이를 프로세스 트리 및/또는 마운트 네임스페이스 inode에 매핑하는 방법이 있습니까? 아마도 이 피어 그룹 계층 구조는 커널 어딘가에 유지 관리되지만 lsns
sysfs 또는 sysfs와 같은 유틸리티에 의해 노출되는 것을 찾을 수 없습니다 .