Linux 설정: 디렉토리 간 마운트하기

Linux 디렉토리 간 마운트 가이드입니다. mount --bind, read-only remount, /etc/fstab 영구 적용, --rbind와 findmnt 검증을 정리했습니다.

Linux 설정: 디렉토리 간 마운트하기, bind mount 사용법

Linux에서는 하나의 디렉터리를 다른 경로에 다시 붙여서 사용할 수 있다. 이를 bind mount라고 한다. 예시처럼 root 권한이 필요하며, 같은 내용을 두 위치에서 보이게 할 때 유용하다. 예를 들어 실제 데이터는 /data/app에 두고, 애플리케이션이 요구하는 경로 /srv/app에 연결할 수 있다.

bind mount가 필요한 경우

  • 애플리케이션이 고정 경로만 지원하는데 실제 데이터 경로를 분리하고 싶을 때
  • 컨테이너나 chroot 환경에 host directory 일부를 노출할 때
  • 기존 경로를 바꾸지 않고 스토리지 위치를 재배치할 때
  • 읽기 전용으로 특정 directory를 다른 위치에 보여주고 싶을 때

1. 테스트 디렉터리 준비

sudo mkdir -p /data/source-dir /mnt/bind-target

echo "bind mount test" | sudo tee /data/source-dir/hello.txt
ls -l /data/source-dir
ls -l /mnt/bind-target

2. 임시 bind mount

sudo mount --bind /data/source-dir /mnt/bind-target

findmnt /mnt/bind-target
mountpoint /mnt/bind-target
ls -l /mnt/bind-target
cat /mnt/bind-target/hello.txt

이 상태에서 /data/source-dir/mnt/bind-target은 같은 내용을 가리킨다. 한쪽에서 파일을 만들면 다른 쪽에서도 보인다.

echo "created from target" | sudo tee /mnt/bind-target/from-target.txt
ls -l /data/source-dir
ls -l /mnt/bind-target

3. read-only로 다시 마운트

bind mount를 읽기 전용으로 쓰려면 bind 후 remount를 적용한다.

sudo mount -o remount,ro,bind /mnt/bind-target
findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS /mnt/bind-target

다시 쓰기 가능 상태로 돌릴 때는 다음처럼 한다.

sudo mount -o remount,rw,bind /mnt/bind-target

4. 해제

sudo umount /mnt/bind-target
findmnt /mnt/bind-target || true

5. 재부팅 후 유지하기

/etc/fstab에 등록하면 부팅 시 자동으로 bind mount가 적용된다. 편집 전에는 항상 백업한다.

sudo cp -a /etc/fstab /etc/fstab.bak.$(date +%Y%m%d%H%M%S)

echo '/data/source-dir /mnt/bind-target none bind 0 0' | sudo tee -a /etc/fstab

sudo mount -a
findmnt /mnt/bind-target

읽기 전용으로 유지하려면 option을 명확히 쓴다.

/data/source-dir /mnt/bind-target none bind,ro 0 0

6. 하위 mount까지 포함할 때

source directory 아래에 다른 filesystem이 이미 mount되어 있고 그것까지 같이 노출해야 한다면 recursive bind를 사용한다.

sudo mount --rbind /data/source-dir /mnt/bind-target
findmnt -R /mnt/bind-target

7. 문제 확인

증상확인 명령
대상 경로가 비어 있음findmnt /mnt/bind-target, source 경로 확인
mount -a 실패sudo findmnt --verify --fstab
권한 오류namei -l /data/source-dir /mnt/bind-target
서비스에서 접근 실패SELinux context, systemd dependency 확인

마무리

bind mount는 디스크를 새로 붙이는 작업이 아니라, 이미 존재하는 directory tree를 다른 경로에 다시 보이게 하는 기능이다. 임시 테스트는 mount --bind, 영구 적용은 /etc/fstab, 확인은 findmntmountpoint로 진행하면 된다.

문서 링크

BGM EVER