서버 설정 · 5 min read · Dec 26, 2025

Debian 9 (Stretch)에서 NFS 서버 및 클라이언트 설정하기

이 가이드는 Debian 9에서 NFS 서버와 NFS 클라이언트를 설정하는 방법을 설명합니다. NFS는 Network File System의 약자로, NFS를 통해 클라이언트는 NFS 서버의 원격 공유를 로컬 하드 디스크에 있는 것처럼 접근할 수 있습니다. 이 튜토리얼에서는 파일 시스템 권한을 유지하지 않고 사용자 nobody/nogroup으로 파일을 저장하는 클라이언트 디렉토리의 두 가지 다른 NFS 내보내기와 호스팅 서버 설정에 필요한 파일의 권한과 소유권을 유지하는 /var/www 디렉토리의 내보내기를 보여드리겠습니다.

1 사전 참고

여기서는 두 개의 Debian Wheezy 시스템을 사용하고 있습니다:

  • NFS 서버: server.example.com, IP 주소: 192.168.1.100
  • NFS 클라이언트: client.example.com, IP 주소: 192.168.1.101

2 NFS 설치

서버가 최신 상태인지 확인하고 두 서버 모두에서 패키지 목록을 업데이트하고 보류 중인 업데이트를 설치합니다.

apt-get update
apt-get upgrade

그런 다음 NFS 서버 및 클라이언트 설치를 계속합니다.

서버:

NFS 서버에서 다음을 실행합니다:

apt-get install nfs-kernel-server nfs-common

그런 다음 NFS 서버의 시스템 시작 링크를 생성하고 시작합니다:

클라이언트:

클라이언트에서 NFS를 다음과 같이 설치할 수 있습니다(실제로 서버와 동일합니다):

apt-get install nfs-common

3 서버에서 디렉토리 내보내기

서버:

클라이언트에 /home/client1 및 /var/www 디렉토리를 접근 가능하게 하여 NFS 서버의 두 가지 다른 접근 모드를 보여주고 싶습니다. /home/client1 디렉토리는 표준 모드로 공유되므로 이 디렉토리에 작성된 모든 파일은 사용자 nobody 및 그룹 nogroup으로 저장됩니다. /var/www 디렉토리의 경우 no_root_squash 옵션을 사용하여 NFS 서버가 파일의 권한과 소유권을 유지하도록 지시합니다. 이는 ISPConfig 3으로 관리되는 웹 서버의 /var/www 디렉토리를 내보내고자 할 때 필요합니다.

먼저, /home/client1 디렉토리를 생성하겠습니다.

mkdir /home/client1  
chown nobody:nogroup /home/client1  
chmod 755 /home/client1

/var/www 디렉토리는 대부분의 경우 서버에 존재합니다. 그렇지 않은 경우 생성합니다:

mkdir /var/www  
chown root:root /var/www  
chmod 755 /var/www

이제 /etc/exports를 수정해야 합니다. 여기서 NFS 공유를 “내보냅니다”. /home/client1 및 /var/www를 NFS 공유로 지정하고 NFS에 /home/client1에 대한 접근을 사용자 nobody로 하도록 지시합니다(자세한 내용은 /etc/exports, 형식 및 사용 가능한 옵션에 대해 보려면

man 5 exports

)

nano /etc/exports
/home/client1           192.168.1.101(rw,sync,no_subtree_check)
/var/www        192.168.1.101(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash)

(no_root_squash 옵션은 /var/www에 root로 접근할 수 있게 합니다.)

/etc/exports의 변경 사항을 적용하기 위해 커널 NFS 서버를 재시작합니다.

service nfs-kernel-server restart

4 클라이언트에서 NFS 공유 마운트하기

클라이언트:

먼저 NFS 공유를 마운트할 디렉토리를 생성합니다. 예:

mkdir -p /mnt/nfs/home/client1  
mkdir -p /var/www

서버에 /var/www 디렉토리가 이미 존재하는 경우, apache를 중지하고 디렉토리 이름을 변경한 후 새로운 빈 디렉토리를 마운트 포인트로 생성합니다.

service apache2 stop  
mv /var/www /var/www_bak  
mkdir -p /var/www

그런 다음 다음과 같이 마운트할 수 있습니다:

mount 192.168.1.100:/home/client1 /mnt/nfs/home/client1  
mount 192.168.1.100:/var/www /var/www

이제 다음의 출력에서 두 개의 NFS 공유를 볼 수 있어야 합니다.

df -h
root@server1:/tmp# df -h  
Filesystem Size Used Avail Use% Mounted on  
udev 990M 0 990M 0% /dev  
tmpfs 201M 6.0M 195M 3% /run  
/dev/sda1 28G 1.2G 25G 5% /  
tmpfs 1001M 0 1001M 0% /dev/shm  
tmpfs 5.0M 0 5.0M 0% /run/lock  
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup  
tmpfs 200M 0 200M 0% /run/user/1000  
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1  
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www  
root@server1:/tmp#

그리고

mount
root@server1:/tmp# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
odev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)  
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)  
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)  
mqueue on /dev/mqueue type mqueue (rw,relatime)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)  
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)  
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)  
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
root@server1:/#

5 테스트

클라이언트에서 이제 NFS 공유에 테스트 파일을 생성해 볼 수 있습니다:

클라이언트:

touch /mnt/nfs/home/client1/test.txt  
touch /var/www/test.txt

이제 서버로 가서 두 개의 테스트 파일이 보이는지 확인합니다:

서버:

ls -l /home/client1/
root@server1:/tmp# ls -l /home/client1/  
total 0  
-rw-r--r-- 1 nobody nogroup 0 Nov 16 10:52 test.txt  
root@server1:/tmp#
ls -l /var/www
root@server1:/tmp# ls -l /var/www  
total 0  
-rw-r--r-- 1 root root 0 Nov 16 10:52 test.txt  
root@server1:/tmp#

(테스트 파일의 소유권이 다름을 주의하세요: /home/client1 NFS 공유는 nobody / nogroup으로 접근되며 nobody / nogroup이 소유하고 있습니다; /var/www 공유는 root로 접근되므로 /var/www/test.txt는 사용자 및 그룹 root가 소유합니다.)

6 부팅 시 NFS 공유 마운트하기

클라이언트에서 NFS 공유를 수동으로 마운트하는 대신, /etc/fstab을 수정하여 클라이언트가 부팅할 때 NFS 공유가 자동으로 마운트되도록 할 수 있습니다.

클라이언트:

/etc/fstab을 열고 다음 줄을 추가합니다:

nano /etc/fstab
[...]  
192.168.1.100:/home/client1  /mnt/nfs/home/client1   nfs      rw,sync,hard,intr  0     0  
192.168.1.100:/var/www  /var/www   nfs      rw,sync,hard,intr  0     0

rw,sync,hard,intr 대신 다른 마운트 옵션을 사용할 수 있습니다. 사용 가능한 옵션에 대한 자세한 내용은

man nfs

를 참조하십시오. 수정된 /etc/fstab이 작동하는지 테스트하려면 공유를 언마운트하고 mount -a를 실행합니다:

umount /mnt/nfs/home/client1  
umount /var/www  
mount -a

이제 다음의 출력에서 두 개의 NFS 공유를 볼 수 있어야 합니다.

df -h
root@server1:/# df -h  
Filesystem Size Used Avail Use% Mounted on  
udev 990M 0 990M 0% /dev  
tmpfs 201M 6.0M 195M 3% /run  
/dev/sda1 28G 1.2G 25G 5% /  
tmpfs 1001M 0 1001M 0% /dev/shm  
tmpfs 5.0M 0 5.0M 0% /run/lock  
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup  
tmpfs 200M 0 200M 0% /run/user/1000  
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1  
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www  
root@server1:/#

그리고

mount
root@server1:/# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
odev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)  
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)  
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)  
mqueue on /dev/mqueue type mqueue (rw,relatime)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)  
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)  
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)  
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
root@server1:/#

7 크레딧

이 튜토리얼은 Falko Timme의 Centos NFS 서버 튜토리얼을 기반으로 합니다.

8 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.