안녕하세요. 달소입니다.
어제오늘 삼바랑 NFS를 통해 이것저것 구상해본것들을 테스트중인데 서버 설치중 기록을 남겨봅니다.
NFS는 공유 스토리지를 사용해서 네트워크파일시스템을 운영할 수 있도록 도와줍니다.
현재 Ubuntu 20 에서는 NFS 버전 3과 4를 지원하며 이는 헤놀로지의 NFS도 동일합니다.
NFS 버전 3 (NFSv3)
- 안전한 비동기 쓰기를 지원하며 이전 NFSv2보다 오류 처리시 더 강력합니다.
- 클라이언트가 2GB 이상의 파일 데이터에 액세스 할 수 있도록 64 비트 파일 크기 및 오프셋을 지원합니다.
NFS 버전 4 (NFSv4)
- 방화벽과 인터넷을 통해 작동
- 더 이상 rpcbind 서비스가 필요하지 않습니다.
- 액세스 제어 목록 (ACL) 지원
- 상태 저장 작업을 활용합니다.
NFS 서버 설치하기.
sudo apt install nfs-kernel-server
설치후에는 아래와같은 명령어로 nfs-server를 활성화 시키고 상태를 확인할 수 있습니다.
systemctl enable –now nfs-server
service nfs-server status
NFS 설정하기
삼바와 마찬기지로 NFS도 설정파일을 통해 공유할 폴더 및 접근 IP에 대한 접근제어를 할 수 있습니다.
vi /etc/exports
파일에 들어가면 기본적으로 예제파일이 있으니 참고해서
아래처럼 내용을 추가해주세요.
/data client_ip(rw,sync,no_root_squash,no_subtree_check)
client_ip 를 *로 할경우 전체 오픈입니다.
옵션 내용.
- rw : 클라이언트에게 호스트 디렉토리에 대한 읽기 및 쓰기 액세스를 제공합니다.
- sync :이 옵션은 NFS가 응답하기 전에 변경 사항을 기록하도록합니다. 이는 NFS가 먼저 호스트 디렉토리에 쓰기를 완료 한 다음 클라이언트에 응답 함을 의미합니다. 이렇게하면 호스트 서버의 실제 상태가 반영되지만 파일 작업 속도가 느려질 수 있습니다.
- no_subtree_check :이 옵션은 하위 트리 검사를 비활성화합니다. 하위 트리 검사는 각 NFS 요청에 대해 서버가 액세스 된 파일이 있고 내 보낸 트리에 있는지 확인해야하는 작업입니다. 이 작업은 클라이언트가 액세스하는 파일의 이름이 변경 될 때 문제를 일으 킵니다. 따라서 대부분의 경우 비활성화 상태로 두는 것이 가장 좋습니다. 약간의 보안 문제가 있지만 안정성을 향상시킬 수 있습니다.
- no_root_squash : 기본적으로 NFS는 클라이언트가 루트로 수행 한 모든 작업을 서버의 권한이없는 사용자로 변환합니다. 이는 보안을 향상시키기위한 목적으로 수행됩니다. 이 옵션은 특정 공유에 대해 해당 동작을 비활성화합니다.
방화벽 허용
기본적으로 NFS는 2049포트를 사용합니다.
사용하시는 ufw나 iptables 에서 2049 포트를 allow 해주시면 됩니다.
클라이언트 마운트하기
이제 server와 클라이언트간 연동만 확인하면 완료입니다.
apt install nfs-common으로 클라이언트를 설치해주시고
마운트 시켜줄 폴더를 만들어주세요.
mkdir -p /data/nfs
그리고 마운트 명령어로 마운트를 시켜줍니다.
mount -t nfs server_ip:/data /data/nfs
연결이 확인되었으면 테스트해보시면됩니다.