UnionFS

Unionfs
개발사오픈 소스 커뮤니티
정식 명칭Unification File System
기능
파일 시스템 권한POSIX
투명한 압축없음
투명한 암호화없음 (단, 블록 장치 수준에서 제공 가능)
기타
지원 운영 체제리눅스, FreeBSD, NetBSD
웹사이트unionfs.filesystems.org

Unionfs는 리눅스, FreeBSD, NetBSD를 위한 파일 시스템 서비스로, 다른 파일 시스템을 위한 유니온 마운트를 구현한다. 이 서비스는 브랜치(branch)라고 불리는 별개의 파일 시스템들을 투명하게 겹쳐서, 하나의 일관된 파일 시스템을 형성할 수 있게 한다. 병합된 브랜치 내에서 동일한 경로를 가진 디렉터리들의 내용은 새로운 가상 파일 시스템 내의 단일 병합 디렉터리에서 함께 보이게 된다.

브랜치를 마운트할 때 한 브랜치의 우선순위가 다른 브랜치보다 높게 지정된다. 따라서 두 브랜치에 같은 이름의 파일이 존재할 경우 하나가 다른 것보다 우선권을 갖는다.

각기 다른 브랜치들은 읽기 전용이거나 읽기/쓰기가 가능한 파일 시스템일 수 있으며, 따라서 가상으로 병합된 복사본에 대한 쓰기 작업은 특정 실제 파일 시스템으로 전달된다. 이를 통해 파일 시스템이 쓰기 가능한 것처럼 보이게 하면서도 실제로는 파일 시스템의 변경을 허용하지 않는데, 이를 카피 온 라이트라고 한다. 이는 라이브 CD와 같이 미디어가 물리적으로 읽기 전용인 경우에 유용할 수 있다.

Unionfs는 원래 스토니브룩 대학교의 에레즈 자독(Erez Zadok)과 그의 팀에 의해 개발되었다.

사용처

크노픽스에서는 CD-ROM 또는 DVD의 파일 시스템과 쓰기 가능한 드라이브(예: USB 메모리)에 있는 knoppix.img(크노픽스 7의 경우 knoppix-data.img)라는 이미지 파일 내의 파일 시스템을 유니온 마운트할 수 있는데, 이때 쓰기 가능한 드라이브가 읽기 전용 파일 시스템보다 우선권을 갖는다. 이를 통해 사용자는 시스템의 파일을 수정할 수 있으며, 새로운 파일은 이미지에 저장되어 CD의 파일 대신 투명하게 사용된다.

Unionfs는 또한 여러 파일 시스템을 위한 단일 공통 템플릿을 생성하거나 보안상의 이유로 사용될 수 있다. 때로는 임시 스냅샷 시스템으로 사용되기도 한다.

도커는 도커 이미지를 계층화하기 위해 Aufs와 같이 Unionfs에서 영감을 받은 파일 시스템을 사용한다. 기본 이미지에 작업이 수행되면 각 계층이 생성되고 기록되며, 각 계층은 작업을 재현하는 방법을 완벽하게 설명한다. 이러한 전략은 계층 업데이트만 전파하면 되기 때문에 도커의 경량 이미지 구현을 가능하게 한다(전체 VM과 비교했을 때).

우분투를 위한 리눅스 터미널 서버 프로젝트 구현체인 UbuntuLTSP는 PXE 부팅으로 씬 클라이언트나 씩 클라이언트를 부팅할 때 Unionfs를 사용한다.

기타 구현체

리눅스용 Unionfs는 두 가지 버전이 있다. 버전 1.x는 모듈로 빌드할 수 있는 독립형 버전이다. 버전 2.x는 더 새롭게 재설계되고 재구현된 버전이다.

Aufs는 Unionfs의 대안 버전이다.

미클로스 세레디(Miklos Szeredi)가 작성한 overlayfs는 OpenWRT에서 사용되었고 우분투에서도 검토되었으며, 수년간의 개발과 논의 끝에 2014년 10월 26일 커널 버전 3.18을 위해 메인라인 리눅스 커널에 병합되었다.

unionfs-fuse는 커널 모듈이나 패치가 아닌 사용자 공간 파일 시스템 프로그램으로 구현된 독립적인 프로젝트이다. Unionfs와 마찬가지로 카피 온 라이트와 읽기 전용 또는 읽기/쓰기 브랜치를 지원한다.

플랜 9 운영체제는 사용자나 프로세스별로 사용자 지정 이름공간을 구축하기 위해 유니온 마운트를 광범위하게 사용한다.

유니온 마운트는 적어도 1995년부터 BSD에서 사용할 수 있었다.

GNU 허드에는 Unionfs의 구현체가 존재한다. 2008년 1월 기준으로 작동은 하지만, 결과적으로 읽기 전용 마운트 지점이 된다.

mhddfs는 Unionfs와 유사하게 작동하지만 사용 가능한 공간이 가장 많은 드라이브에 파일을 분산하는 것을 허용한다. 이는 사용자 공간 파일 시스템으로 구현되었다.

mergerfs는 FUSE 기반의 유니온 파일 시스템으로, 파일을 읽고 쓰는 데 필요한 여러 정책과 기타 고급 기능(xattrs, 혼합된 RO 및 RW 드라이브 관리, 링크 CoW 등)을 제공한다.

썬 마이크로시스템즈는 1986년경 썬OS 3에서 카피 온 라이트, 화이트아웃(상위 계층에서 하위 계층의 파일을 숨김) 등이 포함된 스택형 계층 파일 시스템의 첫 구현체인 반투명 파일 서비스를 도입했다.

2011년 7월에 출시된 IOS 탈옥 도구인 제일브레이크미 3.0은 운영체제 수정 설치 과정을 가속화하기 위해 Unionfs 기술을 사용한다.

같이 보기

각주

  1. ↑ Wright, Charles P.; Zadok, Erez (December 2004). “Kernel Korner: Unionfs: Bringing Filesystems Together”. 《Linux Journal》 2004 (128): 8. ISSN 1075-3583.
  2. ↑ “Git server of File systems and Storage Lab”. 스토니브룩 대학교. 2017년 7월 17일에 확인함. Project: unionfs-3.9.y.git; Owner: Erez Zadok
  3. ↑ “File systems and Storage Lab: CS Department”. 스토니브룩 대학교. Lab Coordinator and Principal Investigator: Prof. Erez Zadok
  4. ↑ Schulz, Werner P. (2016년 12월 15일). “Hard drive Installation: UNIONFS”. 크노픽스. 2017년 7월 17일에 확인함.
  5. ↑ “Docker overview: Union file systems”. Docker, Inc. 2017년 7월 13일. 2017년 7월 17일에 확인함.
  6. ↑ Georgopoulos, Alkis (2010년 12월 24일). “UbuntuLTSP/LTSPWithoutNFS”. 2017년 7월 17일에 확인함.
  7. ↑ “aufs Homepage”. 2017년 7월 2일. 2017년 7월 17일에 확인함.
  8. ↑ Torvalds, Linus (2014년 10월 26일). “overlayfs merge + leak fix for d_splice_alias() failure exits”. 2017년 7월 17일에 확인함.
  9. ↑ Corbet, Jonathan (2011년 6월 15일). “Debating overlayfs”. 2017년 7월 17일에 확인함.
  10. ↑ Podgorny, Radek (2016년 11월 21일). “unionfs-fuse – A userspace unionfs implementation”. 《깃허브》. 2017년 7월 17일에 확인함.
  11. ↑ Pendry, Jan-Simon; McKusick, Marshall Kirk (January 1995). “Union Mounts in 4.4BSD-Lite”. 《USENIX 1995 Technical Conference Proceedings》. 2017년 7월 17일에 확인함.
  12. ↑ Schwinge, Thomas (2014년 2월 26일). “unionfs”. 《GNU 허드》. 2017년 7월 17일에 확인함.
  13. ↑ “trapexit/mergerfs” (영어). 《깃허브》. 2018년 10월 21일에 확인함.
  14. ↑ 《Sun/Release 3.0》 1. Interleaf Technical Publishing. 1988. 15‑1–18, 16‑1–19쪽.
  15. ↑ Imran, Awais (2011년 6월 19일). “Comex Working on Faster Jailbreaking Process for JailbreakMe 3.0; iPad 2 Jailbreak Coming Soon!”. Redmond Pie. 2017년 7월 17일에 확인함.

외부 링크