MNT 네임스페이스

2024. 11. 20. 11:04Docker

MNT 네임스페이스란?

Linux에서 MNT 네임스페이스(Mount Namespace)는 파일 시스템의 마운트 포인트를 격리할 수 있는 기능입니다. 프로세스마다 독립적인 마운트 정보를 가지도록 하여, 한 네임스페이스에서의 파일 시스템 변경이 다른 네임스페이스에 영향을 주지 않게 만듭니다. 이는 Linux 네임스페이스 중 하나로, 프로세스 격리와 컨테이너 기술의 중요한 구성 요소입니다.


MNT 네임스페이스의 주요 개념

  1. 마운트 포인트:

    • 마운트 포인트는 파일 시스템 계층에 디바이스나 디렉토리를 연결하는 지점을 말합니다.
    • MNT 네임스페이스는 이 마운트 포인트를 네임스페이스별로 독립적으로 관리할 수 있도록 합니다.
  2. 독립성:

    • 각 네임스페이스는 파일 시스템 계층을 독립적으로 유지합니다.
    • 한 네임스페이스에서 수행된 마운트 또는 언마운트 작업은 다른 네임스페이스에 영향을 미치지 않습니다.
  3. 공유와 상속:

    • 새로운 네임스페이스는 생성 시 부모 네임스페이스의 마운트 상태를 복사합니다.
    • 그러나 복사된 이후의 변경 사항은 독립적으로 유지됩니다.
  4. 사용 사례:

    • 컨테이너: Docker나 Kubernetes에서 컨테이너는 자체 파일 시스템 계층을 가지며, 다른 컨테이너와 격리됩니다.
    • 테스트 환경: 프로덕션 환경에 영향을 주지 않고 마운트 작업을 테스트할 수 있습니다.
    • 보안: 마운트된 리소스에 대한 접근을 네임스페이스별로 제한할 수 있습니다.

MNT 네임스페이스의 동작 방식

1. 새로운 네임스페이스 생성

  • unshare 명령어를 사용해 새로운 MNT 네임스페이스를 생성합니다.
unshare --mount

2. 네임스페이스 내에서 마운트 변경

  • 새로운 네임스페이스에서 파일 시스템을 마운트하거나 언마운트하면, 변경 사항은 해당 네임스페이스에만 적용됩니다.
mount --bind /home/user /mnt

3. 네임스페이스의 독립성 확인

  • 다른 터미널에서 확인해 보면, 위에서 실행한 마운트 작업이 보이지 않습니다. 이는 네임스페이스 간 격리가 잘 작동하고 있음을 의미합니다.

4. 네임스페이스 종료

  • 네임스페이스 내에서 수행된 마운트 작업은 네임스페이스가 종료되면 사라집니다.

MNT 네임스페이스의 상속 및 공유

1. 부모-자식 관계

  • 새로운 MNT 네임스페이스를 생성하면, 부모 네임스페이스의 마운트 상태를 복사합니다.
  • 그러나 자식 네임스페이스에서 수행된 변경은 부모 네임스페이스에 영향을 미치지 않습니다.

2. 마운트 프로퍼게이션(Propagation)

  • 네임스페이스 간에 마운트 이벤트를 공유할 수 있는 프로퍼게이션 모드가 있습니다:

    • private: 마운트 변경 사항이 다른 네임스페이스에 전파되지 않음 (기본 설정).
    • shared: 마운트 변경 사항이 다른 네임스페이스에 전파됨.
    • slave: 부모 네임스페이스의 변경 사항만 자식 네임스페이스에 전파됨.
  • 프로퍼게이션 변경 예:

    mount --make-private /mnt

MNT 네임스페이스의 활용

1. 컨테이너 기술

  • Docker, Kubernetes와 같은 컨테이너 기술에서 각 컨테이너는 고유한 MNT 네임스페이스를 가집니다.
  • 이로 인해 컨테이너는 서로 다른 파일 시스템을 가질 수 있으며, 호스트와 독립적으로 작동합니다.

2. 테스트 및 디버깅

  • 새로운 네임스페이스를 생성하여 프로덕션 환경과 분리된 상태에서 파일 시스템 관련 작업을 테스트할 수 있습니다.

3. 보안

  • 중요한 리소스를 특정 네임스페이스에서만 마운트하도록 제한하여 보안을 강화할 수 있습니다.

명령어 예제

  1. 현재 네임스페이스 확인

    lsns -t mnt
  2. 새로운 네임스페이스 생성 후 셸 실행

    unshare --mount --fork bash
  3. 네임스페이스 내에서 마운트 작업

    mount --bind /tmp /mnt
  4. 네임스페이스 종료

    • 셸을 나가면 네임스페이스가 종료되고, 마운트 작업도 함께 사라집니다.

MNT 네임스페이스의 한계

  1. 커널 공유:

    • 네임스페이스는 파일 시스템 계층을 격리하지만, 모든 네임스페이스는 동일한 커널을 공유합니다.
  2. 리소스 소비:

    • 너무 많은 네임스페이스를 생성하면 시스템 리소스를 소비할 수 있습니다.
  3. 특권 필요:

    • 네임스페이스 관리 작업은 일반 사용자로 수행하기 어렵고, 루트 권한이나 CAP_SYS_ADMIN 권한이 필요합니다.


MNT 네임스페이스는 Linux에서 프로세스 간 파일 시스템 계층을 격리하기 위한 강력한 도구입니다. 컨테이너 환경, 보안 강화, 그리고 테스트 및 디버깅 목적으로 널리 사용됩니다. 이 기능은 네임스페이스 간 독립성을 보장하면서도 유연한 파일 시스템 관리 기능을 제공합니다.

'Docker' 카테고리의 다른 글

Overlay Driver  (0) 2024.11.20
ext4 파일 시스템  (0) 2024.11.20
AWS EC2 Docker 설치 및 Docker 권한 추가  (0) 2024.11.18
리눅스 완전 공정 스케줄러(CFS: Completely Fair Scheduler)  (0) 2024.11.17
wget 커맨드  (0) 2024.11.17