NFS設定 · 4 min read · Dec 26, 2025

Debian 9 (Stretch) における NFS サーバーとクライアントの設定

このガイドでは、Debian 9 に NFS サーバーと NFS クライアントを設定する方法を説明します。NFS は Network File System の略で、NFS を通じてクライアントは NFS サーバー上のリモート共有にアクセス(読み取り、書き込み)でき、まるでローカルハードディスク上にあるかのように扱えます。このチュートリアルでは、ユーザー nobody/nogroup としてファイルを保存し、ファイルシステムの権限を保持しないクライアントディレクトリのエクスポートと、ホスティングサーバーのセットアップに必要なファイルの権限と所有権を保持する /var/www ディレクトリのエクスポートの 2 つの異なる NFS エクスポートを示します。

1 予備ノート

ここでは、2 つの 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 サーバーの 2 つの異なるアクセスモードを示します。ディレクトリ /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

これで、次のコマンドの出力に 2 つの 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:/tmp#

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

これで、次のコマンドの出力に 2 つの 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

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。