| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- cgroup
- acc
- EC2
- mount
- fork-bomb
- python
- Reflected
- Linux
- wireshark
- SISS
- basicrce3
- AWS
- 백준
- backjoon
- grafana
- 자료구조
- pwnable
- Reversing
- Systemhacking
- CodeEngn
- c
- cloud
- beebox
- 유석종교수님
- bWAPP
- htmlinjection
- datastructure
- Dreamhack
- 와이어샤크
- System
- Today
- Total
Ctrl + Shift + ESC
OverlayFS로 Union Mount 해보기 본문
* 해당 포스트는 실무 초밀착 리눅스: 클라우드 환경 운영부터 성능분석까지 강의를 듣고 정리한 것입니다.
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에 오버레이 파일시스템이 사용할 워크디렉토리도 지정이 되어 있는 것을 확인할 수 있다.