2022. 6. 4. 19:48ㆍ✨ Linux
오늘은 NFS 시스템 자동 마운트 기능인 autofs에 대해 알아보도록 한다.
NFS?
NFS(Network File System)은 파일 서버인 NFS 서버의 데이터를 원격에 공유하여 클라이언트 서버에서 사용할 수 있도록 하는 파일 시스템이다.
NFS 서버에서 외부에 공개할 디렉터리 등을 지정하여 export를 하면 NFS 클라이언트는 해당 원격의 파일이 마치 로컬에 있는 것처럼 접
근하여 수정, 삭제 할 수 있다.
물론 세부적인 권한은 /etc/exports 파일을 통해 옵션으로 설정해야 한다.
autofs vs 수동 마운트+/etc/fstab
NFS 클라이언트가 원격 데이터에 접근하기 위해서는 export된 디렉터리를 로컬 파일시스템에 마운트 해야 한다.
부팅 시에도 mount 유지 하기 위해서는 /etc/fstab에 설정도 해야 한다.
기존의 이러한 방법이라면 수동으로 mount, umount를 해야 하며, /etc/fstab 에 설정한 내용도 부팅시에만 적용된다는 특징이 있다.
하지만 autofs 를 설정하면 이러한 번거로움을 줄일 수 있다.
autofs 는 NFS share가 사용될 때만 "자동으로" mount를 하며, 일정시간 사용되지 않으면 자동 umount를 한다.
자동 마운트할 로컬 경로, 외부 share, 권한 지정 등은 NFS client 에서 map 파일에 설정한다.
direct map과 indirect map
autofs 의 map 파일 구성 방법에는 두 가지가 있다.
- direct map : 특정 NFS share를 로컬의 절대경로 mount point에 mount 하는 방식
- indirect map : NFS 서버의 특정 경로 하위의 여러 디렉터리에 접근해야 할 경우 *(asterisk) 을 사용하여 mount 할 수 있는 방식
autofs 패키지 설치
먼저 autofs 패키지를 NFS 클라이언트에 설치하고 재부팅 시에도 올라오도록 enable 한다.
[root@nfs-client ~]# yum install nfs
[root@nfs-client ~]# systemctl enable --now autofs
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.
테스트하기에 앞서, nfs-server 에서 share 할 파일들은 다음과 같이 구성되어 있다.
[root@nfs-server /]# tree shares/
shares/
├── documents
│ ├── docs1
│ ├── docs2
│ └── docs3
├── music
│ ├── music1
│ ├── music2
│ └── music3
└── videos
├── video1
├── video2
└── video3
3 directories, 9 files
exportfs -a 하기
[root@nfs-server /]# cat /etc/exports | grep -v '^#'
/shares nfsclient(rw,sync,no_root_squash)
[root@nfs-server /]# exportfs -a
(방법1) direct map 설정
NFS client 에서 map 파일을 설정한다.
NFS server의 /shares/documents share을 NFS client의 절대 경로 /mnt/docs 에 마운트 할 것이다.
[root@nfs-client ~]# cat /etc/auto.master.d/direct.autofs
/mnt /etc/auto.direct
[root@nfs-client ~]# cat /etc/auto.direct
docs -rw,sync nfsserver:/shares/documents
autofs 서비스 재시작
[root@nfs-client ~]# systemctl restart autofs
이제 /mnt/docs 경로로 이동한다. 이동 후에 mount 명령어로 유저가 이용 시도를 함과 동시에 자동 마운트 된 것을 볼 수 있다.
[root@nfs-client docs\]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 5 00:58 docs1
-rw-r--r--. 1 root root 0 Jun 5 00:58 docs2
-rw-r--r--. 1 root root 0 Jun 5 00:58 docs3
-rw-r--r--. 1 root root 0 Jun 5 00:58 docs4
[root@nfs-client mnt\]# mount | grep docs
nfs-server:/shares/documents on /mnt/docs type nfs4 (rw,relatime,sync,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.25.250.11,local\_lock=none,addr=172.25.250.12)
(방법2) indirect map 설정
NFS client 에서 map 파일을 설정한다.
NFS server의 /shares share을 NFS client의 /mnt/nfs 에 마운트 할 것이다.
NFS server의 /shares 하위에는 3개의 subdirectories 가 있는 상태이다.
로컬의 mount point는 * 으로 한다.
그리고 /etc/auto.indirect에서 nfsserver의 source location을 /shares/&로 설정했다.
&는 /shares/ 하위의 모든 하위 디렉터리를 포함한다는 뜻이다.
[root@nfs-client music]# cat /etc/auto.master.d/indirect.autofs
/mnt/nfs /etc/auto.indirect
[root@nfs-client music]# cat /etc/auto.indirect
* -rw,sync nfsserver:/shares/&
autofs 재시작
[root@nfs-client ~]# systemctl restart autofs
ls 로 해당 경로를 조회하려고 하면 없는 디렉터리라고 나온다.
[root@nfs-client ~]# cd /mnt/nfs/docs
-bash: cd: /mnt/nfs/docs: No such file or directory
cd 로 이동한다.
[root@nfs-client ~]# cd /mnt/nfs/documents
[root@nfs-client documents]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 5 00:58 docs1
-rw-r--r--. 1 root root 0 Jun 5 00:58 docs2
-rw-r--r--. 1 root root 0 Jun 5 00:58 docs3
[root@nfs-client music]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.4G 0 3.4G 0% /dev
tmpfs 3.4G 0 3.4G 0% /dev/shm
tmpfs 3.4G 17M 3.4G 1% /run
tmpfs 3.4G 0 3.4G 0% /sys/fs/cgroup
/dev/vda1 10G 1.4G 8.7G 14% /
tmpfs 683M 0 683M 0% /run/user/0
nfs-server:/shares/documents 10G 1.4G 8.7G 14% /mnt/nfs/documents
nfs-server:/shares/music 10G 1.4G 8.7G 14% /mnt/nfs/music
이런식으로 직접 접근해서 사용할 때 자동 mount 되는 것을 볼 수 있다.
[root@nfs-client nfs]# tree /mnt/nfs/
/mnt/nfs/
├── documents
│ ├── docs1
│ ├── docs2
│ └── docs3
├── music
│ ├── music1
│ ├── music2
│ └── music3
└── videos
├── video1
├── video2
└── video3
3 directories, 9 files
'✨ Linux' 카테고리의 다른 글
dd 명령어 개념과 손쉽게 더미 파일 생성하기 (0) | 2022.08.09 |
---|---|
find 명령어 -exec 옵션으로 검색된 파일에 대해 명령 실행하기 (0) | 2022.07.04 |
anacrontab 사용하여 job 스케줄링 하기 (0) | 2022.06.03 |
fio 이용하여 디스크 성능 측정하기 (0) | 2022.05.23 |
Linux 시스템 복구 방법 (Rescue, Single-user, Emergency mode) (0) | 2022.05.15 |