https://blog.naver.com/alice_k106/221530340759
168. [Linux] 투명 셀로판지 이론을 통한 Overlay FS 사용 방법과 유니온 마운트 (Union Mount) 이해하기
이번 포스트에서는 OverlayFS (오버레이 파일 시스템) 에 대해서 다룬다. 참고로, 직접 사용해 보기에는...
blog.naver.com
이 블로그의 내용을 정리했다.
Union Mount File System
유니온 마운트
- 하나의 디렉터리 지점에 여러 개의 디렉터리를 마운트함으로써, 마치 하나의 통합된 디렉터리처럼 보이게 하는 것
유니온 마운트를 지원하는 파일 시스템
- AUFS, OverlayFS
AUFS는 2006년 개발되었다. 또한 리눅스 커널의 mainline에 포함되어 있지 않다.
보수적인 레드햇 계열은 AUFS 모듈을 커널에 내장시키지 않았으며, AUFS 대신에 Devicemapper를 사용했다.
그런데 Devicemapper는 안정성이 낮고 성능 또한 좋지 않아, 대안으로 OverlayFS가 많이 사용되는 추세이다.
OverlayFS
유니온 마운트 파일 시스템으로, 2014년에 리눅스 커널 mainline에 통합되었다.
overlay는 커널에 모듈로 내장되어 있다. ☞ lsmod | grep overlay
overlay는 크게 4가지 디렉터리 레이어로 나뉜다.
1. lower dir : 아래 쪽에 깔려있는. 수많은 투명 셀로판지에 해당하는 1개 이상의 디렉터리
2. upper dir : 가장 위쪽에 있는 투명 셀로판지에 해당하는 디렉터리. 최종적으로 사용자에게 보이는 파일들을 변경할 수 있다.
3. merge dir : 모든 셀로판지를 겹쳐서 보는 통합 뷰에 해당하는 디렉터리
4. work dir : 통합 뷰의 원자성을 보장하기 위해 존재하는 중간 계층. overlay를 직접 사용할 때는 크게 중요하지 않다.
<무작정 따라하기>
mkdir lower1 upper merge work
echo alice >> lower1/lower1_file ☞ lower1/lower1_file에 alice가 적혀있다.
mount -t overlay overlay -o lowerdir=lower1/,upperdir=upper/,workdir=work/ merge/
☞ 결과
upper 폴더에 아무것도 없다.
work 폴더에 work 폴더 하나만 생성되었다. work 폴더 안에는 아무것도 없다.
merge 폴더에 lower1_file이 똑같이 생성되었다.
이 lower1_file은 실제로 merge 폴더에 존재하는 것은 아니다.
그렇다면 이번에 merge 폴더에서 새로운 파일을 생성하면 어떻게 될까?
가장 위에 있는 셀로판지인 upper 디렉터리에 그림을 덧그릴 것이기 때문에, 아래에 깔려있는 셀로판지인 lower1 디렉터리에는 아무런 영향을 끼치지 않을 것이다.
echo wonderland >> merge/new_picture
☞ 결과
merge 폴더에 new_picture 파일이 생성되었고, 거기엔 wonderland 글자가 적혀있다.
upper 폴더에 new_picture 파일이 생성되었고, 거기게도 wonderland 글자가 적혀있다.
lower1 폴더에는 아무 변화가 없다.
가장 위쪽 셀로판지인 upper 디렉터리에 새로운 파일이 생성되었고,
통합 뷰인 merge 디렉터리에는 두 개의 파일이 동시에 존재한다.
이런 마운트 방식을 유니온 마운트라고 한다.
최종적으로 사용자에게 보이는 파일들은 아래에 위치한 (여러 개의) lower1 디렉터리들과 1개의 upper 디렉터리를 하나로 합친 통합 뷰가 된다.
만약 merge 디렉터리에 적어놨던 lower1_file 파일을 수정한다면?
echo transparent >> merge/lower1_file
cat merge/lower1_file ☞ alice transparent 모두 들어있다.
cat upper/lower1_file ☞ alice transparent 모두 들어있다.
cat lower1/lower1_file ☞ alice만 들어있다.
알 수 있는 것
lower 디렉터리들은 항상 불변의 상태를 유지한다. 읽기 전용으로 사용된다.
모든 lower 디렉터리 파일에 변경 사항이 발생할 경우, 가장 위쪽 셀로판지인 upper에 그 변경 사항을 기록한다.
모든 레이어의 내용은 merge에서 통합되어 사용할 수 있다.
사용하는 이유
overlayFS를 통해 사용자는 하나의 파일 시스템을 다른 파일 시스템 상단에 overlay할 수 있다.
변경 사항이 생겼을 때 상단 파일 시스템에 기록되는 반면, 하단 파일 시스템은 변경되지 않은 상태로 남아있게 된다.
이를 통해 여러 사용자는 컨테이너 또는 DVD-ROM과 같은 파일 시스템 이미지를 공유할 수 있다.
'운영체제' 카테고리의 다른 글
ubuntu18.04에서 kvm image 만들기 (0) | 2021.08.01 |
---|---|
ASLR 확인하기 (0) | 2021.07.30 |
Samba (0) | 2021.07.11 |
파일 디스크립터 (0) | 2021.07.10 |
LD_PRELOAD를 이용한 후킹 (0) | 2021.07.08 |
댓글