2015-02-04 7 views
2

리눅스 커널에서 마운트 네임 스페이스와 관련된 다양한 정보를 찾았습니다. 어떻게하면 두포가 작동하는지에 대한 많은 정보를 찾을 수 없었습니다. 구조의 레이아웃과 그것들이 모두 어떻게 상호 연관되는지).Mount 네임 스페이스 : 파일 경로를 초기화/루트 마운트 네임 스페이스

내가하고 싶은 것은 프로세스 X의 마운트 네임 스페이스에서 주어진 경로를 가져 와서 init/root 프로세스 네임 스페이스에서 같은 파일 경로를 얻는 것이다.

예 :

커널에 경로 이름을 사용하여 특정 시스템 호출이 과정 X의 세계에서 이루어집니다
block device A has a file as blah/whatever/fileX 

In the init/root process mount namespace, this bdev A is mounted on folder /root making the path /root/blah/whatever/fileX 

In the process X mount namespace, this bdev A is mounted on folder /myfolder making the path /myfolder/blah/whatever/fileX 

, 내가 경로 이름/MyFolder에/저쩌구을/어떤/FILEX 및 변환하고 싶습니다 그것은 만드는 초기화/루트의 세계에있을 것 같은 경로 이름/루트/ㅋ/어떤/FILEX (또는이 초기화/루트의 지점 마운트를 통해 파일에 액세스 할 수없는 경우 NULL)

일부 관련 질문 : Linux - understanding the mount namespace & clone CLONE_NEWNS flag

답변

0

마운트 네임 스페이스를 정확하게 찾는 것이 아니라 마운트 시스템 호출 또는 cli에서 바인드 마운트라고하는 옵션을 정확하게 찾으십시오.

root/init의 경우 장치가 blah/whatever/fileX ...에 마운트됩니다. 동일한 blah/whatever/myfolder/blah를 바인드 할 수 있습니다 ... 따라서 동일한 파일 X와 같은 dir이 두 경로로 표시됩니다 ..

격리를 원한다면 다른 프로세스가이 마운트 포인트를 찾는 것을 원하지 않는다면 마운트 네임 스페이스를 사용할 수 있습니다. 가장 간단한 방법은 "unshare"를 사용하여 processX를 시작하는 것입니다.