automount (autofs)
NFS클라이언트가 원격 데이터에 접근하기 위해서는 export된 디렉토리를 로컬 시스템에 마운트 해야 한다. 기존의 방식은 마운트를 설정, 해제할 때마다 수동으로 mount, umount를 하거나 /etc/fstab에 항상 마운트를 유지할 내용을 설정해주는 방식을 사용한다. 하지만, Autofs를 설정하면 수동으로 마운트하는 번거로움을 줄이면서 항상 마운트 되어 필요 없을때 낭비되는 자원 소모를 줄일 수 있다. autofs는 클라이언트의 요청시에만 자동으로 마운트를 하며, 일정시간 사용되지 않으면 자동으로 마운트를 해제한다. 자동으로 마운트할 로컬 디렉터리 경로, 외부 share, 권한 지정 등은 NFS Client 에서 map 파일에 설정한다.
1. direct map과 indirect map
autofs 유틸리티는 NFS 파일 시스템을 자동으로 마운트 및 해제할 수 있으므로 (주문형 마운트) 시스템 리소스를 절약할 수 있다. AFS, SMBFS, CIFS 및 로컬 파일 시스템을 포함한 다른 파일 시스템을 마운트하는 데 사용할 수 있다.
- master map
: 확장자가 *.autofs인 매핑 파일과 마운트 정보를 담은 파일
# vi /etc/auto.master.d/direct.autofs {마운트 될 디렉토리의 절대경로} {매핑파일의 경로} /- /etc/auto.direct |
# vi /etc/auto.master.d/indirect.autofs {마운트 될 디렉토리의 상위 디렉토리} {매핑파일의 경로} /mnt/data2 /etc/auto.indirect |
- direct map
: 로컬의 절대경로 mount point에 mount 하는 방식
# vi /etc/auto.direct {마운트 포인트} {마운트 옵션} {소스 로케이션} /mnt/data1 -rw,sync 192.168.20.52:/direct |
- indirect map
: NFS 서버의 특정 경로 하위의 여러 디렉터리에 접근해야 할 경우 *를 사용하여 mount 할 수 있는 방식
# vi /etc/auto.indirectv {마운트 포인트} {마운트 옵션} {소스 로케이션} * -rw 192.168.20.52:/indirect/& |
- 파일의 위치는 상관없으며 direct의 맵핑파일과 indirect의 맵핑파일의 확장자만 지정해주면 된다.
- 맵핑파일들의 확장자는 방식에 맞게 direct의 경우 *.direct로 생성해주면 되고, indirect의 경우 *.indirect로 생성하면 된다.
- direct map의 경우 마운트 포인트가 정확한 마운트 디렉토리가다 된다
- indirect map의 경우 마운트 포인트가 * 소스 로케이션은 작업 디렉토리의 하위 디렉토리 전체를 지정해주면 된다.
- 하위 디렉토리 전체를 지정하는 방법은 작업 디렉토리 뒤에 /& 를 작성하면 된다
/& -> 하위 디렉토리 전부를 뜻한다
autofs 설정파일
/etc/autofs.conf 파일에서 autofs의 설정을 바꿀 수 있다.
#master_map_name = auto.master
파일 구성을 원하는 이름으로 변경할 수 있다.(default=auto.master)
timeout = 300
마운트된 후 해제되는 시간을 정할 수 있다.(default=300s)
2. Autofs 실습
서버
- nfs-server 다운로드
[root@localhost /]# dnf install nfs-utils |
- nfs 폴더 생성
[root@localhost /]# mkdir /direct #직접 매핑용 [root@localhost /]# mkdir /indirect #간접 매핑용 [root@localhost /]# mkdir /indirect/happy [root@localhost /]# mkdir /indirect/angry [root@localhost /]# mkdir /indirect/sad |
- 파일 권한 부여
[root@localhost /]# chmod 707 /direct/ [root@localhost /]# chmod 707 /indirect/ |
- exports 설정하기
[root@linux /]# vi /etc/exports ---------------------------------------- /direct *(rw) #직접 매핑용 /indirect *(rw) #간접 매핑용 ---------------------------------------------- |
클라이언트
autofs 다운
[root@localhost ~]# dnf install autofs ... Complete! |
직접 매핑
- 마스터 맵 생성
[root@localhost /]# vi /etc/auto.master.d/direct.autofs --------------------------------------------------------------- /- /etc/auto.direct ------------------------------------------------------------------ |
- 매핑 파일 설정
[root@localhost /]# vi /etc/auto.direct —---------------------------------------------------------- /mnt/data1 -rw,sync 192.168.20.45:/direct —-------------------------------------------------------------- #data1 디렉토리를 따로 생성해주지 않아도 자동 생성된다. |
- autofs 재시작
[root@localhost /]# systemctl start autofs |
- auto마운트 확인
[root@localhost /]# cd /mnt/data1 [root@localhost data1]# df -h ... 192.168.20.45:/direct 70G 5.3G 65G 8% /mnt/data1 |
간접 매핑
- 마스터 맵 생성
[root@localhost /]# vi /etc/auto.master.d/indirect.autofs ------------------------------------------------------------------ /mnt/data2 /etc/auto.indirect ------------------------------------------------------------------ #data2 디렉토리를 따로 생성해주지 않아도 자동 생성된다. |
- 매핑 파일 설정
[root@localhost /]# vi /etc/auto.indirect ----------------------------------------------------------------------------- * -rw 192.168.20.45:/indirect/& ----------------------------------------------------------------------------- #&기호를 사용하면 indirect 내부 모든 디렉토리에 적용시킨다. |
- autofs 재시작
[root@localhost /]# systemctl restart autofs |
- 마운트 확인
[root@localhost /]# cd /mnt/data2 [root@localhost data2]# ll total 0 [root@localhost data2]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 876M 0 876M 0% /dev/shm tmpfs 351M 8.6M 342M 3% /run /dev/mapper/almalinux-root 70G 15G 56G 22% / /dev/nvme0n1p1 1014M 292M 723M 29% /boot /dev/mapper/almalinux-home 127G 942M 126G 1% /home tmpfs 176M 96K 175M 1% /run/user/0 /dev/sr0 8.7G 8.7G 0 100% /run/media/root/AlmaLinux-9-2-x86_64-dvd 192.168.20.45:/direct 70G 5.3G 65G 8% /mnt/data1 #간접 매핑은 상위 디렉토리에 들어가도 마운트가 되지 않는다 |
- 마운트 폴더 확인
[root@localhost data2]# ls happy [root@localhost data2]# ls happy [root@localhost data2]# df -h ... 192.168.20.45:/indirect/happy 70G 5.3G 65G 8% /mnt/data2/happy # 폴더명을 입력하면 보이지 않았던 폴더가 보이고 마운트가 된다. |