운영체제/LINUX

[Linux] UTS 네임스페이스

benjykim 2019. 12. 13. 12:34
반응형

UTS 네임스페이스


다른 UTS 네임스페이스가 서로 다른 호스트 이름이나 도메인 이름(또는 `uname()`시스템 콜로
리턴된 정보(nodename, domainname))를 갖게 하는 기능을 제공

  • `clone()` 또는 `unshare()` 시스템 콜을 사용할 때 `CLONE_NEWUTS` 플래그를 설정하여 생성
    • nodename, domainname은 `sethostname()`, `setdomainname()`시스템 콜을 사용하여 설정
    • 컨테이너 관점에서의 UTS 네임스페이스 기능은 각 컨테이너가 자체 호스트 이름과 `NIS` 도메인 이름을 가질 수 있도록 한다.  
      • `NIS(= Network Information System)`:  컴퓨터 네트워크 위의 컴퓨터들 사이에 있는 사용자와 호스트 이름과 같은 시스템 구성 데이터를 여러 곳에 제공한다. 
        • `NIS`는 다양한 네트워크 정보에 대한 중앙집중식의 제어를 제공함으로써 네트워크 관리를 쉽게 할 수 있도록 한다. `NIS`는 호스트 이름, 주소, 유저, 그룹 그리고 네트워크 서비스들에 대한 정보를 가지고 있다. 
        • 여러 클라이언트들의 `/etc/passwd`, `/etc/shadow`, `/etc/group` 정보 통합관리 가능

  • 단일 시스템으로 하여금 서로 다른 프로세스가 서로 다른 호스트 및 도메인 이름을 가지는 것처럼 보이게 한다.

  • 호스트 이름에 종속적인 대부분의 어플리케이션에서 중요한 기능

    • UTS 네임스페이스는 시스템의 `hostname`을 네임스페이스별로 격리시켜 준다. 더 자세히 설명하자면, 리눅스 시스템 콜 중 하나인 `uname()`에서 `new_utsname`이라는 구조체에 정의된 식별자 중 `nodename`, `domainname`을 격리(isolate) 시키는 것이다.

    • 아래는 `/usr/include/linux/utsname.h`에 선언된 `new_utsname_struct`의 내용이다.
#define __NEW_UTS_LEN 64

struct new_utsname {
	char sysname[__NEW_UTS_LEN + 1];
	char nodename[__NEW_UTS_LEN + 1];
	char release[__NEW_UTS_LEN + 1];
	char version[__NEW_UTS_LEN + 1];
	char machine[__NEW_UTS_LEN + 1];
	char domainname[__NEW_UTS_LEN + 1];
};

 

 

반응형