728x90
반응형
NameSpace란?
- 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술 (각 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 가상화 기술)
- VM에서는 각 게스트 머신별 독립적인 공간을 제공하고 서로가 충돌하지 않도록 하는 기능을 갖고 있다. 리눅스에서 동일한 역활을 하는 것이 Namespace이며 커널에 내장되어 있음
- Hypervisor는 Hardware Resource를 가상화 하고 위에 올라가는 Guest OS에는 가상화 된 형태의 H/W를 제공하게 되므로 각 Guest OS는 완전히 다른 환경으로 분리된다.하지만 Namespace의 경우 Hardware Resource 레벨의 가상화가 아니고 동일한 OS와 동일한 Kernel에서 작동하게 된다. 단지 격리된 환경만 제공하는 것(Namespace는 H/W 자원을 가상화하는 것이 아니라 Linux 내의 자원을 가상화 하는 것)
- unshare : NameSpace를 분리하는 명령어로 확인 가능
종류
- MNT (파일시스템 마운트)- 파일 시스템 마운트 포인트를 격리- 호스트 파일시스템에 구해받지 않고 독립적으로 파일시스템을 마운트하거나 언마운트 가능-m : Mount NameSpace를 의미# unshare -m /bin/bash- readlink : 심볼릭 링크의 원본을 찾는 명령어/proc/ : 시스템의 여러 실시간 정보들을 디렉토리와 파일 형태로 저장. linux 에서 가상 파일시스템에 위치하는 가상 디렉토리이며 실제 존재하지 않고 메모리에 저장# readlink /proc/OOO(pid)/ns/mnt -> 현재 프로세스의 Mount 정보를 확인
- UTS- 독립적인 Hostname 할당- 각각의 리눅스 컨테이너가 자신의 식별자 (hostname -f 로 확인)를 유지관리하기 위해 호스트이름과 도메인이름을 네임스페이스별로 격리- 호스트 이름에 종속적인 대부분의 어플리케이션에 중요한 기능이 -u 옵션을 통해 구현 가능# unshare -u /bin/bash
- IPC- 프로세스간 데이터 교환 및 프로세스와 쓰레드간의 작업을 동기화하는 기능을 제공- semaphore, file locking, mutex오 가타은 자원에 대한 접근제어를 제공하며 컨테이너에서 실제 프로세스를 분리하기 위해서도 필요
- PID- 프로세스 ID를 분할하여 관리하기 위해 필요- systemd 프로세스만 가질 수 있는 PID 1번을 독립적으로 추가할당하며 동일한 OS에서 systemd 프로세스 뿐만 아니라 여러 프로세스가 PID 충돌없이 실행 가능하게 한다.
- USR- 프로세스가 namespace 내부와 기본 namespace 간에 각기 다른 사용자 및 그룹 ID를 가질 수 있도록 지원- 독립적인 사용자 할당, UID와 GID 격리
- 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 |