본문 바로가기
개발/개발공부

Mount Namespace / Container 기초, 파일시스템, 마운트, 네임스페이스, 컨테이너, 간단 정리

by 치킨개발자 2023. 1. 10.
728x90

Mount Namespace


전에 공부할때 확인했듯이 리눅스는 루트 파일 시스템으로 구성

  • 루트로 시작하는 계층 구조
  • 파일, 디렉토리 제어 정보
  • 생성, 삭제, 마운트 등의 기능을 제공

Mount namespace는 각 프로세스에 격리된 파일시스템 마운트 포인트를 제공

VFS(virtual filesystem)으로 데이터 구조, 저장 매체를 추상화하여 사용 가능

매체의 특징에 따라 파일시스템을 어떻게 나눌지 결정하는 것이 많음

unshare 명령어를 통해 Mount namespace 생성 가능

각각 mount가 어떻게 보여지는지 차이를 확인할 수 있다.

보통 이미지를 통해 mountns를 관리하는데, 중복된 이미지 때문에 리소스 낭비가 심할 수 있음

 

Union Mount


중복된 이미지로 인한 리소스 낭비를 해결하기 위해 사용

복수의 filesystem을 하나로 mount 가능

Union mount 예시

working directory로 이미지파일들을 병합하여 사용하는 것

이미지 레이어가 생성이 되고, 기본적으로 Read Only(RO)로 동작

변경이 발생했을 시 Copy On Write(COW)로 동작

즉, 이미지 레이어를 Read only로 symbolic하게만 가져와서 사용을 하다가 변경이 발생했을 시 Copy하여 새로운 이미지 레이어를 만들어내는 것으로 이해

 

Docker에서도 해당 기능을 이용한 Overlay Filesystem을 이용

/var/lib/docker/image/overlay2

해당 디렉토리 참고시 확인 가능하며 하위 디렉토리 중 layer db에서

  • cache-id: 로컬 저장 경로
  • diff: 레어이 고유 id
  • parent: 부모 layer db id

등의 정보를 저장

cache-id를 보면 로컬 경로를 식별가능 → 각자 다른 저장 경로로부터 오는 것을 확인 가능

해당 이미지로 컨테이너를 띄우면 Base Layer은 share되고 변경이 발생하면 앞서 말한 방식인 COW가 적용되는 것을 확인 가능

반응형

댓글