728x90
NFS란?
NFS(Network File System)는 네트워크 상에서 파일 및 디렉토리를 공유하기 위한 분산 파일 시스템 프로토콜입니다. 주로 유닉스 및 유닉스 계열의 운영 체제에서 사용되며, 클라이언트와 서버 간의 효율적인 파일 공유를 제공하는 데 중점을 둡니다.
✔특징 !
네트워크 기반 파일 공유: NFS는 클라이언트와 서버 간의 네트워크 연결을 통해 파일 및 디렉토리를 공유합니다. 이를 통해 여러 시스템 간의 데이터를 쉽게 공유할 수 있습니다.
1. NFS 서버 구성하기
✔ NFS 패키지 설치
[root@localhost ~]# dnf -y install nfs-utils
✔ NFS 서버를 마운트 해줄 디렉토리 생성
[root@localhost ~]# mkdir -p /scr/nfshome
[root@localhost ~]# chmod 777 /scr/nfshome
✔ NFS 설정파일
- /etc/exports 파일에 경로를 설정해준다.
[root@localhost ~]# vi /etc/exports
[root@localhost iso]# cat /etc/exports
/scr/iso 10.0.0.0/24(rw,async,no_root_squash,no_subtree_check,fsid=1)
/scr/nfshome 10.0.0.0/24(rw,async,no_root_squash,no_subtree_check,fsid=2)
✨ /scr/iso는 테스트를 위해서 만든거라 안하셔도 됩니다.
✨ NFS 로 공유 되고있는 정보를 볼수 있음 (/etc/exports내용이 보임) 명령어 : exportfs -v
✔ NFS 서버 서비스 실행하기
[root@localhost ~]# systemctl start nfs-server
[root@localhost iso]# systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Wed 2024-01-31 14:34:50 KST; 1h 16min ago
Process: 34062 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
Process: 34057 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
Process: 34055 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
Process: 34424 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
Process: 34410 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
Process: 34408 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 34424 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 306782)
Memory: 0B
CGroup: /system.slice/nfs-server.service
Jan 31 14:34:50 localhost.localdomain systemd[1]: Starting NFS server and services...
Jan 31 14:34:50 localhost.localdomain systemd[1]: Started NFS server and services.
2. 클라이언트 테스트
- 클라이언트에서 테스트 해보기
✔ 공유받을 디렉토리를 생성
[root@localhost ~]# mkdir /scr/nfs
✔ 생성한 디렉토리에 마운트 하기
[root@localhost ~]# mount -t nfs 10.0.0.1:/scr/nfshome /scr/nfs
✔ 마운트가 잘되었는지 확인하기
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 24542612 0 24542612 0% /dev
tmpfs 24571528 0 24571528 0% /dev/shm
tmpfs 24571528 9776 24561752 1% /run
tmpfs 24571528 0 24571528 0% /sys/fs/cgroup
/dev/sda1 9754624 382856 9371768 4% /
/dev/sda2 29282336 5088460 24193876 18% /usr
/dev/sda6 413964812 2919300 411045512 1% /scr
/dev/sda3 19520512 369924 19150588 2% /var
tmpfs 4914304 12 4914292 1% /run/user/42
tmpfs 4914304 0 4914304 0% /run/user/0
10.0.0.1:/scr/nfshome 413965312 29066240 384899072 8% /scr/nfs
✔ 클라이언트가 빈파일 생성해보기
[root@localhost ~]# ll /scr/nfs/
total 4
dr-xr-xr-x. 7 root root 4096 Jan 31 01:32 iso
[root@localhost ~]# touch /scr/nfs/nfsTEST
[root@localhost ~]# ll /scr/nfs/
total 4
dr-xr-xr-x. 7 root root 4096 Jan 31 01:32 iso
-rw-r--r--. 1 root root 0 Jan 31 02:10 nfsTEST
✔ NFS 서버에서 확인해보기
[root@localhost nfshome]# ll
total 4
dr-xr-xr-x. 7 root root 4096 Jan 31 15:32 iso
-rw-r--r--. 1 root root 0 Jan 31 16:10 nfsTEST
✨ 클라이언트에서 만든 nfsTEST라는 빈파일 잘 보임
🔻 추가 내용
✔ 공유 디렉토리 설정 방법
- /etc/exports 파일 편집
/NFS공유할디렉토리경로 클라이언트IP주소(옵션들)
[root@localhost ~]# cat /etc/exports
/scr/iso 10.0.0.0/24(rw,async,no_root_squash,no_subtree_check,fsid=1)
/scr/nfshome 10.0.0.0/24(rw,async,no_root_squash,no_subtree_check,fsid=2)
- 클라이언트 IP주소: 지정할수도 있지만 *를 사용하게 되면 대역대 모두가 사용할수 있게도 가능합니다.
✔ 옵션들
- rw (read-write): 클라이언트가 읽고 쓸 수 있도록 합니다.
- ro (read-only): 클라이언트가 읽기만 가능하도록 합니다.
- sync / async: 기본적으로 NFS는 비동기적으로 작동합니다.
- sync: 옵션을 사용하면 데이터가 디스크에 쓰여질 때까지 대기
- async: 즉시 응답하고 나중에 디스크에 기록
(async이 성능을 향상시킬 수 있지만, 데이터의 손실 가능성이 존재합니다.)
- no_root_squash / root_squash: 기본적으로 NFS는 클라이언트에서 root 권한을 가진 사용자의 액세스를 제한합니다.
- no_root_squash: 사용하면 클라이언트의 root 권한이 서버에서도 유지
- all_squash: 모든 사용자를 익명 사용자로 매핑합니다.
- ecure / insecure: 예약 포트와 관련
- secure: 클라이언트가 예약된 포트를 사용하여 연결해야 합니다.
- insecure: 비예약 포트로의 연결도 허용
- subtree_check / no_subtree_check: 일관성 검사
(성능 향상을 위해 no_subtree_check를 사용할 수 있지만, 일부 상황에서는 subtree_check가 필요할 수 있습니다.)- subtree_check: 서브트리 루트의 일관성을 검사하도록 합니다.
- no_subtree_check: 서브트리 루트를 검사하지 않습니다.
- fsid: NFS 서버는 각 공유된 디렉토리에 대해 고유한 File System ID를 할당합니다.
이 ID는 NFS 클라이언트에게 서버에서 제공되는 파일 시스템을 식별하는 데 사용됩니다.
일반적으로 NFS 서버에서는 디렉토리의 경로를 기반 s으로 File System ID를 할당하지만, fsid 옵션을 사용하면 이를 수동으로 지정할 수 있습니다.
728x90
'리눅스 > 서버운영' 카테고리의 다른 글
[리눅스] KickStart ① (0) | 2024.02.19 |
---|---|
[리눅스] PXE부팅으로 OS설치하기 (0) | 2024.01.31 |
[리눅스] TFTP, VSFTP서버 구성하기 (0) | 2024.01.29 |
[리눅스] DHCP서버 구성하기 (0) | 2024.01.29 |
[리눅스] KickStart (1) | 2024.01.23 |
댓글