2011-02-23 3 views
1

clone() 또는 unshare()을 사용하여 네트워크 네임 스페이스를 만들 수 있습니다. 그냥 명령과 :생성 된 네임 스페이스를 어떻게 확인할 수 있습니까?

ns_exec -nm -- /bin/bash 

(http://lxc.sourceforge.net/index.php/about/kernel-namespaces/network/configuration/ 참조)

내가 ns_exec 명령으로 여러 네트워크 네임 스페이스를 만든 경우, 내가 그들을 볼 수 있습니까? 또는 네트워크 네임 스페이스의 수를 어떻게 계산합니까?

답변

0

간접적으로 관찰합니다. i 디바이스는 독립적이며 iptables 룰은 독립적이라고 말하십시오.

netns 객체는 자신의 kmem_cache에 살고 : 그렙 net_namespace은/proc/slabinfo

그러나이 SLUB은 캐시를 공유 할 수있는, 그들을 계산하는 신뢰할 수없는 방법입니다.

/proc 파일이나 특별히 netns 카운터 전용 파일이 없습니다.

+0

/proc/slabinfo의 net_namespace 레코드가 신뢰할 수없는 이유는 무엇입니까? ns_exec를 사용하여 새 네트워크 네임 스페이스를 만들고 slabinfo는 다음을 보여줍니다. grep net_namespace/proc/slabinfo net_namespace 1 3 2112 3 2 : tunables 24 12 8 : slabdata 1 1 0 active_objs는 1이고 num_objs는 3입니다. active_objs 값은 예상 한 값입니다. . 하지만 num_objs가 3 인 이유는 두 가지입니다. 새로운 네트워크 네임 스페이스 만 만들었습니다. – DaVid

+0

sizeof()가 일부 추가 조건과 일치하면 SLUB은 캐시를 병합 할 수 있습니다. 따라서 slabinfo가 보여주는 객체의 수는 병합 된 캐시의 모든 객체의 합입니다. SLAB는 병합되지 않으며 사용자는 모든 슬래브 할당자를 가질 수 있으므로 사용자는 이에 의존 할 수 없습니다. – adobriyan

관련 문제