MNT 네임스페이스
2024. 11. 20. 11:04ㆍDocker
MNT 네임스페이스란?
Linux에서 MNT 네임스페이스(Mount Namespace)는 파일 시스템의 마운트 포인트를 격리할 수 있는 기능입니다. 프로세스마다 독립적인 마운트 정보를 가지도록 하여, 한 네임스페이스에서의 파일 시스템 변경이 다른 네임스페이스에 영향을 주지 않게 만듭니다. 이는 Linux 네임스페이스 중 하나로, 프로세스 격리와 컨테이너 기술의 중요한 구성 요소입니다.
MNT 네임스페이스의 주요 개념
마운트 포인트:
- 마운트 포인트는 파일 시스템 계층에 디바이스나 디렉토리를 연결하는 지점을 말합니다.
- MNT 네임스페이스는 이 마운트 포인트를 네임스페이스별로 독립적으로 관리할 수 있도록 합니다.
독립성:
- 각 네임스페이스는 파일 시스템 계층을 독립적으로 유지합니다.
- 한 네임스페이스에서 수행된 마운트 또는 언마운트 작업은 다른 네임스페이스에 영향을 미치지 않습니다.
공유와 상속:
- 새로운 네임스페이스는 생성 시 부모 네임스페이스의 마운트 상태를 복사합니다.
- 그러나 복사된 이후의 변경 사항은 독립적으로 유지됩니다.
사용 사례:
- 컨테이너: 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. 보안
- 중요한 리소스를 특정 네임스페이스에서만 마운트하도록 제한하여 보안을 강화할 수 있습니다.
명령어 예제
현재 네임스페이스 확인
lsns -t mnt
새로운 네임스페이스 생성 후 셸 실행
unshare --mount --fork bash
네임스페이스 내에서 마운트 작업
mount --bind /tmp /mnt
네임스페이스 종료
- 셸을 나가면 네임스페이스가 종료되고, 마운트 작업도 함께 사라집니다.
MNT 네임스페이스의 한계
커널 공유:
- 네임스페이스는 파일 시스템 계층을 격리하지만, 모든 네임스페이스는 동일한 커널을 공유합니다.
리소스 소비:
- 너무 많은 네임스페이스를 생성하면 시스템 리소스를 소비할 수 있습니다.
특권 필요:
- 네임스페이스 관리 작업은 일반 사용자로 수행하기 어렵고, 루트 권한이나
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 |