보통 /etc/fstab에 등록된 장치는 부팅 시 항상 연결되어 있다.
반면, autofs는
- On-demand: 사용자가 해당 디렉토리에 접근(cd, ls 등)하는 순간 마운트한다.
- Auto-unmount: 일정 시간 동안 사용하지 않으면 자동으로 연결을 해제한다.
왜 autofs도 쓰는데?
- 자원 절약: 네트워크 공유(NFS, SAMBA) 등을 항상 연결해두면 시스템 부하가 생기는데, 이를 방지한다.
- 부팅 속도: 부팅 시 모든 원격 서버에 연결을 시도하지 않으므로 부팅이 빠르다.
- 안정성: 원격 서버가 다운되어도 시스템 전체가 멈추는(Hang) 현상을 줄여준다.
자동 마운트(autofs)
위에서도 간단히 언급을 했지만 자동 마운트를 정리하면 아래와 같은 특징을 가진다.
- 자동 마운트는 NFS 공유 디렉토리를 자동으로 마운트 하거나 마운트를 해제하는 서비스다.
- 자동 마운트를 사용하면 클라이언트에서 설정한 정보를 토대로 NFS 공유 디렉토리에 접근할 때 자동으로 마운트하며, 마운트 된 뒤에 일정시간 동안 접근하지 않으면 자동으로 마운트 해제를 한다
- 시스템 자원을 효율적으로 사용할 수 있으며, 또한 맵 파일 형식에 따라 마운트 포인트를 자동으로 생성할 수 있게 됨
- 자동 마운트를 사용하기 위해서는 autofs 패키지를 설치해야 한다.
자동 마운트를 구성하려면 몇 가지 맵 파일을 생성해야 하는데, 마스터 맵, 직접 맵, 간접 맵 파일이 있다.
- 맵 파일이란?
- 서버 주소와 옵션이 적힌 상세 지도라고 보면 된다.
맵 파일
맵 파일은 크게 마스터 맵, 그리고 아래에 위치하는 직접 맵 혹은 간접 맵으로 구성된다.
둘의 구성도는 아래와 같다.

1] 마스터 맵 파일
마스터 맵 파일에는 마운트 포인트, 맵 파일의 경로를 지정한다.
- 마운트 포인트: 서버와 연결된 내 컴퓨터의 접속용 폴더를 의미한다.
비유를 들어보면 마스터 맵은 건물 입구의 전체 안내판과 같다.
- 어느 구역을 누가 담당하는지 알려주는 지도로서 “이쪽 구역(경로)은 이 상세 지도(직접/간접 맵 파일)를 보고 찾아가세요~ 라고 지정한다.
마스터 맵 파일은 /etc/auto.aster 파일이 기본적으로 존재한다. 해당 파일에는 기본 자동 마운트에 대한 설정이 지정되어 있다.
[root@client in_direct]
# grep -v '^#' /etc/auto.master
/misc /etc/auto.misc
/net -hosts
+dir:/etc/auto.master.d
+auto.master
- /misc
- 이동식 장치에 대한 자동 마운트 설정
- CD-ROM, USB 같은 이동식 매체를 위해 미리 만들어진 간접 맵 예시다.
- 사용자가 /misc/cd라고 치면 자동으로 CD를 마운트한다.
- /net -hosts
- NFS 서버의 FQDN을 지정할 때 지정된 호스트로 접근하는 방식이다.
- 호스트 기반 마운트로, 맵 파일을 일일이 만들지 않아도, 상대방 서버 이름(FQDN)만 알면 /net/서버이름/공유경로 식으로 즉시 접근 가능하게 만들어준다.
- FQDN: Fully Qualified Domain Name의 약자로, 네트워크 상의 특정 컴퓨터나 서비스의 정확한 위치를 나타내는 완전한 도메인 이름이다.
- +
- 이 디렉토리 안에 있는 .autofs 파일들도 마스터 맵으로 인정하고 다 읽어들여라"라는 경로 추가 지시어다.
- 이로 인해 /etc/auto.master.d, /etc/auto.master은 마스터 맵으로 사용할 수 있다.
하지만 일반적으로 /et/auto.master 파일에 자동 마운트 정보를 등록하지 않고, /etc/auto.master.d 디렉토리에 파일의 확장자를 ‘.autofs’로 지정하여 마스터 맵을 생성한다. 구성은 아래와 같다.
mount-point map-file-path
- mount-point: 서버와 연결된 내 컴퓨터의 접속용 폴더다.
- /-: 직접 맵(direct)
- /path(절대경로): 간접 맵(indirect)
- 위의 /etc/auto.master. /misc, /net은 간접 맵 설정이다.
예시를 봐보자.
/- /etc/auto.direct
# or
/ex_indirect /etc/auto.indirect
- 첫번째 직접 맵 사용 시
- /- 을 사용했으므로 직접 맵이 사용된다.
- /etc/auto.direct로 가면 서버 주소와 옵션이 적힌 상세 지도가 있다.
- 두번째 간접 맵 사용 시
- /-가 아니므로 간접 맵이 사용된다.
- /etc/auto.indirect로 가면 서버 주소와 옵션이 적힌 상세 지도가 있다.
2] 직접 맵 파일
앞의 마스터 맵이 건물 입구의 전체 안내판과 같다면, 직접 맵 파일은 매장의 상세 리스트로, “실제 어떤 서버와 연결할지” 적혀 있는 상세 지도다.
- 이 이름은 서버의 어느 주소에 있고~ 어떤 옵션으로 열지를 적어둔다.
/path mount-options server-address:path
직접 맵을 사용하면 첫 번째 필드에는 마운트 포인트를 절대 경로로 지정하며, 두 번째 필드인 마운트 옵션, 마지막 필드는 NFS 서버의 주소와 공유 디렉토리의 경로를 작성한다.
- auto.XXXX 의 형태는 확장자는 상관없고 파일명이 auto.로 시작해야 한다. 이는 간접 맵도 마찬가지다.
예시를 보면
/ex_direct -rw,sync 192.168.56.150:/shares/public
- 사용자가 /ex_direct를 접근하게 되면, 여기에는 서버의 /shares/public이 연결되어 있는 것을 의미한다.
- 미리 폴더를 만들 필요가 없이, autofs가 이 경로를 시스템에서 감시하고 있다.
3] 간접 맵 파일
간접 맵 파일은 직접 맵 파일과 비슷하다.
path mount-options server-address:path
- 차이점은 첫 번째 필드다.
- 간접 맵 파일의 첫 번째 필드에 마운트를 지정할 때 상대 경로로 지정한다.
예시를 통해 보면
in_direct -rw,sync 192.168.56.150:/shares/indirect
- 이전 마스터 맵 파일을 참고하자.
- 마스터 맵 파일의 mount-point를 /ex_indirect로 설정했다.
- 이후 Client 시스템의 /ex_indirect가 모든 자동 마운트의 기점이 된다.
- 따라서 간접 맵 파일 안에 적힌 이놈들은 in_direct 폴더 아래에 생성된다.
- 즉, /ex_indirect/in_direct가 최종 경로다.
4] 간접 와일드카드 맵 파일
간접 맵 파일이지만, 와일드카드를 이용해 다수의 공유 디렉토리에 대해 자동 마운트를 설정할 때 사용할 수 있다.
* mount-options server-address:path/&
- 첫 번째 필드가 *이며 세 번째 필드에서 NFS 서버의 주소와 공통된 경로 그리고 ‘&’ 문자를 작성한다.
구분 직접 매핑 (이전 실습) 간접 매핑 (현재 실습)
| 설정 경로 | /ex_direct (전체 경로 작성) | in_direct (상위 경로 제외하고 작성) |
| ls 확인 | ls / 하면 폴더가 보일 수 있음 | ls /ex_indirect 하면 처음엔 아무것도 안 보임 |
| 접근 방식 | 바로 /ex_direct로 진입 | 반드시 /ex_indirect/in_direct로 진입해야 마운트됨 |
이게 어떻게 동작되는데?
어떻게 직접 맵/간접 맵 파일에 정의한 폴더를 만들지 않아도 폴더가 만들어지는 것이며, 시간이 지나면 알아서 mount가 umount 되는 걸까?
autofs - how it works — The Linux Kernel documentation
autofs - how it works — The Linux Kernel documentation
Context The “autofs” filesystem module is only one part of an autofs system. There also needs to be a user-space program which looks up names and mounts filesystems. This will often be the “automount” program, though other tools including “system
www.kernel.org
1] 핵심 구성 요소
아래 2가지가 핵심 구성 요소다. 깊이 있는 내용이지만 간단히만 다루도록 한다. (사실 나도 잘 모름)
- Kernel Module
- 정말 많은 역할을 수행하지만 autofs.ko 이 여기서 파일 시스템의 실시간 상태를 감시하고 제어하는 역할을 한다.
- automount Daemon
- 유저스페이스(Userspace)에서 실행되는 Daemon 프로세스인 automount 가 설정 파일(.autofs)를 읽고 해석해 실제 마운트 작업을 수행한다.
2] 작동 프로세스
- 감시 레이어 생성
- autofs 서비스를 시작하면, 커널 모듈은 설정된 마운트 포인트(예: /ex_indirect)에 autofs라는 특수 파일 시스템을 올린다.
- 이때 실제 디스크 공간을 차지하지 않는 가상의 디렉토리 엔트리(빈 껍데기)가 생성된다.
- 커널 트랩 (Intercept)
- 사용자가 cd /ex_indirect/in_direct 명령을 내리면, 커널의 VFS(가상 파일 시스템) 레이어에서 해당 경로를 찾는 'Lookup' 과정이 발생한다. (간단히 생각해 폴더 구조를 하나씩 확인하는 과정이다.)
- 이때 커널 모듈이 "이 경로는 내가 관리하는 트랩 구역이다!"라고 판단하고 프로세스의 요청을 일시 정지(Wait)시킨다.
- 데몬 호출
- 커널은 파이프(Pipe)를 통해 유저스페이스에서 대기 중인 automount 데몬에게 신호를 보낸다.
- "누가 in_direct라는 방에 들어가려고 하니 빨리 마운트해!"라고 요청한다.
- 실제 마운트
- 데몬은 /etc/auto.indirect 지도를 읽어 NFS 서버 주소를 확인하고, mount 명령을 실행한다.
- 이때 비어있던 가상 폴더 자리에 실제 서버의 데이터가 연결된다.
- 트랩 해제
- 마운트가 완료되면 데몬은 커널에게 "준비 완료" 신호를 보낸다.
- 커널은 일시 정지시켰던 사용자의 cd 명령을 다시 진행시켜서, 사용자는 아무 일 없었다는 듯이 폴더 안으로 들어가게 된다.
'Infra > Linux' 카테고리의 다른 글
| SELinux란 (0) | 2026.01.15 |
|---|---|
| 리눅스 부팅 과정 정리 (0) | 2026.01.13 |
| LVM: 디스크 -> 마운트 과정 (0) | 2026.01.12 |
| sudo는 무적일까? (0) | 2026.01.11 |
| 어떻게 /etc/passwd와 같은 파일을 r,w 할까? (0) | 2026.01.09 |