본문 바로가기

Operating Systems/Linux

[ Linux ] NFS 서버 설치

1. CentOS7

 

[ NFS 서버 ]

NET_INTERFACE=`ls /sys/class/net | grep -v lo | head -1`

NFS_SERVER_IP=`ip route | grep -e ${NET_INTERFACE} | grep src | awk '{print $9}'`

# nfs 서버는 6개의 포트를사용
# prtmap(portmapper) : rpc 통신을 하는 nfs서버에게 클라이언트가 rpc 통신 사용 포트를 질의하는데 사용 (111)
# rpc.nfsd : rpc 통신 요청 처리를 위한 포트 (2049)
# rpc.mountd : 클라이언트가 마운트 요청을 할때 /etc/exports 설정에 따라 마운트 요청을 처리하기 위한 포트 (random)
# rpc.statd : rpc.rockd와 함께 작동하며 파일잠금 및 해제와 비정상적인 종료시 복구를 담당하기 위한 포트 (random)
# rpc.lockd : 파일 잠금을 통해 클라이언트에서 여러 사용자가 한 파일을 수정하는 것을 방지하기 위한 포트 (random)
# rpc.rqoutad : NFS파일 시스템을 마운트한 사용자에게 quota를 처리하기 위한 포트 (random)
yum -y install nfs-utils rpcbind

mkdir -p /app/share

chmod 707 /app/share

cat <<NFS_SETTING > /etc/exports
/app/share ${NFS_SERVER_IP%.*}.*(rw,sync)
NFS_SETTING

systemctl restart nfs-server

systemctl enable nfs-server

exportfs -v

# nfs 가 통신하는 포트를 확인
rpcinfo -p

# 포트가 변경된것을 확인
systemctl restart nfs-server

sed -i "s/^status.*//g" /etc/services
sed -i "s/^mountd.*//g" /etc/services
sed -i "s/^rquotad.*//g" /etc/services

# 기본 포트가 정의되어 있는 설정 파일
cat <<NFS_PORT_SETTING >> /etc/services
status  4000/tcp   # rpc.statd tcp port
status  4000/udp   # rpc.statd udp port
mountd  4002/tcp   # mountd tcp port
mountd  4002/udp   # mountd udp port
rquotad  4003/tcp   # rpc.rquotad tcp port
rquotad  4003/udp   # rpc.rquotad udp port
NFS_PORT_SETTING

echo options lockd nlm_udpport=4001 nlm_tcpport=4001 > /etc/modprobe.d/options.conf

firewall-cmd --permanent --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=4000-4003/tcp --add-port=4000-4003/udp

firewall-cmd --reload

firewall-cmd --list-ports

reboot

# 포트가 고정된것을 확인
rpcinfo -p

 

[ 리눅스 클라이언트 ]

NFS_SERVER_IP=192.168.108.50

yum -y install nfs-utils

showmount -e ${NFS_SERVER_IP}

mkdir -p /app/mnt/share

mount -t nfs ${NFS_SERVER_IP}:/app/share /app/mnt/share

ls -la /app/mnt/share

cat <<NFS_SETTING >> /etc/fstab
${NFS_SERVER_IP}:/app/share$(printf '\t')/app/mnt/share$(printf '\t')nfs$(printf '\t')defaults$(printf '\t')0 0
NFS_SETTING

# 정상적으로 에러메시지가 뜨지 않을경우 재부팅하여 마운트가 유지되는 것 확인
mount -a

 

2. Ubuntu20

 

[ NFS 서버 ]

NET_INTERFACE=`ls /sys/class/net | grep -v lo | head -1`

NFS_SERVER_IP=`ip route | grep -e ${NET_INTERFACE} | grep src | awk '{print $9}'`

# nfs 서버는 6개의 포트를사용
# prtmap(portmapper) : rpc 통신을 하는 nfs서버에게 클라이언트가 rpc 통신 사용 포트를 질의하는데 사용 (111)
# rpc.nfsd : rpc 통신 요청 처리를 위한 포트 (2049)
# rpc.mountd : 클라이언트가 마운트 요청을 할때 /etc/exports 설정에 따라 마운트 요청을 처리하기 위한 포트 (random)
# rpc.statd : rpc.rockd와 함께 작동하며 파일잠금 및 해제와 비정상적인 종료시 복구를 담당하기 위한 포트 (random)
# rpc.lockd : 파일 잠금을 통해 클라이언트에서 여러 사용자가 한 파일을 수정하는 것을 방지하기 위한 포트 (random)
# rpc.rqoutad : NFS파일 시스템을 마운트한 사용자에게 quota를 처리하기 위한 포트 (random)
apt-get -y install nfs-common nfs-kernel-server rpcbind

mkdir -p /app/share

chmod 707 /app/share

cat <<NFS_SETTING > /etc/exports
/app/share ${NFS_SERVER_IP%.*}.*(rw,sync)
NFS_SETTING

systemctl restart nfs-server

systemctl enable nfs-server

exportfs -v

# nfs 가 통신하는 포트를 확인
rpcinfo -p

# 포트가 변경된것을 확인
systemctl restart nfs-server

sed -i "s/^status.*//g" /etc/services
sed -i "s/^mountd.*//g" /etc/services
sed -i "s/^rquotad.*//g" /etc/services

# 기본 포트가 정의되어 있는 설정 파일
cat <<NFS_PORT_SETTING >> /etc/services
status  4000/tcp   # rpc.statd tcp port
status  4000/udp   # rpc.statd udp port
mountd  4002/tcp   # mountd tcp port
mountd  4002/udp   # mountd udp port
rquotad  4003/tcp   # rpc.rquotad tcp port
rquotad  4003/udp   # rpc.rquotad udp port
NFS_PORT_SETTING

sed -i "s/^RPCMOUNTDOPTS.*//g" /etc/default/nfs-kernel-server

# mounted 포트 설정
echo RPCMOUNTDOPTS=\"-p 4002 -g\" >> /etc/default/nfs-kernel-server

echo options lockd nlm_udpport=4001 nlm_tcpport=4001 > /etc/modprobe.d/options.conf

ufw allow 111
ufw allow 2049
ufw allow 4000:4003/tcp
ufw allow 4000:4003/udp

ufw status

reboot

# 포트가 고정된것을 확인
rpcinfo -p

 

[ 리눅스 클라이언트 ]

NFS_SERVER_IP=192.168.108.20

apt-get -y install nfs-common

showmount -e ${NFS_SERVER_IP}

mkdir -p /app/mnt/share

mount -t nfs ${NFS_SERVER_IP}:/app/share /app/mnt/share

ls -la /app/mnt/share

cat <<NFS_SETTING >> /etc/fstab
${NFS_SERVER_IP}:/app/share$(printf '\t')/app/mnt/share$(printf '\t')nfs$(printf '\t')defaults$(printf '\t')0 0
NFS_SETTING

# 정상적으로 에러메시지가 뜨지 않을경우 재부팅하여 마운트가 유지되는 것 확인
mount -a

 

[ 윈도우 클라이언트 ]

 

탐색기에 공유폴더 추가된 것 확인

'Operating Systems > Linux' 카테고리의 다른 글

[ Linux ] ORACLE 19c 서버 설치  (0) 2021.09.30
[ Linux ] GIT 서버 설치  (0) 2021.09.26
[ Linux ] VNC 서버 설치  (0) 2021.09.23
[ Linux ] Cron 활용  (0) 2021.08.22
[ Linux ] DHCP 서버 설치  (0) 2021.08.21