Ctrl + Shift + ESC

OverlayFS로 Union Mount 해보기 본문

Linux

OverlayFS로 Union Mount 해보기

단축키실행해보세요 2025. 12. 2. 22:01

* 해당 포스트는 실무 초밀착 리눅스: 클라우드 환경 운영부터 성능분석까지 강의를 듣고 정리한 것입니다.

 

Linux에서 OverlayFS 살펴보기

# 오버레이 파일시스템 실습에 사용할 디렉토리 생성 
mkdir /tmp/{lower1,lower2,upper,merged,work}

 

실습에 사용할 디렉토리를 생성한다.

  • lower1, lower2: 읽기 전용, 마운트할 레이어를 위해 사용할 디렉토리
  • upper: writable한 레이어
  • merged: lower 레이어들과 upper 레이어가 겹쳐져서 실습에서 실제로 사용할 디렉토리
  • work: file sywtem에서 관리 목적으로 사용하는 디렉토리
# 실습에 사용할 파일 생성
echo "lower1 a" > /tmp/lower1/a.txt
echo "lower1 b" > /tmp/lower1/b.txt
echo "lower2 a" > /tmp/lower2/a.txt
echo "lower2 c" > /tmp/lower2/c.txt

 

 

실습에서 사용할 파일들을 lower1, lower2 디렉토리에 생성한다.

 

# 읽기 전용 오버레이 
sudo mount \
    -t overlay \
    overlay \
    -o lowerdir=/tmp/lower1:/tmp/lower2 \
    /tmp/merged

 

OverlayFS를 사용해 /tmp/lower1, /tmp/lower2 디렉토리를 겹쳐서 하나의 디렉토리 /tmp/merged 로 보여준다.

-t overlay overlay 명령어는 overlay 타입의 파일시스템을 마운트하겠다는 의미이다.

 

# 마운트 정보 확인  (read-only로 마운트)
mount | grep overlay

 

 

overlay와 관련된 파일시스템 내용을 확인해보면 overlay on tmp/merged로 마운트가 되었는데 ro(read-only)로 마운트가 된 것을 확인할 수 있다.

 

# 읽기 전용으로 마운트된 /tmp/merged 에 쓰기 동작 수행 
touch /tmp/merged/aa

 

읽기 전용으로 마운트되었기 때문에 파일 생성이 불가능한 것을 확인할 수 있다.

 

# 디렉토리 언마운트
sudo umount /tmp/merged 

# 디렉토리 마운트 
sudo mount \
    -t overlay \
    overlay \
    -o lowerdir=/tmp/lower1:/tmp/lower2,upperdir=/tmp/upper,workdir=/tmp/work \
    /tmp/merged

 

언마운트를 진행한 뒤 다시 마운트를 진행한다.

이전에는 lowerdir만 지정되어 있었지만 이번에는 upperdir=/tmp/upper도 함께 지정해 쓰기 가능한 변경 사항이 저장된다. 또한 workdir=/tmp/work 옵션으로 OverlayFS 내부적으로 변경 사항을 만들 때 사용하는 작업 디렉토리도 함께 지정해준다.

 

# 읽기/쓰기로 마운트된 /tmp/merged 에 쓰기 동작 수행
touch /tmp/merged/aa

# 파일 쓰여진 위치 확인 
ls -l /tmp/upper

# 디렉토리 언마운트
sudo umount /tmp/merged

 

overlay와 관련된 파일시스템 내용을 확인해보면 overlay on tmp/merged로 마운트가 되었는데 rw(read-write)로 마운트가 된 것을 확인할 수 있다. 따라서 hello.txt가 잘 생성되는 것을 확인할 수 있다.

또한 쓰기 변경 사항이 저장되는 upper 디렉토리에 hello.txt 파일이 생성된 것을 확인할 수 있다.

 

 

Docker에서 OverlayFS 살펴보기

# docker 설치
sudo apt install -y docker.io

# Ubuntu 베이스 이미지 가져오기
sudo docker pull nginx
sudo docker images

 

docker를 설치한 뒤에 nginx 이미지를 가져온다.

docker images를 통해 nginx 이미지를 잘 가져온 것을 확인할 수 있다.

 

# nginx 실행
sudo docker run --rm -d nginx

# overlayfs mount 정보 조회
mount | grep overlay

 

nginx를 실행한 뒤 도커가 오버레이 파일 시스템을 어떻게 마운트해서 사용하는지 확인해 보았다.

도커가 오버레이를 생성해서 read-write 모드로 마운트가 되었고, lower 디렉토리로 여러 디렉토리가 지정이 된 것을 확인할 수 있다.

upper 디렉토리는 writable하며, 한 개의 디렉토리가 지정되어 있고 workdir에 오버레이 파일시스템이 사용할 워크디렉토리도 지정이 되어 있는 것을 확인할 수 있다.