728x90
반응형
NameSpace란?


  • 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술 (각 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 가상화 기술)
  • VM에서는 각 게스트 머신별 독립적인 공간을 제공하고 서로가 충돌하지 않도록 하는 기능을 갖고 있다. 리눅스에서 동일한 역활을 하는 것이 Namespace이며 커널에 내장되어 있음
  • Hypervisor는 Hardware Resource를 가상화 하고 위에 올라가는 Guest OS에는 가상화 된 형태의 H/W를 제공하게 되므로 각 Guest OS는 완전히 다른 환경으로 분리된다.
    하지만 Namespace의 경우 Hardware Resource 레벨의 가상화가 아니고 동일한 OS와 동일한 Kernel에서 작동하게 된다. 단지 격리된 환경만 제공하는 것
    (Namespace는 H/W 자원을 가상화하는 것이 아니라 Linux 내의 자원을 가상화 하는 것)
  • unshare : NameSpace를 분리하는 명령어로 확인 가능


종류

  1. MNT (파일시스템 마운트)
    - 파일 시스템 마운트 포인트를 격리
    - 호스트 파일시스템에 구해받지 않고 독립적으로 파일시스템을 마운트하거나 언마운트 가능
    -m : Mount NameSpace를 의미
    # unshare -m /bin/bash
    - readlink : 심볼릭 링크의 원본을 찾는 명령어
    /proc/  : 시스템의 여러 실시간 정보들을 디렉토리와 파일 형태로 저장. linux 에서 가상 파일시스템에 위치하는 가상 디렉토리이며 실제 존재하지 않고 메모리에 저장
    # readlink /proc/OOO(pid)/ns/mnt -> 현재 프로세스의 Mount 정보를 확인

  1. UTS
    - 독립적인 Hostname 할당
    - 각각의 리눅스 컨테이너가 자신의 식별자 (hostname -f 로 확인)를 유지관리하기 위해 호스트이름과 도메인이름을 네임스페이스별로 격리
    - 호스트 이름에 종속적인 대부분의 어플리케이션에 중요한 기능이 -u 옵션을 통해 구현 가능
    # unshare -u /bin/bash

  1. IPC 
    - 프로세스간 데이터 교환 및 프로세스와 쓰레드간의 작업을 동기화하는 기능을 제공
    - semaphore, file locking, mutex오 가타은 자원에 대한 접근제어를 제공하며 컨테이너에서 실제 프로세스를 분리하기 위해서도 필요

  1. PID
    - 프로세스 ID를 분할하여 관리하기 위해 필요
    - systemd 프로세스만 가질 수 있는 PID 1번을 독립적으로 추가할당하며 동일한 OS에서 systemd 프로세스 뿐만 아니라 여러 프로세스가 PID 충돌없이 실행 가능하게 한다.

  1. USR
    - 프로세스가 namespace 내부와 기본 namespace 간에 각기 다른 사용자 및 그룹 ID를 가질 수 있도록 지원
    - 독립적인 사용자 할당, UID와 GID 격리

  1. NET
    - NameSpace 간에 Network 충돌 방지 (중복 포트 바인딩 등)
    - 네트워크 장치, 주소, 경로 및 방화벽 규칙 같은 네트워크 자원을 격리
    - 네트워크 스택의 논리적 복사본을 효과적을 생성하여 여러 namespace가 동일 포트로 다수의 서비스 제공하는 것을 가능하게 한다. (iproute2 package등을 이용하여 구현 가능)


반응형

'Linux' 카테고리의 다른 글

Linux ReadLink  (0) 2020.10.25
Linux ulimit  (0) 2019.02.20
Linux Service 만들기 (CentOS7)  (0) 2018.11.14
lvm의 기본 개념  (0) 2018.10.12
Linux Software Raid 복구  (0) 2018.10.04

+ Recent posts